SQLite

Check-in [b271ed5653]
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
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: b271ed56532a78323accc8a7cb348d55f95c350e
User & Date: drh 2015-05-19 22:20:48.133
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: c7b1664530 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: 0a0de8b72c 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: b271ed5653 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: f5d0ce8079 user: dan tags: trunk)
Changes
Side-by-Side Diff Ignore Whitespace 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
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







+
+
+
+
+
+

-
+

-
+

+







    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]);
        pBlob->aParam[i] = sqlite3_value_int64(aArg[i]);
#else
      pBlob->aParam[i] = sqlite3_value_double(aArg[i]);
        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.