]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix minor issues on this branch. Remove unused code.
authordan <Dan Kennedy>
Thu, 9 Jan 2025 17:12:27 +0000 (17:12 +0000)
committerdan <Dan Kennedy>
Thu, 9 Jan 2025 17:12:27 +0000 (17:12 +0000)
FossilOrigin-Name: c2610bb4becf5b5c58016947e07f5c7a330210370f0d2531ab9ecb1ce8658c1a

manifest
manifest.uuid
src/analyze.c
src/btree.c
src/callback.c
src/prepare.c
src/sqlite.h.in
src/sqliteInt.h
src/test1.c
src/trigger.c
test/tester.tcl

index 3f3ef0c66b431bf1f7f77929a0bea5f3f5f91117..46e9c6e20d82417b380b13d977fc1a523032b017 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sproblem\sin\stest\scode\son\sthis\sbranch.
-D 2025-01-08T17:16:09.485
+C Fix\sminor\sissues\son\sthis\sbranch.\sRemove\sunused\scode.
+D 2025-01-09T17:12:27.518
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -707,17 +707,17 @@ F sqlite3.1 acdff36db796e2d00225b911d3047d580cd136547298435426ce9d40347973cc
 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
 F sqlite_cfg.h.in baf2e409c63d4e7a765e17769b6ff17c5a82bbd9cbf1e284fd2e4cefaff3fcf2
 F src/alter.c c48e7cbb7f87b28e9e954bfed3327d8e1b8e2a020fbb5bbeca78f6534d6c3c31
-F src/analyze.c baba2f987e2564cfcfc31cc52b90da282644e35f93a94dcef30c07536bdf82c2
+F src/analyze.c 9dd9ad90bbdb40d19f267cfab450c1954998af093e790e644c92ea5f9c60b2f9
 F src/attach.c 08235ab62ed5ccc93c22bf36e640d19effcd632319615851bccf724ec9341333
 F src/auth.c 4c1ea890e0069ad73bead5d17a5b12c34cfa4f1a24175c8147ea439b64be271c
 F src/backup.c 5c97e8023aab1ce14a42387eb3ae00ba5a0644569e3476f38661fa6f824c3523
 F src/bitvec.c 501daeef838fa82a9fb53540d72f29e3d9172c8867f1e19f94f681e2e20b966e
 F src/btmutex.c 79a43670447eacc651519a429f6ece9fd638563cf95b469d6891185ddae2b522
-F src/btree.c f840a13b2f7fe8d94925012946f0cc46251e4943852b9f00f2e11e808f716736
+F src/btree.c 2664c81f217a42afadc7c010bb4a175057d5e53b99e9512234eb74817f2ad59c
 F src/btree.h bdeeb35614caa33526b603138f04c8d07a3f90a1300b5ade76848b755edf2027
 F src/btreeInt.h caa893e74d2261fb0ff1681fce998533c0552858e882bd04fc6805075f5f6e75
 F src/build.c 013ba4f080e4285eb9a53910f2ad5feb27cfa7163aeb51ebd30e49ee6a5242de
-F src/callback.c a8f3276f3f506e94b75b7102b8d4a76417cf9fa6ec1596faf0a6f7b8b4823e0e
+F src/callback.c 43c8ca52b1ecbdec43522f121126fd4e3ee10bc9ca01cdd3ae207cfa419780b6
 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e
 F src/ctime.c 193f6f9a75204274b7e7f45ac6d6517c12c70b55a5dfb39312dfc3a52e2a8138
 F src/date.c 89ce1ff20512a7fa5070ba6e7dd5c171148ca7d580955795bf97c79c2456144a
@@ -769,23 +769,23 @@ F src/pcache.h 1497ce1b823cf00094bb0cf3bac37b345937e6f910890c626b16512316d3abf5
 F src/pcache1.c 437282ad81350c98a8592425b19e1b4e132196f7a81aef49b2ca39c50937b827
 F src/pragma.c 464813bf39538eaa2c2cfe349de97888cc4d82645c0574d9c522190d46898149
 F src/pragma.h 6ebbdee90ed56a892d2c728e27fd9c1ce48c8a28841888d0c6c147946b38cb25
