]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Revert "PRAGMA index_info" to output only three columns, for complete
authordrh <drh@noemail.net>
Thu, 5 Mar 2015 14:29:02 +0000 (14:29 +0000)
committerdrh <drh@noemail.net>
Thu, 5 Mar 2015 14:29:02 +0000 (14:29 +0000)
compatibility with prior versions.  The new "PRAGMA index_xinfo" can be
used to get the extra information in 4th, 5th, and 6th columns.

FossilOrigin-Name: fc543c2c5ced30a7dc3a05b0c1ad80fdc838df8e

manifest
manifest.uuid
src/pragma.c
test/pragma.test

index f479250fca9917f5e2a5c204a5bc17beb8ae4f37..4b91df0aa9951cd751dd3e59f31d2c302d26879e 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C New\srequirements\smarks\son\scompound\sSELECT\sstatements.
-D 2015-03-05T01:29:51.655
+C Revert\s"PRAGMA\sindex_info"\sto\soutput\sonly\sthree\scolumns,\sfor\scomplete\ncompatibility\swith\sprior\sversions.\s\sThe\snew\s"PRAGMA\sindex_xinfo"\scan\sbe\nused\sto\sget\sthe\sextra\sinformation\sin\s4th,\s5th,\sand\s6th\scolumns.
+D 2015-03-05T14:29:02.994
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 2f643d6968dfc0b82d2e546a0525a39079f9e928
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -223,7 +223,7 @@ F src/parse.y 0f8e7d60f0ab3cb53d270adef69259ac307d83a8
 F src/pcache.c 10539fb959849ad6efff80050541cab3d25089d4
 F src/pcache.h b44658c9c932d203510279439d891a2a83e12ba8
 F src/pcache1.c 1e77432b40b7d3288327d9cdf399dcdfd2b6d3bf
-F src/pragma.c d1abcc070698e5853205dc1d1cd3f01845c1804b
+F src/pragma.c 7f51aba7fae823ea5e40280844d722e5ac402a32
 F src/pragma.h 09c89bca58e9a44de2116cc8272b8d454657129f
 F src/prepare.c 173a5a499138451b2561614ecb87d78f9f4644b9
 F src/printf.c 8da9a2687a396daa19860f4dc90975d319304744
@@ -788,7 +788,7 @@ F test/pcache.test b09104b03160aca0d968d99e8cd2c5b1921a993d
 F test/pcache2.test a83efe2dec0d392f814bfc998def1d1833942025
 F test/percentile.test 4243af26b8f3f4555abe166f723715a1f74c77ff
 F test/permutations.test f9cc1dd987986c9d4949211c7a4ed55ec9aecba1
-F test/pragma.test 64f11ec7f4100e873c67e888a56c33d395cb75d6
+F test/pragma.test 6929a762e8b09f2f29644bc2a330c2265eb44083
 F test/pragma2.test f624a496a95ee878e81e59961eade66d5c00c028
 F test/pragma3.test 6f849ccffeee7e496d2f2b5e74152306c0b8757c
 F test/printf.test ec9870c4dce8686a37818e0bf1aba6e6a1863552
@@ -1240,7 +1240,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 c298ea0bd90d63673435bf8ceafbaeba3db6187d
-R 463fdbb558155c6269c69a1bfa40144b
+P e7991bc510f63f3594603a91f6f3b32e94d90e72
+R 0612eee82e15bf764eabd621fde6a161
 U drh
