/ Check-in [b271ed56]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Allow R-Tree geometry functions to take 8-byte BLOB arguments which are passed directly through to the underlying callback, and which can be used to pass pointers into the callback.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: b271ed56532a78323accc8a7cb348d55f95c350e
User & Date: drh 2015-05-19 22:20:48
Context
2015-05-19
22:56
Fix the MSVC makefile so that it works with OTA. Fix a harmless compiler warning in FTS3. check-in: c7b16645 user: drh tags: trunk
22:42
Merge recent trunk changes, include the R-Tree enhancement that allows 8-byte BLOB arguments to geometry functions, and the fix for the TEXT affinity problem that could cause corrupt indexes. check-in: 0a0de8b7 user: drh tags: sessions
22:20
Allow R-Tree geometry functions to take 8-byte BLOB arguments which are passed directly through to the underlying callback, and which can be used to pass pointers into the callback. check-in: b271ed56 user: drh tags: trunk
19:44
Ensure that when the VM applies TEXT affinity to a value it discards any existing REAL or INTEGER value. Fix for [34cd55d6]. check-in: f5d0ce80 user: dan tags: trunk
Changes
Hide Diffs Unified Diffs Show Whitespace Changes Patch

Changes to ext/rtree/rtree.c.

3397
3398
3399
3400
3401
3402
3403






3404
3405
3406
3407
3408
3409

3410
3411
3412
3413
3414
3415
3416
    sqlite3_result_error_nomem(ctx);
  }else{
    int i;
    pBlob->magic = RTREE_GEOMETRY_MAGIC;
    pBlob->cb = pGeomCtx[0];
    pBlob->nParam = nArg;
    for(i=0; i<nArg; i++){






#ifdef SQLITE_RTREE_INT_ONLY
      pBlob->aParam[i] = sqlite3_value_int64(aArg[i]);
#else
      pBlob->aParam[i] = sqlite3_value_double(aArg[i]);
#endif
    }

    sqlite3_result_blob(ctx, pBlob, nBlob, sqlite3_free);
  }
}

/*
** Register a new geometry function for use with the r-tree MATCH operator.
*/







>
>
>
>
>
>






>







3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
    sqlite3_result_error_nomem(ctx);
  }else{
    int i;
    pBlob->magic = RTREE_GEOMETRY_MAGIC;
    pBlob->cb = pGeomCtx[0];
    pBlob->nParam = nArg;
    for(i=0; i<nArg; i++){
      if( sqlite3_value_type(aArg[i])==SQLITE_BLOB
        && sqlite3_value_bytes(aArg[i])==sizeof(sqlite3_rtree_dbl)
      ){
        memcpy(&pBlob->aParam[i], sqlite3_value_blob(aArg[i]),
               sizeof(sqlite3_rtree_dbl));
      }else{
#ifdef SQLITE_RTREE_INT_ONLY
        pBlob->aParam[i] = sqlite3_value_int64(aArg[i]);
#else
        pBlob->aParam[i] = sqlite3_value_double(aArg[i]);
#endif
      }
    }
    sqlite3_result_blob(ctx, pBlob, nBlob, sqlite3_free);
  }
}

/*
** Register a new geometry function for use with the r-tree MATCH operator.
*/