-F src/prepare.c 2668b61c3f01c264a4bd3f460e580356ca8626e118fa7bba6d5c91b5f112fa5b
+F src/prepare.c ebc85260110447e4a12ef671d18a843bf37a1e3378da5483b1e3da65be80c06c
 F src/printf.c 9480e90343dfde2406eeb25ff072774a77453d0f57fcd6495102f915dcc26a82
 F src/random.c 9bd018738ec450bf35d28050b4b33fa9a6eebf3aaefb1a1cff42dc14a7725673
 F src/resolve.c 2c127880c0634962837f16f2f48a295e514357af959330cc038de73015d5b5e8
 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97
 F src/select.c d07d1872161db7c922194c5279d67686e8355c6d304ed0e0646fbaa59b59f561
 F src/shell.c.in 40de636c1d90fb8a9ca7f49dc8f50d930f1b60736e73aca5eb37c4c7d0e47f9d
-F src/sqlite.h.in b9d8969b238d4560d0cf6458957e710a3ebbbe85c8c614bd000819b34958bc40
+F src/sqlite.h.in 128a6a31fbe4a3a79fbdd104fa06f059e2b2de934c5313413f9389ef181fbf5d
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 3f046c04ea3595d6bfda99b781926b17e672fd6d27da2ba6d8d8fc39981dcb54
-F src/sqliteInt.h 53123981e9aba70c4c58649b9b8b0f72b63025a413e69b3ca196d18ae68bd47e
+F src/sqliteInt.h 9e50aa6f719aedfc9869ff46ab1480ec0c545974afa13f9b8ed28934768b09b3
 F src/sqliteLimit.h da2cffdffa7d71b035f9e59668fbaad74b5939300dbfa9915304e6d8f72b0761
 F src/status.c cb11f8589a6912af2da3bb1ec509a94dd8ef27df4d4c1a97e0bcf2309ece972b
 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1
 F src/tclsqlite.c c6888598f08dee3d9112a38ef42c8f5c89ca7f3190f4694744d0b84250f4bf8c
 F src/tclsqlite.h c6af51f31a2b2172d674608763a4b98fdf5cd587e4025053e546fb8077757262
-F src/test1.c ccbac0fdb30e4f77c515761aa776742f98258234e9d5be2d6a21bc6e1bf7ecd1
+F src/test1.c feadffd03e992971096ed294370f8924a40fea4d1ccb16eb6a881574261446c0
 F src/test2.c 7ebc518e6735939d8979273a6f7b1d9b5702babf059f6ad62499f7f60a9eb9a3
 F src/test3.c e7573aa0f78ee4e070a4bc8c3493941c1aa64d5c66d4825c74c0f055451f432b
 F src/test4.c 13e57ae7ec7a959ee180970aef09deed141252fe9bb07c61054f0dfa4f1dfd5d
@@ -839,7 +839,7 @@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
 F src/threads.c 4ae07fa022a3dc7c5beb373cf744a85d3c5c6c3c
 F src/tokenize.c 3f703cacdab728d7741e5a6ac242006d74fe1c2754d4f03ed889d7253259bd68
 F src/treeview.c 88aa39b754f5ef7214385c1bbbdd2f3dc20efafeed0cf590e8d1199b9c6e44aa
-F src/trigger.c 6868181a0efd15ddaf82f23658b47eda4a5fa5bee49fbf94ccf8abe383559a32
+F src/trigger.c 247e2d712d5edc6021d52a169f6ac9a9c10d7144bc4ac7ea06c1ed2aa414659f
 F src/update.c 2dd1b745acc9253df1b210ac69137c7a6b290e561d3f42da24418c4e807e889b
 F src/upsert.c 215328c3f91623c520ec8672c44323553f12caeb4f01b1090ebdca99fdf7b4f1
 F src/utf.c f23165685a67b4caf8ec08fb274cb3f319103decfb2a980b7cfd55d18dfa855e