-Z 5e6a58975b23cba5372f13d3b292c243
+Z b1026128d0af596b6f509b65a6cc3523
index cd3d78b1d68cd0570ff4de7f6f1f2178f68c9a43..b040d41ec00bf8d32b71cbba2b845d42eacf845f 100644 (file)
@@ -1 +1 @@
-e7991bc510f63f3594603a91f6f3b32e94d90e72
\ No newline at end of file
+fc543c2c5ced30a7dc3a05b0c1ad80fdc838df8e
\ No newline at end of file
index 75db9a676585e196e7fe26b1e449b0da74bf6e96..875d9ec006f28cca41d03a3da2dfd17d15a5ff4f 100644 (file)
@@ -1077,17 +1077,27 @@ void sqlite3Pragma(
     pIdx = sqlite3FindIndex(db, zRight, zDb);
     if( pIdx ){
       int i;
-      int mx = pPragma->iArg ? pIdx->nColumn : pIdx->nKeyCol;
+      int mx;
+      if( pPragma->iArg ){
+        /* PRAGMA index_xinfo (newer version with more rows and columns) */
+        mx = pIdx->nColumn;
+        pParse->nMem = 6;
+      }else{
+        /* PRAGMA index_info (legacy version) */
+        mx = pIdx->nKeyCol;
+        pParse->nMem = 3;
+      }
       pTab = pIdx->pTable;
-      sqlite3VdbeSetNumCols(v, 6);
-      pParse->nMem = 6;
+      sqlite3VdbeSetNumCols(v, pParse->nMem);
       sqlite3CodeVerifySchema(pParse, iDb);
       sqlite3VdbeSetColName(v, 0, COLNAME_NAME, "seqno", SQLITE_STATIC);
       sqlite3VdbeSetColName(v, 1, COLNAME_NAME, "cid", SQLITE_STATIC);
       sqlite3VdbeSetColName(v, 2, COLNAME_NAME, "name", SQLITE_STATIC);
-      sqlite3VdbeSetColName(v, 3, COLNAME_NAME, "desc", SQLITE_STATIC);
-      sqlite3VdbeSetColName(v, 4, COLNAME_NAME, "coll", SQLITE_STATIC);
-      sqlite3VdbeSetColName(v, 5, COLNAME_NAME, "key", SQLITE_STATIC);
+      if( pPragma->iArg ){
+        sqlite3VdbeSetColName(v, 3, COLNAME_NAME, "desc", SQLITE_STATIC);
+        sqlite3VdbeSetColName(v, 4, COLNAME_NAME, "coll", SQLITE_STATIC);
+        sqlite3VdbeSetColName(v, 5, COLNAME_NAME, "key", SQLITE_STATIC);
+      }
       for(i=0; i<mx; i++){
         i16 cnum = pIdx->aiColumn[i];
         sqlite3VdbeAddOp2(v, OP_Integer, i, 1);
@@ -1097,10 +1107,12 @@ void sqlite3Pragma(
         }else{
           sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, pTab->aCol[cnum].zName, 0);
         }
-        sqlite3VdbeAddOp2(v, OP_Integer, pIdx->aSortOrder[i], 4);
-        sqlite3VdbeAddOp4(v, OP_String8, 0, 5, 0, pIdx->azColl[i], 0);
-        sqlite3VdbeAddOp2(v, OP_Integer, i<pIdx->nKeyCol, 6);
-        sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 6);
+        if( pPragma->iArg ){
+          sqlite3VdbeAddOp2(v, OP_Integer, pIdx->aSortOrder[i], 4);
+          sqlite3VdbeAddOp4(v, OP_String8, 0, 5, 0, pIdx->azColl[i], 0);
+          sqlite3VdbeAddOp2(v, OP_Integer, i<pIdx->nKeyCol, 6);
+        }
+        sqlite3VdbeAddOp2(v, OP_ResultRow, 1, pParse->nMem);
       }
     }
   }
index 619fc7fd601cc74607df175719b04fcc89852112..9d7d6aca1af342bbb63234dea60cecaab3c15ac1 100644 (file)
@@ -1751,8 +1751,8 @@ do_test 23.2a {
     CREATE INDEX i2 ON t1(c,d,b);
   }
   capture_pragma db2 out {PRAGMA index_info(i2)}
-  db2 eval {SELECT cid, name, "desc", coll, "key", '|' FROM out ORDER BY seqno}
-} {2 c 0 BINARY 1 | 3 d 0 BINARY 1 | 1 b 0 BINARY 1 |}
+  db2 eval {SELECT cid, name, '|' FROM out ORDER BY seqno}
+} {2 c | 3 d | 1 b |}
 do_test 23.2b {
 breakpoint;
   capture_pragma db2 out {PRAGMA index_xinfo(i2)}