]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Have calls to the xFilter() method of rtree virtual tables ensure that cursor is...
authordan <dan@noemail.net>
Tue, 29 Jul 2014 11:54:18 +0000 (11:54 +0000)
committerdan <dan@noemail.net>
Tue, 29 Jul 2014 11:54:18 +0000 (11:54 +0000)
FossilOrigin-Name: 8cc41b0bf365af47c2061ffe44c86018945dd239

ext/rtree/rtree.c
ext/rtree/rtree1.test
manifest
manifest.uuid

index 7b540b4be11b7204afad2d36e9e49913ab7d871c..8150538d452d1b31ebc91b54b5fcb3e6dad8f3aa 100644 (file)
@@ -1533,9 +1533,13 @@ static int rtreeFilter(
 
   rtreeReference(pRtree);
 
+  /* Reset the cursor to the same state as rtreeOpen() leaves it in. */
   freeCursorConstraints(pCsr);
-  pCsr->iStrategy = idxNum;
+  sqlite3_free(pCsr->aPoint);
+  memset(pCsr, 0, sizeof(RtreeCursor));
+  pCsr->base.pVtab = (sqlite3_vtab*)pRtree;
 
+  pCsr->iStrategy = idxNum;
   if( idxNum==1 ){
     /* Special case - lookup by rowid. */
     RtreeNode *pLeaf;        /* Leaf on which the required cell resides */
index 9de536278132b47f9f898a3bd84d780b73e88056..0beb16cc9494468168c6c9b26c4ebbbc09a78770 100644 (file)
@@ -33,6 +33,7 @@ set testprefix rtree1
 #   rtree-8.*: Test constrained scans of r-tree data.
 #
 #   rtree-12.*: Test that on-conflict clauses are supported.
+#   rtree-13.*: Test that bug [d2889096e7bdeac6d] has been fixed.
 #
 
 ifcapable !rtree {
@@ -513,4 +514,25 @@ foreach {tn sql_template testdata} {
     db close
   }
 }
+
+#-------------------------------------------------------------------------
+# Test that bug [d2889096e7bdeac6d] has been fixed.
+#
+reset_db
+do_execsql_test 13.1 {
+  CREATE VIRTUAL TABLE t9 USING rtree(id, xmin, xmax);
+  INSERT INTO t9 VALUES(1,0,0);            
+  INSERT INTO t9 VALUES(2,0,0);
+  SELECT * FROM t9 WHERE id IN (1, 2);
+} {1 0.0 0.0 2 0.0 0.0}
+
+do_execsql_test 13.2 {
+  WITH r(x) AS (
+    SELECT 1 UNION ALL
+    SELECT 2 UNION ALL
+    SELECT 3
+  )
+  SELECT * FROM r CROSS JOIN t9 WHERE id=x;
+} {1 1 0.0 0.0 2 2 0.0 0.0}
+
 finish_test
index 4de9f86a2734133b230408252981ca02541abf57..d1716a2069cb201a88bdb9020d298725af7392e7 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\san\sunreachable\sbranch\sfrom\sthe\ssqlite3_value_numeric_type()\sinterface.
-D 2014-07-26T20:12:56.006
+C Have\scalls\sto\sthe\sxFilter()\smethod\sof\srtree\svirtual\stables\sensure\sthat\scursor\sis\sinitialized\sbefore\sproceeding.\sFix\sfor\s[d2889096e7bdeac].
+D 2014-07-29T11:54:18.063
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5eb79e334a5de69c87740edd56af6527dd219308
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -122,9 +122,9 @@ F ext/misc/vfslog.c fe40fab5c077a40477f7e5eba994309ecac6cc95
 F ext/misc/vtshim.c babb0dc2bf116029e3e7c9a618b8a1377045303e
 F ext/misc/wholenumber.c 784b12543d60702ebdd47da936e278aa03076212
 F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
-F ext/rtree/rtree.c 6f70db93e0e42c369325c5cddcf2024c5a87ca43
+F ext/rtree/rtree.c 57bec53e1a677ab74217fe1f20a58c3a47261d6b
 F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e
-F ext/rtree/rtree1.test e2da4aaa426918d27122d1a1066c6ecf8409a514
+F ext/rtree/rtree1.test 541bbcab74613907fea08b2ecdcdd5b7aa724cc9
 F ext/rtree/rtree2.test acbb3a4ce0f4fbc2c304d2b4b784cfa161856bba
 F ext/rtree/rtree3.test a494da55c30ee0bc9b01a91c80c81b387b22d2dc
 F ext/rtree/rtree4.test c8fe384f60ebd49540a5fecc990041bf452eb6e0
@@ -1184,7 +1184,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 413d7287977702fa651c0140bd5cf29021fe3e79
-R 882befeb8b61995267c9bc4311daa690
-U drh
-Z 28fa8e103cbfa69958d1f03600e24fde
+P 5350229b52b18a4961858a30538c5c75e5bd3048
+R 0da0b70a772b464fda61490d5328a931
+U dan
+Z f2b0f473c1ab5a411c1b4bc1349722f0
index 58f6f007dbbccffdbdddda9753e5437493c8953a..b934c9dde556f336dcb7a83c95f5e9bbe0bb1e8e 100644 (file)
@@ -1 +1 @@
-5350229b52b18a4961858a30538c5c75e5bd3048
\ No newline at end of file
+8cc41b0bf365af47c2061ffe44c86018945dd239
\ No newline at end of file