]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid returning duplicate rows in experimental pragmas "pragma_list",
authordan <dan@noemail.net>
Fri, 25 Aug 2017 09:17:14 +0000 (09:17 +0000)
committerdan <dan@noemail.net>
Fri, 25 Aug 2017 09:17:14 +0000 (09:17 +0000)
"module_list" and "function_list".

FossilOrigin-Name: b79cc8dc88c8ae03daff1290fd650b2b0e6f673ec9d83be6a533a57172930190

manifest
manifest.uuid
src/pragma.c
test/pragma5.test [new file with mode: 0644]

index e74b367e9705c3d3ae15012922d8113c4101fb53..bfb51fad1c3a69722c528cf06e5b27bccc21d076 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sincorrect\shyperlink\sin\sa\scomment.
-D 2017-08-24T20:54:42.754
+C Avoid\sreturning\sduplicate\srows\sin\sexperimental\spragmas\s"pragma_list",\n"module_list"\sand\s"function_list".
+D 2017-08-25T09:17:14.786
 F Makefile.in c644bbe8ebe4aae82ad6783eae6b6beea4c727b99ff97568b847ced5e2ac7afb
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 25b154da7f0b3d4924f27378c1f8d006285b80811f1ccf3ed953dbebf6282136
@@ -449,7 +449,7 @@ F src/parse.y 52ef3cecd0934e9da4a45b585883a03243ad615d338ad94f44501a05891dcdfa
 F src/pcache.c 62835bed959e2914edd26afadfecce29ece0e870
 F src/pcache.h 521bb9610d38ef17a3cc9b5ddafd4546c2ea67fa3d0e464823d73c2a28d50e11
 F src/pcache1.c 0b793738b5dddaf0a645784835c6b5557b1ecfaee339af9c26810c6ecdb273aa
-F src/pragma.c cd6aeda3587be6c5c08f9b2d45eae6068666a03c9d077c8c43cdb85fb0aa70f2
+F src/pragma.c a4e5028dfc8af4c5c347cd0e91bd2f0c0f81fcd9b2c6e0acf8da7da51df7f1fe
 F src/pragma.h bb83728944b42f6d409c77f5838a8edbdb0fe83046c5496ffc9602b40340a324
 F src/prepare.c 9e880c0efb5d7f9101bb34c0a87daf6e1e5284c34024fdb811e67bb02fdd299b
 F src/printf.c 40aee47ae9be4bd3dbdc8968bd07fddc027be8edec8daddf24d3391d36698a1c
@@ -1098,6 +1098,7 @@ F test/pragma.test f274259d6393b6681eb433beb8dd39a26ec06a4431052a4880b43b84912a3
 F test/pragma2.test e5d5c176360c321344249354c0c16aec46214c9f
 F test/pragma3.test 14c12bc5352b1e100e0b6b44f371053a81ccf8ed
 F test/pragma4.test 6e85b6eab8e61ffc9c7db59d842276674e8e3264
+F test/pragma5.test fd517f42ee847e126afbbbd9fd0fb9e5a4a61a962496a350adb8a22583fbdc37
 F test/pragmafault.test 275edaf3161771d37de60e5c2b412627ac94cef11739236bec12ed1258b240f8
 F test/printf.test b3ff34e73d59124140eaf89f7672e21bc2ca5fcc
 F test/printf2.test 9e6db85f81c63f2367c34a9d7db384088bd374ad
