]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add a simple test case (many more are coming soon to TH3). Fix an obsolete without-rowid-autoidx
authordrh <>
Sat, 18 Jan 2025 21:19:02 +0000 (21:19 +0000)
committerdrh <>
Sat, 18 Jan 2025 21:19:02 +0000 (21:19 +0000)
assert().

FossilOrigin-Name: aa829a131a3431791083cf60d9cf00e7b3c0fafdd39a23e761b629a2287ab875

manifest
manifest.uuid
src/where.c
test/autoindex1.test

index dbd4e38927fee9e31d7dcd32aa666c5faad1098e..acd3f5611ef4626e6d54d1a304571ea837511cdf 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\ssupport\sfor\sautomatic\squery-time\sindexes\son\sWITHOUT\sROWID\stables.
-D 2025-01-18T21:00:19.369
+C Add\sa\ssimple\stest\scase\s(many\smore\sare\scoming\ssoon\sto\sTH3).\s\sFix\san\sobsolete\nassert().
+D 2025-01-18T21:19:02.129
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md e108e1e69ae8e8a59e93c455654b8ac9356a11720d3345df2a4743e9590fb20d
@@ -862,7 +862,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
 F src/wal.c 4e6181d8780ab0af2e1388d0754cbe6f2f04593d2b1ab6c41699a89942fd8997
 F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
 F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
-F src/where.c b09334881ab87dfdb1d2dbc71a8cf97f345834d36509344207a133f0e6b86161
+F src/where.c 521472bb0c7cfdd65a9b5b92d44f921e3e0a26a1996cc0416cf53e25301820d2
 F src/whereInt.h 2b0804f300c7f65de4046a1d81c65f01b208d6c08950ccd1fa6b8c16162a8af7
 F src/wherecode.c 0c3d3199a2b769a5e2bb70feb5003dc85b3d86842ecaf903a47f2b4205ca5dab
 F src/whereexpr.c 0f93a29cabd3a338d09a1f5c6770620a1ac51ec1157f3229502a7e7767c60b6f
@@ -925,7 +925,7 @@ F test/auth2.test 9eb7fce9f34bf1f50d3f366fb3e606be5a2000a1
 F test/auth3.test 76d20a7fa136d63bcfcf8bcb65c0b1455ed71078d81f22bcd0550d3eb18594ab
 F test/autoanalyze1.test b9cc3f32a990fa56669b668d237c6d53e983554ae80c0604992e18869a0b2dec
 F test/autoinc.test 997d6f185f138229dc4251583a1d04816423dddc2fc034871a01aeb1d728cb39
-F test/autoindex1.test 714cac6e60beeb5a26ed346dd46505ba60b5a5597e9122c9ed3a55f89a922aa4
+F test/autoindex1.test 65931519206bbec71948b11e125af0656435a0937973fe5fed70d776a712911f
 F test/autoindex2.test 12ef578928102baaa0dc23ad397601a2f4ecb0df
 F test/autoindex3.test ca502c8050166ac6107a7b4fe4e951f4d3270a23a958af02b14f1b962b83c4b6
 F test/autoindex4.test 3c2105e9172920e26f950ba3c5823e4972190e022c1e6f260ba476b0af24c593
@@ -2207,11 +2207,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 230e49c10e3aa6fe9c487a1e026016a8bf97f7e736e7477d5976d987da5e83cf
-R 1eb7d22a051c22dd4afc1e0246916027
-T *branch * without-rowid-autoidx
-T *sym-without-rowid-autoidx *
-T -sym-trunk *
+P 89c4cbd9529081941d7283a401c4a8d71b241f4577ebf6d3eb2ebe5a1cf92f2e
+R 060bc82586424a9cc221e972d5251271
 U drh
-Z eca129c2aba163fe6547f234a58ed149
+Z 18819fcf6e705c7a88ab29e3c059c242
 # Remove this line to create a well-formed Fossil manifest.
index d320276785e888f920987ded7c1d665ab027bf80..1691c3d93661e1dba2d3b89790d2ad153bd299a8 100644 (file)
@@ -1 +1 @@
-89c4cbd9529081941d7283a401c4a8d71b241f4577ebf6d3eb2ebe5a1cf92f2e
+aa829a131a3431791083cf60d9cf00e7b3c0fafdd39a23e761b629a2287ab875
index 8af00b96a337ca3b48d8d6fde355f9a2c0c27e3e..b867e615f799c1a033a14c6363e4af1b77843610 100644 (file)
@@ -949,7 +949,7 @@ static void explainAutomaticIndex(
     sqlite3_str *pStr = sqlite3_str_new(pParse->db);
     sqlite3_str_appendf(pStr,"CREATE AUTOMATIC INDEX ON %s(", pTab->zName);
     assert( pIdx->nColumn>1 );
-    assert( pIdx->aiColumn[pIdx->nColumn-1]==XN_ROWID );
+    assert( pIdx->aiColumn[pIdx->nColumn-1]==XN_ROWID || !HasRowid(pTab) );
     for(ii=0; ii<(pIdx->nColumn-1); ii++){
       const char *zName = 0;
       int iCol = pIdx->aiColumn[ii];
index b294a2721f5fa637304e9fdc368ad046ec849d3d..1c8ce007f061e9788d39bd4ae7f06d0ce0e1c5d7 100644 (file)
@@ -563,4 +563,32 @@ do_execsql_test autoindex-1120 {
   SELECT * FROM t1 LEFT JOIN t2 ON (t2.c=+t1.a) LEFT JOIN t3 ON (t2.d IS NULL);
 } {1 1 1 2 {} {}}
 
+# 2025-01-18
+# Added support for automatic indexes on WITHOUT ROWID tables.
+#
+reset_db
+do_execsql_test autoindex-1200 {
+  CREATE TABLE t1(a INT, b INT, x INT, PRIMARY KEY(a,b)) WITHOUT ROWID;
+  INSERT INTO t1 VALUES(1,2,90),(1,3,91),(1,4,92);
+  CREATE TABLE t2a(c INTEGER PRIMARY KEY, i1 INT);
+  CREATE TABLE t2b(i1 INTEGER PRIMARY KEY, d INT);
+  CREATE VIEW t2(c,d) AS SELECT c, d FROM t2a NATURAL JOIN t2b;
+  INSERT INTO t2a VALUES(3,93),(4,94),(5,95),(6,96),(7,97);
+  INSERT INTO t2b VALUES(91,11),(92,22),(93,33),(94,44),(95,55);
+  CREATE TABLE dual(dummy TEXT);
+  INSERT INTO dual(dummy) VALUES('x');
+}
+db null NULL
+do_execsql_test autoindex-1210 {
+  SELECT t1.*, t2.* FROM t2 LEFT OUTER JOIN t1 ON b=c ORDER BY +b;
+} {
+  NULL NULL NULL 5    55
+  1    3    91   3    33
+  1    4    92   4    44
+}
+do_execsql_test autoindex-1211 {
+  EXPLAIN QUERY PLAN
+  SELECT t1.*, t2.* FROM t2 LEFT OUTER JOIN t1 ON b=c ORDER BY +b;
+} {/SEARCH t1 USING AUTOMATIC COVERING INDEX/}
+
 finish_test