From: drh <> Date: Sat, 1 Oct 2022 13:28:04 +0000 (+0000) Subject: Merge the Parse.prepFlags change from trunk. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fheads%2Fstmt-cache;p=thirdparty%2Fsqlite.git Merge the Parse.prepFlags change from trunk. FossilOrigin-Name: c8d77f398099f357bed0aab10f066c6b26ba4ad8ffd68bb7b4465c0c4999599b --- 399665beb506c7bf8bdec2d0d8ad50133633d1df diff --cc manifest index 933838950b,1bac28833e..6e3d77315e --- a/manifest +++ b/manifest @@@ -1,5 -1,5 +1,5 @@@ - C Merge\sthe\slatest\strunk\senhancements\sinto\sthe\sstmt-cache\sbranch. - D 2022-10-01T12:00:39.143 -C Replace\sthe\sParse.disableVtab\sfield\swith\sParse.prepFlags\sfor\sincreased\ngenerality,\sa\ssmall\ssize\sreduction,\sand\sa\ssmall\sperformance\sincrease. -D 2022-10-01T13:17:53.450 ++C Merge\sthe\sParse.prepFlags\schange\sfrom\strunk. ++D 2022-10-01T13:28:04.924 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@@ -531,7 -531,7 +531,7 @@@ F src/btmutex.c 6ffb0a22c19e2f9110be096 F src/btree.c ef9c126d6dc5dff8ff76abc807dfef5b8aac42144e3be11cbcd9cb6eaecef580 F src/btree.h 74d64b8f28cfa4a894d14d4ed64fa432cd697b98b61708d4351482ae15913e22 F src/btreeInt.h 8ce1332edd89dfd2461d561ac10a0ab5601c8e06200cb5230596c3caaf54482e - F src/build.c d98a676b23b87362a2f9f4c91443d48638143a913f39ebe54bd50ac896af9d2b -F src/build.c 6e3ee380a4f0ff95de4b53bf510f66600cff08e4e04b92e95fae789072563f8f ++F src/build.c 50cf41a7710c5ebfd22e4a233d359598a10e62f55b984fa91c85b883b2e27d37 F src/callback.c 4cd7225b26a97f7de5fee5ae10464bed5a78f2adefe19534cc2095b3a8ca484a F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/ctime.c 93e4b5f4faf6d3f688988a116773259a4fbfb4ddac0e9bf9d0ae0429390c2543 @@@ -583,17 -583,17 +583,17 @@@ F src/pcache.h 4f87acd914cef5016fae3030 F src/pcache1.c dee95e3cd2b61e6512dc814c5ab76d5eb36f0bfc9441dbb4260fccc0d12bbddc F src/pragma.c 9bf7d8a2a9ad3bc36df3ec0d61817a44c38a1da527d59c26c203047f906e334a F src/pragma.h e690a356c18e98414d2e870ea791c1be1545a714ba623719deb63f7f226d8bb7 - F src/prepare.c 854d8be4d1d1dbd0eb4566e8c8d2df6a458910a078cdef32052759da03412dcf -F src/prepare.c 0e61df99f063f12896a89c893fd3f8868e9fb13252c05e3e4e8cea7422094d0a ++F src/prepare.c fbcfdd127ec6e0e011da7f31b9b30dfd70d520ce3f6b2e6c27d3e7904d0faea1 F src/printf.c e99ee9741e79ae3873458146f59644276657340385ade4e76a5f5d1c25793764 F src/random.c 546d6feb15ec69c1aafe9bb351a277cbb498fd5410e646add673acb805714960 F src/resolve.c efea4e5fbecfd6d0a9071b0be0d952620991673391b6ffaaf4c277b0bb674633 F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 F src/select.c bb18acf4eded647fef88d4d543c673874dbebff516fbeba90a85e6c13f2a58cd -F src/shell.c.in e7e7c2c69ae86c5ee9e8ad66227203d46ff6dce8700a1b1dababff01c71d33df -F src/sqlite.h.in b9b7fd73239d94db20332bb6e504688001e5564b655e1318a4427a1caef4b99e +F src/shell.c.in a1152c45017c9ce634b1616d16ccf530397df1260302fccc7aafee7afe57173a +F src/sqlite.h.in 24e7d46e187456b778ca8f6e28b194667b80f8a61e4c1a861239a91fd6d3e686 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h a988810c9b21c0dc36dc7a62735012339dc76fc7ab448fb0792721d30eacb69d - F src/sqliteInt.h e36fd302825814dcf8cab7ecdd4fd98bf20a00a5e3fdff2cedb7bbed22ac0cf2 -F src/sqliteInt.h 7571703e6d11cd0e0283be68e9b6baceefedf10e3bbac5869d12183e031c5254 ++F src/sqliteInt.h 89f957680385f5725ec701ec94b41274d6d77ef25feb96fcda67a0aa545badb4 F src/sqliteLimit.h d7323ffea5208c6af2734574bae933ca8ed2ab728083caa117c9738581a31657 F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 @@@ -654,7 -654,7 +654,7 @@@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c F src/tokenize.c 1305797eab3542a0896b552c6e7669c972c1468e11e92b370533c1f37a37082b F src/treeview.c 07787f67cd297a6d09d04b8d70c06769c60c9c1d9080378f93929c16f8fd3298 - F src/trigger.c 0febd48275c0880c7667d3b5e9b29190bbb6c67d0684c9d6ac20b3ddd2cb9087 -F src/trigger.c 4163ada044af89d51caba1cb713a73165347b2ec05fe84a283737c134d61fcd5 ++F src/trigger.c 78dd02836a0559e41321318668f6f0c266b27cc172d1676879431765b27720c5 F src/update.c c52a7991bece0453d22c77c08469512ee2f1391c12503fd347d1c939220c5877 F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0 @@@ -2000,8 -2000,8 +2000,8 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 - P 7763b98b36bec186c5cc4a06382ee424fe9c7f401c70858fdfa490baa4bf437c bd8ae5febbb8d3122f1e2e09b9fcdd6ac20c075ae1cf60bcdbd36080f3736417 - R 2e0f74f4322eb619c54e2beae0797d28 -P bd8ae5febbb8d3122f1e2e09b9fcdd6ac20c075ae1cf60bcdbd36080f3736417 -R b431f195d6909dd213769258d329fb1f ++P 7812aea6ea2a922599970cd56933dadaa340bcf40781701844f62456772501c2 b7da0bcdf70e53ab1ec00a0694e17c7429e23bc6eb3f39b622d06a930aa2f6a3 ++R 4fea9345ef5af6b4a81a531a14cab26b U drh - Z 8818f780176759b6e09c9a060a24ea3c -Z 5ff8e8c9111016b6f28cef573224105e ++Z a63cbed431bd786ee17d13092323f381 # Remove this line to create a well-formed Fossil manifest. diff --cc manifest.uuid index d5abc6225a,ceab8edde4..73a0bb8c63 --- a/manifest.uuid +++ b/manifest.uuid @@@ -1,1 -1,1 +1,1 @@@ - 7812aea6ea2a922599970cd56933dadaa340bcf40781701844f62456772501c2 -b7da0bcdf70e53ab1ec00a0694e17c7429e23bc6eb3f39b622d06a930aa2f6a3 ++c8d77f398099f357bed0aab10f066c6b26ba4ad8ffd68bb7b4465c0c4999599b diff --cc src/prepare.c index 5fd39e83cc,cd90bc4bad..46cc54ac44 --- a/src/prepare.c +++ b/src/prepare.c @@@ -699,33 -698,14 +699,27 @@@ static int sqlite3Prepare if( db->mallocFailed ) sqlite3ErrorMsg(&sParse, "out of memory"); assert( sqlite3_mutex_held(db->mutex) ); + if( db->nCache>0 ){ + Vdbe *pCache; + if( nBytes<0 ) nBytes = sqlite3Strlen30(zSql); + pCache = sqlite3VdbeFindInStmtCache(db, zSql, nBytes, &hSql); + if( pCache ){ + *ppStmt = (sqlite3_stmt*)pCache; + if( pzTail ){ + *pzTail = &zSql[nBytes]; + } + goto end_prepare; + } + } + - if( prepFlags!=0 ){ - /* For a long-term use prepared statement should avoid the use of - ** lookaside memory. - */ - if( prepFlags & (SQLITE_PREPARE_PERSISTENT|SQLITE_PREPARE_CACHE) ){ - testcase( prepFlags & SQLITE_PREPARE_PERSISTENT ); - testcase( prepFlags & SQLITE_PREPARE_CACHE ); - sParse.disableLookaside++; - DisableLookaside; - } - if( prepFlags & SQLITE_PREPARE_NO_VTAB ){ - sParse.disableVtab = 1; - } + /* For a long-term use prepared statement avoid the use of + ** lookaside memory. + */ - if( prepFlags & SQLITE_PREPARE_PERSISTENT ){ ++ if( prepFlags & (SQLITE_PREPARE_PERSISTENT|SQLITE_PREPARE_CACHE) ){ + sParse.disableLookaside++; + DisableLookaside; } + sParse.prepFlags = prepFlags & 0xff; /* Check to verify that it is possible to get a read lock on all ** database schemas. The inability to get a read lock indicates that