@@ -1650,7 +1651,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 7ec72314d6b66e4969833194fd032f01963bb861a7bb30d060acdb82dc5d62fe
-R 0a9008b1e381e229108d828896139715
-U drh
-Z 0f9a691a1b4c4aa8a5eacf3d9e1dd571
+P 25292b9a4eb5efc7db551da0b3c9cfd7e79da1594ee14729de44090e188c2b2a
+R 7b2e7d0666727914b868e680cae90457
+U dan
+Z 2b958aabca575686d03fef3a95382582
index 404de581997a3697d386276098d2c02bb91eb3b8..98964c88d8c276de3abe8a53d0ea1ee1b3c60fa3 100644 (file)
@@ -1 +1 @@
-25292b9a4eb5efc7db551da0b3c9cfd7e79da1594ee14729de44090e188c2b2a
\ No newline at end of file
+b79cc8dc88c8ae03daff1290fd650b2b0e6f673ec9d83be6a533a57172930190
\ No newline at end of file
index e640c7ebe510c29b91c111dcb61712a1f0926da2..2619f2944b8c1fa5a37ddef891f7bd7001b51526 100644 (file)
@@ -1234,13 +1234,11 @@ void sqlite3Pragma(
     for(i=0; i<SQLITE_FUNC_HASH_SZ; i++){
       for(p=sqlite3BuiltinFunctions.a[i]; p; p=p->u.pHash ){
         sqlite3VdbeMultiLoad(v, 1, "si", p->zName, 1);
-        sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 2);
       }
     }
     for(j=sqliteHashFirst(&db->aFunc); j; j=sqliteHashNext(j)){
       p = (FuncDef*)sqliteHashData(j);
       sqlite3VdbeMultiLoad(v, 1, "si", p->zName, 0);
-      sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 2);
     }
   }
   break;
@@ -1252,7 +1250,6 @@ void sqlite3Pragma(
     for(j=sqliteHashFirst(&db->aModule); j; j=sqliteHashNext(j)){
       Module *pMod = (Module*)sqliteHashData(j);
       sqlite3VdbeMultiLoad(v, 1, "s", pMod->zName);
-      sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 1);
     }
   }
   break;
@@ -1262,7 +1259,6 @@ void sqlite3Pragma(
     int i;
     for(i=0; i<ArraySize(aPragmaName); i++){
       sqlite3VdbeMultiLoad(v, 1, "s", aPragmaName[i].zName);
-      sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 1);
     }
   }
   break;
diff --git a/test/pragma5.test b/test/pragma5.test
new file mode 100644 (file)
index 0000000..625ab92
--- /dev/null
@@ -0,0 +1,64 @@
+# 2017 August 25
+#
+# The author disclaims copyright to this source code.  In place of
+# a legal notice, here is a blessing:
+#
+#    May you do good and not evil.
+#    May you find forgiveness for yourself and forgive others.
+#    May you share freely, never taking more than you give.
+#
+#***********************************************************************
+# This file implements regression tests for SQLite library.
+#
+# This file implements tests for the PRAGMA command. Specifically,
+# those pragmas enabled at build time by setting:
+#
+#   -DSQLITE_INTROSPECTION_PRAGMAS
+#
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+set testprefix pragma5
+
+if { [catch {db one "SELECT count(*) FROM pragma_function_list"}] } {
+  finish_test
+  return
+}
+
+db function external external
+
+do_execsql_test 1.0 {
+  PRAGMA table_info(pragma_function_list)
+} {
+  0 name {} 0 {} 0 
+  1 builtin {} 0 {} 0
+}
+do_execsql_test 1.1 {
+  SELECT * FROM pragma_function_list WHERE name='upper'
+} {upper 1}
+do_execsql_test 1.2 {
+  SELECT * FROM pragma_function_list WHERE name LIKE 'exter%';
+} {external 0}
+
+ifcapable fts5 {
+  do_execsql_test 2.0 {
+    PRAGMA table_info(pragma_module_list)
+  } {
+    0 name {} 0 {} 0 
+  }
+  do_execsql_test 2.1 {
+    SELECT * FROM pragma_module_list WHERE name='fts5'
+  } {fts5}
+}
+
+do_execsql_test 3.0 {
+  PRAGMA table_info(pragma_pragma_list)
+} {
+  0 name {} 0 {} 0 
+}
+do_execsql_test 3.1 {
+  SELECT * FROM pragma_pragma_list WHERE name='pragma_list'
+} {pragma_list}
+
+
+finish_test