]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the sqlite3_stmt_explain() API.
authordrh <>
Fri, 28 Jul 2023 18:37:13 +0000 (18:37 +0000)
committerdrh <>
Fri, 28 Jul 2023 18:37:13 +0000 (18:37 +0000)
FossilOrigin-Name: 0443c0ef85f8f6f3efdee68bf59126c9459f08a58458756f8cbeeaf043d43a86

1  2 
manifest
manifest.uuid
src/shell.c.in
src/vdbeInt.h
src/vdbeapi.c
src/vdbeaux.c

diff --cc manifest
index e4ac2c7516acee2db734b9e74c26bd54fe1b17bc,059255339d6b508452c14a95379a117ef252031d..778339756b7fb9e3ea0351c61780a2bae17ed5f7
+++ b/manifest
@@@ -1,5 -1,5 +1,5 @@@
- C Minor\stweaks\sto\sthe\sJSON\sperformance\smeasurement\sdocumentation.
- D 2023-07-28T16:12:39.671
 -C Merge\sthe\slatest\strunk\senhancements\sinto\sthe\ssqlite3_stmt_explain\sbranch.
 -D 2023-07-19T10:17:42.983
++C Add\sthe\ssqlite3_stmt_explain()\sAPI.
++D 2023-07-28T18:37:13.439
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@@ -638,17 -632,17 +638,17 @@@ F src/pcache.h 1497ce1b823cf00094bb0cf3
  F src/pcache1.c 602acb23c471bb8d557a6f0083cc2be641d6cafcafa19e481eba7ef4c9ca0f00
  F src/pragma.c 37b8fb02d090262280c86e1e2654bf59d8dbfbfe8dc6733f2b968a11374c095a
  F src/pragma.h e690a356c18e98414d2e870ea791c1be1545a714ba623719deb63f7f226d8bb7
- F src/prepare.c d6c4354f8ea0dc06962fbabc4b68c4471a45276a2918c929be00f9f537f69eb1
+ F src/prepare.c 80548297dc0e1fb3139cdebffb5a1bcac3dfac66d791012dd74838e70445072d
 -F src/printf.c 84b7b4b647f336934a5ab2e7f0c52555833cc0778d2d60e016cca52ee8c6cd8f
 +F src/printf.c e3ba080e2f409f9bfcc8d34724e6fc160e9c718dc92d0548f6b71b8b6f860ce2
  F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c
  F src/resolve.c 37953a5f36c60bea413c3c04efcd433b6177009f508ef2ace0494728912fe2e9
  F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
- F src/select.c 3ab1186290a311a8ceed1286c0e286209f7fe97b2d02c7593258004ce295dd88
- F src/shell.c.in 62b58d7be1e44ec3eb729411278b079c39949e683853445323fd3f250b674a29
- F src/sqlite.h.in f999ef3642f381d69679b2516b430dbcb6c5a2a951b7f5e43dc4751b474a5774
+ F src/select.c 3328b8c758016b400a4fea053ab1f5927929083a49d0c3921802ce99eea73cde
 -F src/shell.c.in 3f125426a25c717fbf8b84b3b75a8b60fa989bf7a039ed38926d455329f9dd0f
++F src/shell.c.in 694aaf751f00610381533d4a31c83d142cfc83ef91ef65e2aa6912ace7c39b40
+ F src/sqlite.h.in 7b95e5b11914726ebcf95c633be3341ad2cb3c8aac62ecf188a14f74827aa68a
  F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
  F src/sqlite3ext.h da473ce2b3d0ae407a6300c4a164589b9a6bfdbec9462688a8593ff16f3bb6e4
 -F src/sqliteInt.h dcb1a885e8b6cb78df618944b89d44361a99d0fe33e1bba2c150a855f7dc5599
 +F src/sqliteInt.h 6140eb4058d995f3004ee2732fa098b884f26eb497a7fbb3a51c781ec824d14b
  F src/sqliteLimit.h 33b1c9baba578d34efe7dfdb43193b366111cdf41476b1e82699e14c11ee1fb6
  F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749
  F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
@@@ -711,18 -705,18 +711,18 @@@ F src/trigger.c ad6ab9452715fa9a8075442
  F src/update.c 0aa36561167a7c40d01163238c297297962f31a15a8d742216b3c37cdf25f731
  F src/upsert.c 5303dc6c518fa7d4b280ec65170f465c7a70b7ac2b22491598f6d0b4875b3145
  F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
 -F src/util.c fea6fffdee3cdae917a66b70deec59d4f238057cfd6de623d15cf990c196940d
 +F src/util.c c2aa170f2eb429235b1dddce8952770787ffa5124dc89d405bfbe8ebad8e7ebd
  F src/vacuum.c 604fcdaebe76f3497c855afcbf91b8fa5046b32de3045bab89cc008d68e40104
 -F src/vdbe.c 74282a947234513872a83b0bab1b8c644ece64b3e27b053ef17677c8ff9c81e0
 +F src/vdbe.c cd0396758da6a95e6c4e3bec7c3d6e767c3b39930c295c2425f83bb086cdc6ba
  F src/vdbe.h 41485521f68e9437fdb7ec4a90f9d86ab294e9bb8281e33b235915e29122cfc0
- F src/vdbeInt.h c30ef736774d876f923b42758b9210fe456104b39906e3901d21279443a17d47
- F src/vdbeapi.c dde6c4d0f87486f056b9db4d1ea185bb1d84a6839102b86e76316ba590d07cc7
- F src/vdbeaux.c 23f17d418d5b97138b7dbbd4c84d80c66dc7990653c705436c8162103b3cc9ba
 -F src/vdbeInt.h 7a2329efe451ef0d1280736419f321cbc261146e453cdd22b27a0785b8742b15
 -F src/vdbeapi.c 97a9dfdff49183ad7f7911f9d919eb8eb72677c39cdee6249ee5a060d3ce515a
 -F src/vdbeaux.c 499b68a5585663ef36c05b421d8c9c60448aa3b9f01bba5ae7accfc89ee6ac50
++F src/vdbeInt.h cd829ff67fc18aff2476fe3209262ba8671cb43d51cb6913de4a670e37d2fbe3
++F src/vdbeapi.c 0cba9fe6e860e46bfb5e45a76a8c2c6ccd5ebc8f954319e4288e7793c2eca88c
++F src/vdbeaux.c a586f445945eef6ad1fcd7c94f700faa1baea93c0dbd446291c7cf65966c8470
  F src/vdbeblob.c 2516697b3ee8154eb8915f29466fb5d4f1ae39ee8b755ea909cefaf57ec5e2ce
 -F src/vdbemem.c cf4a1556dd5b18c071cf7c243373c29ce752eb516022e3ad49ba72f08b785033
 +F src/vdbemem.c adb5877dc54330865e45e0fba50f6455c1d9d8b83434c59f0e3d2d2a0b9f0e58
  F src/vdbesort.c 0d40dca073c94e158ead752ef4225f4fee22dee84145e8c00ca2309afb489015
  F src/vdbetrace.c fe0bc29ebd4e02c8bc5c1945f1d2e6be5927ec12c06d89b03ef2a4def34bf823
 -F src/vdbevtab.c aae4bd769410eb7e1d02c42613eec961d514459b1c3c1c63cfc84e92a137daac
 +F src/vdbevtab.c 57fa8f56478e5b5cb558cb425e7878515e0a105c54f96f1d1bbf4b9433529254
  F src/vtab.c 1ecf8c3745d29275688d583e12822fa984d421e0286b5ef50c137bc3bf6d7a64
  F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
  F src/wal.c dd843f619ac60d5dadab7109cf402432ba74dde0c301505fd1c202add07659e3
@@@ -2049,8 -2043,8 +2049,9 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9
  F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
  F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
  F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P f9213289d09adfb0461d9644e80c7e889f4bae51563ae2e575a2c95336052bcb
- R fb3fd77e80d1642b3cf0d0d40a08f14e
 -P 050f773addd605f6690348c98e9000a9a3663bbc26288a71973fd7b40468e8ab a0d3e7571aded8d1e03908059d2d5aa5d62ec49bff099cb38f6f35df5e4b18b5
 -R 1b8abd8c868c9252b4ad39501c74d63b
++P 0bed957e46aa3bf6a70292ae100de0459486c1469dd03de61207a708cc59a594 06eae046c1a1155f22590b88942db72f01482f2363da9753f8adfdb322679055
++R f4937c6da6b1777faf7c4e05e694ac0d
++T +closed 06eae046c1a1155f22590b88942db72f01482f2363da9753f8adfdb322679055
  U drh
- Z 4e3e52a362d42e532a27b931dd696fd5
 -Z 5952a3e3d009df0b224f122b62ef2345
++Z ff4a633a0dc8165d247380ac3053876f
  # Remove this line to create a well-formed Fossil manifest.
diff --cc manifest.uuid
index 5394eee03fd90d7afde0190123f0c61313ddc8cd,24e5dc90bc1bb7e8deb8543a00793567013ed4e2..784b700a423e162e399a79b6d11b0beda090fab1
@@@ -1,1 -1,1 +1,1 @@@
- 0bed957e46aa3bf6a70292ae100de0459486c1469dd03de61207a708cc59a594
 -06eae046c1a1155f22590b88942db72f01482f2363da9753f8adfdb322679055
++0443c0ef85f8f6f3efdee68bf59126c9459f08a58458756f8cbeeaf043d43a86
diff --cc src/shell.c.in
index 3d969d1ff71bb8adfced9dcb0f154be8fd693305,ed1d8e6c4b20280f262a844d7a9cced3851c28dc..1e65d0e9fdffeec93c7f3f5c62e1dbba7c4d5768
@@@ -4389,16 -4347,12 +4388,13 @@@ static int shell_exec
            }
            eqp_render(pArg, 0);
          }
-         sqlite3_finalize(pExplain);
-         sqlite3_free(zEQP);
          if( pArg->autoEQP>=AUTOEQP_full ){
            /* Also do an EXPLAIN for ".eqp full" mode */
-           zEQP = sqlite3_mprintf("EXPLAIN %s", zStmtSql);
-           shell_check_oom(zEQP);
-           rc = sqlite3_prepare_v2(db, zEQP, -1, &pExplain, 0);
+           sqlite3_reset(pExplain);
+           rc = sqlite3_stmt_explain(pExplain, 1);
            if( rc==SQLITE_OK ){
              pArg->cMode = MODE_Explain;
 +            assert( sqlite3_stmt_isexplain(pExplain)==1 );
              explain_data_prepare(pArg, pExplain);
              exec_prepared_stmt(pArg, pExplain);
              explain_data_delete(pArg);
diff --cc src/vdbeInt.h
Simple merge
diff --cc src/vdbeapi.c
Simple merge
diff --cc src/vdbeaux.c
Simple merge