@@ -1735,7 +1735,7 @@ F test/temptable.test d2c9b87a54147161bcd1822e30c1d1cd891e5b30
 F test/temptable2.test 76821347810ecc88203e6ef0dd6897b6036ac788e9dd3e6b04fd4d1631311a16
 F test/temptable3.test d11a0974e52b347e45ee54ef1923c91ed91e4637
 F test/temptrigger.test 38f0ca479b1822d3117069e014daabcaacefffcc
-F test/tester.tcl 3c036e092942b97274718b7265142a6c8c57d90cdc6b66280d7974a69d5d6c5d
+F test/tester.tcl 34201a37a5b657438d5f84914fdab7477ce14ba6b8e629f089f238b75dafecd1
 F test/testrunner.tcl 982939f0f1835007298b92e52694c207d16ef79143993b35e5cbc9f0c585938b x
 F test/testrunner_data.tcl dbc0bb1c5b912dfd1e32b25d544318e412edd6085bd5fc9e6619cb93a739b786
 F test/thread001.test a0985c117eab62c0c65526e9fa5d1360dd1cac5b03bde223902763274ce21899
@@ -2251,8 +2251,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 961af9444275f1d18730beffc4111116877dd425eb44797e9e051273e47b8396
-R cc959707cdd96f768e46ae86701af48c
+P 05d90f8b28581f4ac3751a58e6d75ed18b29294381b3aa4c383c047ecdeabb82
+R 0c0c68967911f9b9f327790a38ea9222
 U dan
-Z fc6e7538c42a4e2b5529471af8704ce6
+Z 7fd56646f3baa04212ba296e6ca3b3bc
 # Remove this line to create a well-formed Fossil manifest.
index 7a421bca02e1095b95b85127197b049dff433e8d..293826878cb3a92832d11b0197e5a93877911c53 100644 (file)
@@ -1 +1 @@
-05d90f8b28581f4ac3751a58e6d75ed18b29294381b3aa4c383c047ecdeabb82
+c2610bb4becf5b5c58016947e07f5c7a330210370f0d2531ab9ecb1ce8658c1a
index e9cfd3fbaf0d254761fe95b8988afee9c9dcc6bc..4666980fdafacc93b35f56aa086045018e5df946 100644 (file)
@@ -1777,6 +1777,13 @@ static Index *findIndexOrPrimaryKey(
 /*
 ** Grow the pIdx->aSample[] array. Return SQLITE_OK if successful, or
 ** SQLITE_NOMEM otherwise.
+**
+** Space for the pIdx->aSample[] array and its contents may come either
+** directly from sqlite3DbMallocRaw(), or from buffer Schema.pStat4Space.
+** Schema.pStat4Space is only used when the aSample[] array is resized
+** to exactly SQLITE_STAT4_EST_SAMPLES entries.
+**
+** 
 */
 static int growSampleArray(sqlite3 *db, Index *pIdx, int nReq, int *piOff){
   int nIdxCol = pIdx->nSampleCol;
index 989f48536e77760802a8d8273f6d6f52a3c6f962..cb8aa1195040c6a6912010dca9497df262829413 100644 (file)
@@ -11839,17 +11839,6 @@ void *sqlite3BtreeSchema(Btree *p, int nBytes, void(*xFree)(void *)){
   return pBt->pSchema;
 }
 
-void sqlite3BtreeSchemaPut(Btree *p, void *pTo){
-  BtShared *pBt = p->pBt;
-  assert( sqlite3BtreeHoldsMutex(p) );
-  assert( pBt->xFreeSchema );
-  assert( pBt->pSchema );
-
-  pBt->xFreeSchema(pBt->pSchema);
-  sqlite3DbFree(0, pBt->pSchema);
-  pBt->pSchema = pTo;
-}
-
 /*
 ** Return SQLITE_LOCKED_SHAREDCACHE if another user of the same shared
 ** btree as the argument handle holds an exclusive lock on the
index 57b3bcc977e8dabf0bb7bd6d7d6c5f0bd503172e..f78abe049b370a3e70e560f2ad4abc985c86d835 100644 (file)
@@ -542,16 +542,3 @@ Schema *sqlite3SchemaGet(sqlite3 *db, Btree *pBt){
   }
   return p;
 }
-
-int sqlite3SchemaTestCopy(sqlite3 *db, int iDb){
-  Btree *pBt = db->aDb[iDb].pBt;
-  Schema *pFrom = db->aDb[iDb].pSchema;
-  Schema *pTo = sqlite3BtreeSchema(pBt, 0, 0);
-
-  assert( pTo && pFrom );
-  sqlite3SchemaCopy(db, pTo, pFrom);
-  db->aDb[iDb].pSchema = pTo;
-
-  return (db->mallocFailed ? SQLITE_NOMEM : SQLITE_OK);
-}
-
index e508da06441b229308ab161d50f90ef7563254d4..429e8412a3283f3855d3008dc035e974dce983d8 100644 (file)
@@ -456,6 +456,44 @@ error_out:
   return rc;
 }
 
+/*
+** Calling this function is equivalent to calling:
+**
+**     sqlite3InitOne(db, iDb, pzErrMsg, 0);
+**
+** except that if SQLITE_TESTCTRL_SCHEMACOPY has been configured, then
+** the schema is first loaded into space allocated on the heap, and then
+** copied into the database schema object using sqlite3SchemaCopy(). This
+** is done to help test the internals of the sqlite3_schema_copy() API.
+*/
+static int initOneWithCopy(sqlite3 *db, int iDb, char **pzErrMsg){
+  int rc;
+#ifndef SQLITE_UNTESTABLE
+  Schema *pNew = 0;
+  Schema *pOld = 0;
+  if( iDb!=1 && sqlite3Config.bTestSchemaCopy ){
+    pNew = sqlite3DbMallocZero(db, sizeof(Schema));
+    if( !pNew ) return SQLITE_NOMEM;
+    pOld = db->aDb[iDb].pSchema;
+    memcpy(pNew, pOld, sizeof(Schema));
+    db->aDb[iDb].pSchema = pNew;
+  }
+#endif
+
+  rc = sqlite3InitOne(db, iDb, pzErrMsg, 0);
+
+#ifndef SQLITE_UNTESTABLE
+  if( iDb!=1 && sqlite3Config.bTestSchemaCopy ){
+    sqlite3SchemaCopy(db, pOld, pNew);
+    if( db->mallocFailed ) rc = SQLITE_NOMEM;
+    db->aDb[iDb].pSchema = pOld;
+    sqlite3SchemaClear(pNew);
+    sqlite3DbFree(db, pNew);
+  }
+#endif
+  return rc;
+}
+
 /*
 ** Initialize all database files - the main database file, the file
 ** used to store temporary tables, and any additional database files
@@ -476,27 +514,14 @@ int sqlite3Init(sqlite3 *db, char **pzErrMsg){
   assert( db->nDb>0 );
   /* Do the main schema first */
   if( !DbHasProperty(db, 0, DB_SchemaLoaded) ){
-    Schema *pNew = 0;
-    if( sqlite3Config.bTestSchemaCopy ){
-      pNew = sqlite3DbMallocZero(db, sizeof(Schema));
-      if( !pNew ) return SQLITE_NOMEM;
-      memcpy(pNew, db->aDb[0].pSchema, sizeof(Schema));
-      db->aDb[0].pSchema = pNew;
-    }
-    rc = sqlite3InitOne(db, 0, pzErrMsg, 0);
-    if( sqlite3Config.bTestSchemaCopy ){
-      int rc2 = sqlite3SchemaTestCopy(db, 0);
-      if( rc==SQLITE_OK ) rc = rc2;
-      sqlite3SchemaClear(pNew);
-      sqlite3DbFree(db, pNew);
-    }
+    rc = initOneWithCopy(db, 0, pzErrMsg);
     if( rc ) return rc;
   }
   /* All other schemas after the main schema. The "temp" schema must be last */
   for(i=db->nDb-1; i>0; i--){
     assert( i==1 || sqlite3BtreeHoldsMutex(db->aDb[i].pBt) );
     if( !DbHasProperty(db, i, DB_SchemaLoaded) ){
-      rc = sqlite3InitOne(db, i, pzErrMsg, 0);
+      rc = initOneWithCopy(db, i, pzErrMsg);
       if( rc ) return rc;
     }
   }
index 3d204fd9250f28654d74efbfdfc0c6fcd9bbc19e..7d5a3786eaf9522fc7fa9c558f8ab4fc1a41dc9c 100644 (file)
@@ -10953,6 +10953,23 @@ int sqlite3_commit_status(
 #define SQLITE_COMMIT_CONFLICT_FRAME 3
 #define SQLITE_COMMIT_CONFLICT_PGNO  4
 
+/*
+** This function is used to copy an in-memory schema from one database
+** connection to another. Under some circumstances this may be faster than
+** loading it from the database. 
+**
+** The target database is identified by parameters pTo and zTo, which must
+** be "main" or the name of an attached database. The source database is
+** identified by pFrom and zFrom. It is the responsibility of the caller
+** to ensure that these two database connections really access the same
+** underlying database file.
+**
+** This function is a no-op if either the database schema has already been
+** loaded for pTo/zTo, or if it has not yet been loaded for pFrom/zFrom. In
+** these cases SQLITE_OK is returned. Otherwise, the database schema from
+** pFrom/zFrom is copied into pTo/zTo. SQLITE_OK is returned if successful,
+** or SQLITE_NOMEM if an OOM error occurs.
+*/
 int sqlite3_schema_copy(
     sqlite3 *pTo, const char *zTo, 
     sqlite3 *pFrom, const char *zFrom
index e1050c85bdd60d35eb39f7bcbcea7398d54292d5..4645d92742c19d6958acc84fa2260f54a743a2a0 100644 (file)
@@ -5608,10 +5608,7 @@ char sqlite3IndexColumnAffinity(sqlite3*, Index*, int);
 int sqlite3AnalyzeCopyStat4(sqlite3*, Index*, Index *pFrom);
 #endif
 
-TriggerStep *sqlite3SchemaCopyTriggerStepList(sqlite3 *, TriggerStep*);
-int sqlite3SchemaTestCopy(sqlite3 *db, int);
 void sqlite3SchemaCopy(sqlite3 *db, Schema*, Schema*);
-void sqlite3BtreeSchemaPut(Btree *pBt, void*);
 
 /*
 ** The interface to the LEMON-generated parser
index 796fcafb5c653b942d55710d2c4ac5fd6bb46a65..dde1c1ffd0c0765e6e88d88f511d4ff6c304c12c 100644 (file)
@@ -2592,7 +2592,11 @@ static int SQLITE_TCLAPI test_sqlite3_randomness(
 }
 
 /*
-** Usage: sqlite3_schema_copy NBYTE
+** Usage: sqlite3_schema_copy DBTO DBNAMETO DBFROM DBNAMEFROM
+**
+**   DBTO and DBFROM must be database handles created using the [sqlite3]
+**   command. DBNAMETO and DBNAMEFROM are database names - "main", "temp"
+**   or the name of an attached database.
 */
 static int SQLITE_TCLAPI test_schema_copy(
   void * clientData,
index 0c98faae7ed3b906642793d1acd3b5ad53d3c92c..e306a2e66479f994b8a9fb05ac9e433c0cec7076 100644 (file)
@@ -599,7 +599,6 @@ TriggerStep *sqlite3TriggerDeleteStep(
   return pTriggerStep;
 }
 
-
 /* 
 ** Recursively delete a Trigger structure
 */
index 50710769791de1dda60b8c2d021a1ec958b67f77..bb9c632843ddaebf0691719d3fcd6641a3454f98 100644 (file)
@@ -101,7 +101,7 @@ if {[info exists ::tester_tcl_has_run]} return
 set tcl_precision 15
 sqlite3_test_control_pending_byte 0x0010000
 
-#sqlite3_test_control SQLITE_TESTCTRL_SCHEMACOPY 1
+sqlite3_test_control SQLITE_TESTCTRL_SCHEMACOPY 1
 
 # If the pager codec is available, create a wrapper for the [sqlite3]
 # command that appends "-key {xyzzy}" to the command line. i.e. this: