]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Minor modification to restoreOrClearCursorPosition() to improve efficiency. Do not...
authordanielk1977 <danielk1977@noemail.net>
Fri, 13 Jan 2006 06:33:23 +0000 (06:33 +0000)
committerdanielk1977 <danielk1977@noemail.net>
Fri, 13 Jan 2006 06:33:23 +0000 (06:33 +0000)
FossilOrigin-Name: dd705955429d847af85ffaf248976bcd1d861852

15 files changed:
manifest
manifest.uuid
src/btree.c
src/build.c
src/expr.c
src/os_common.h
src/os_win.c
src/prepare.c
src/select.c
src/sqliteInt.h
src/utf.c
src/util.c
src/vdbe.c
src/vdbeaux.c
src/where.c

index d07fa6571cac0b88880db6c3a6012930c4b02b24..b4185068192c32599838c11429c098d4584a9061 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Additional\sspeed\senhancements\sin\sbtree.c.\s(CVS\s2935)
-D 2006-01-13T04:31:58
+C Minor\smodification\sto\srestoreOrClearCursorPosition()\sto\simprove\sefficiency.\sDo\snot\sallocate\sthe\sextra\s8-bytes\sif\smemory-management\sis\snot\senabled.\s(CVS\s2936)
+D 2006-01-13T06:33:24
 F Makefile.in ab3ffd8d469cef4477257169b82810030a6bb967
 F Makefile.linux-gcc aee18d8a05546dcf1888bd4547e442008a49a092
 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@@ -34,15 +34,15 @@ F src/alter.c 4139c8f1d0f12b1759e767b1d09dd594e2b5ac1d
 F src/analyze.c 7d2b7ab9a9c2fd6e55700f69064dfdd3e36d7a8a
 F src/attach.c d4b9d8bd71d72409720946355be41cafb6c09079
 F src/auth.c cdec356a5cd8b217c346f816c5912221537fe87f
-F src/btree.c 91943e07457ced1842ff93f331ab6bc1e277747e
+F src/btree.c 46061b59a71da48fb269a3ac318f560fe5c4f449
 F src/btree.h 5663c4f43e8521546ccebc8fc95acb013b8f3184
-F src/build.c a055974683ddc465bdc8669d43d6ab35d3dbb55f
+F src/build.c 6db3dcb70ae17dcd303493c021e6dd233217828f
 F src/callback.c ba3e6cc7a6beb562e7a66f92e26fabcb21aab1e2
 F src/complete.c df1681cef40dec33a286006981845f87b194e7a4
 F src/date.c 5b86bc41754ffffb2b5742fbd71ea687f01cc6ca
 F src/delete.c c7bd5708a629585e073ce34cf3b1fcb52c2fef38
 F src/experimental.c 50c1e3b34f752f4ac10c36f287db095c2b61766d
-F src/expr.c 3b6acdb4e254027fe72ce70054ea6b71c7d423a3
+F src/expr.c f885cfe73fb235635fba72e78bb858c64529771f
 F src/func.c be4c026c1d2401f14c3186611e1131a895a3ca6e
 F src/hash.c 8747cf51d12de46512880dfcf1b68b4e24072863
 F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
@@ -52,25 +52,25 @@ F src/main.c 39d073fb1f95f874ee0c98366e99005cf14742dd
 F src/md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
 F src/os.c 1d1a61cdf150e9f9520a3bc787c8465148ea2e78
 F src/os.h 9debc3d3ca4cdafde222a0ea74a4c8415aef4f22
-F src/os_common.h 78bcc34dded9b625b3c16d072b7e5b76d075a674
+F src/os_common.h 44783a37f78ab6e0dd5fa156530dbc58beadbba6
 F src/os_test.c 49833426101f99aee4bb5f6a44b7c4b2029fda1c
 F src/os_test.h 903c93554c23d88f34f667f1979e4a1cee792af3
 F src/os_unix.c bc35a237a10c2ecb5c5b038d31d20ecb098dcc7d
 F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
-F src/os_win.c 4ebb7e116e144d5bdfa4a0d4c31061d6f22b0736
+F src/os_win.c cd4ca2753aeaad11f5c9b9b6ef28752f45ed4529
 F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
 F src/pager.c a96b9c43664670576e41eac699277c7862d604d8
 F src/pager.h e0acb095b3ad0bca48f2ab00c87346665643f64f
 F src/parse.y 83df51fea35f68f7e07384d75dce83d1ed30434c
 F src/pragma.c 4496cc77dc35824e1c978c3d1413b8a5a4c777d3
-F src/prepare.c 0f672b97f457a12aa775e46a90e40f71f1b7f680
+F src/prepare.c 1058dcb102005a880d757551d52a0a2830c05f27
 F src/printf.c f47a2f4b5387cd2ebb12e9117a1a5d6bd9a2b812
 F src/random.c d40f8d356cecbd351ccfab6eaedd7ec1b54f5261
-F src/select.c 7b19d350cb2a18ae4a59d6b87049aa2ce9c671ae
+F src/select.c 28d449c7762dd580aaba49a9c6c16e93ca951e49
 F src/server.c e425729aa7ff374637033a38ba9fd9938c432244
 F src/shell.c 66b073375efbdee19045e7e0cd38b85f9aff71da
 F src/sqlite.h.in 492580f7e3ff71eb43193eb7bb98e2d549889ce3
-F src/sqliteInt.h e6f12c4a7393018715d4ffb71666f6799df44917
+F src/sqliteInt.h ed482d6de58fa79000f9c3bb00d7740126fb55fb
 F src/table.c 486dcfce532685b53b5a2b5da8bba0ded6fb2316
 F src/tclsqlite.c d650bea0248fc0a310ddc2cb94273a3a5021fddf
 F src/test1.c 30ed0d4d594db0bb2beb98be7024cde1fe686f14
@@ -84,17 +84,17 @@ F src/test_async.c 6776f5027ca6378c116ff5ccc2fe41b908e33772
 F src/tokenize.c 8b694d42b48f22c2037da7e1e716201aaaaa0f3a
 F src/trigger.c 694b247476d2fc0dce003af564f79e8752fc1158
 F src/update.c 261d75c702c2852d1a64274d7c414485e6f2d177
-F src/utf.c b7bffac4260177ae7f83c01d025fe0f5ed70ce71
-F src/util.c 1d751152ab36d2756deec68e576366f58b73968f
+F src/utf.c 5ab8ca05d4e9ec81174b010f01ab12a232f0087d
+F src/util.c b26be916edd1c991450cccc6503356c4f776598b
 F src/vacuum.c 21a3c7f6f7be86bb1182fbc3df416ad702435b9e
-F src/vdbe.c f77826242cea1789990bc8ee590a30827d514475
+F src/vdbe.c 9e64780853ead129babe0c42462c7eb661e532f6
 F src/vdbe.h 8729a4ee16ff9aeab2af9667df3cf300ff978e13
 F src/vdbeInt.h 5451cf71f229e366ac543607c0a17f36e5737ea9
 F src/vdbeapi.c afd3837cea0dec93dcb4724d073c84fa0da68e23
-F src/vdbeaux.c 23ff126058826a41405f1cd4bff800476d6c633c
+F src/vdbeaux.c 1d765d671ae31a067b2b064c3f193690f91eea62
 F src/vdbefifo.c 9efb94c8c3f4c979ebd0028219483f88e57584f5
 F src/vdbemem.c dd08a0eea4868ac4a2d91fdec32424308b1db772
-F src/where.c a8ba7f4aa2f38166e9f89ecc5dafbdbf41942031
+F src/where.c a12b4542f6cee2f2180854c2e16bef84225866ec
 F tclinstaller.tcl 046e3624671962dc50f0481d7c25b38ef803eb42
 F test/all.test a23fcbbf1f53515bde840d78732a6d94c673b327
 F test/alter.test b94b640063e725d062b2997bd2810ac39195c718
@@ -340,7 +340,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
 F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
-P c780152f3cff9c0a13d231935ae3c2e2d28b4460
-R faee7b6f93f8c539141e3d35033db1a4
-U drh
-Z 5297e80bacccd6731d8a506f98111dd3
+P 48b550ce2ea43c7c1c59cd43d0008ba18fc0215b
+R 6c60b8d6c2a158ae481c8f06f49dfdff
+U danielk1977
+Z 1089e014c07372cc03784a37d45ba046
index 69df06db9850d2725d08a2f684c7d8b748c566be..99dfe2b62f7d2d3511b847f7ee24f27352e845f8 100644 (file)
@@ -1 +1 @@
-48b550ce2ea43c7c1c59cd43d0008ba18fc0215b
\ No newline at end of file
+dd705955429d847af85ffaf248976bcd1d861852
\ No newline at end of file
index ec079f7b99b1e4a4d832cf2c957b7c89b5069f28..a5bddbde79e3f65dfcd2932c5bc0bb64c6aa18c8 100644 (file)
@@ -9,7 +9,7 @@
 **    May you share freely, never taking more than you give.
 **
 *************************************************************************
-** $Id: btree.c,v 1.295 2006/01/13 04:31:58 drh Exp $
+** $Id: btree.c,v 1.296 2006/01/13 06:33:24 danielk1977 Exp $
 **
 ** This file implements a external (disk-based) database using BTrees.
 ** For a detailed discussion of BTrees, refer to
@@ -581,24 +581,26 @@ static int saveAllCursors(BtShared *pBt, Pgno iRoot, BtCursor *pExcept){
 ** returning the cursor to it's saved position, any saved position is deleted
 ** and the cursor state set to CURSOR_INVALID.
 */
-static int restoreOrClearCursorPosition(BtCursor *pCur, int doSeek){
+static int restoreOrClearCursorPositionX(BtCursor *pCur, int doSeek){
   int rc = SQLITE_OK;
-  if( pCur->eState==CURSOR_REQUIRESEEK ){
-    assert( sqlite3ThreadDataReadOnly()->useSharedData );
-    if( doSeek ){
-      rc = sqlite3BtreeMoveto(pCur, pCur->pKey, pCur->nKey, &pCur->skip);
-    }else{
-      pCur->eState = CURSOR_INVALID;
-    }
-    if( rc==SQLITE_OK ){
-      sqliteFree(pCur->pKey);
-      pCur->pKey = 0;
-      assert( CURSOR_VALID==pCur->eState || CURSOR_INVALID==pCur->eState );
-    }
+  assert( sqlite3ThreadDataReadOnly()->useSharedData );
+  assert( pCur->eState==CURSOR_REQUIRESEEK );
+  if( doSeek ){
+    rc = sqlite3BtreeMoveto(pCur, pCur->pKey, pCur->nKey, &pCur->skip);
+  }else{
+    pCur->eState = CURSOR_INVALID;
+  }
+  if( rc==SQLITE_OK ){
+    sqliteFree(pCur->pKey);
+    pCur->pKey = 0;
+    assert( CURSOR_VALID==pCur->eState || CURSOR_INVALID==pCur->eState );
   }
   return rc;
 }
 
+#define restoreOrClearCursorPosition(p,x) \
+  (p->eState==CURSOR_REQUIRESEEK?restoreOrClearCursorPositionX(p,x):SQLITE_OK)
+
 /*
 ** Query to see if btree handle p may obtain a lock of type eLock 
 ** (READ_LOCK or WRITE_LOCK) on the table with root-page iTab. Return
index 1563e12560951ff490d6ca96743eab0fce2cc806..e65c34f9616acb788d144bb44b400eb14e1dbe2c 100644 (file)
@@ -22,7 +22,7 @@
 **     COMMIT
 **     ROLLBACK
 **
-** $Id: build.c,v 1.378 2006/01/12 01:56:44 drh Exp $
+** $Id: build.c,v 1.379 2006/01/13 06:33:24 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -1173,7 +1173,7 @@ void sqlite3AddCollateType(Parse *pParse, const char *zType, int nType){
 
   if( sqlite3LocateCollSeq(pParse, zType, nType) ){
     Index *pIdx;
-    p->aCol[i].zColl = sqlite3StrNDup(zType, nType);
+    p->aCol[i].zColl = sqliteStrNDup(zType, nType);
   
     /* If the column is declared as "<name> PRIMARY KEY COLLATE <type>",
     ** then an index may have been created on this column before the
@@ -3153,7 +3153,7 @@ void sqlite3Reindex(Parse *pParse, Token *pName1, Token *pName2){
     assert( pName1->z );
     pColl = sqlite3FindCollSeq(db, ENC(db), (char*)pName1->z, pName1->n, 0);
     if( pColl ){
-      char *z = sqlite3StrNDup(pName1->z, pName1->n);
+      char *z = sqliteStrNDup(pName1->z, pName1->n);
       if( z ){
         reindexDatabases(pParse, z);
         sqliteFree(z);
index 108f69db03127e95605c736265c0c9d85205c917..e8a89f464bdd0bd6cc5e7ecaac1082609b73ab77 100644 (file)
@@ -12,7 +12,7 @@
 ** This file contains routines used for analyzing expressions and
 ** for generating VDBE code that evaluates expressions in SQLite.
 **
-** $Id: expr.c,v 1.248 2006/01/11 21:41:22 drh Exp $
+** $Id: expr.c,v 1.249 2006/01/13 06:33:24 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -355,7 +355,7 @@ void sqlite3ExprAssignVarNumber(Parse *pParse, Expr *pExpr){
       pExpr->iTable = ++pParse->nVar;
       if( pParse->nVarExpr>=pParse->nVarExprAlloc-1 ){
         pParse->nVarExprAlloc += pParse->nVarExprAlloc + 10;
-        sqlite3ReallocOrFree((void**)&pParse->apVarExpr,
+        sqliteReallocOrFree((void**)&pParse->apVarExpr,
                        pParse->nVarExprAlloc*sizeof(pParse->apVarExpr[0]) );
       }
       if( !sqlite3ThreadDataReadOnly()->mallocFailed ){
index a03b6218ed50af77ddc5e4bd51e9c41d9626d9d7..08b53942df37a35a9e7052d15eaab87ff55d6c3f 100644 (file)
@@ -133,6 +133,7 @@ int sqlite3_open_file_count = 0;
 ** of the standard malloc(), realloc() and free() found in many operating
 ** systems. No rocket science here.
 */
+#ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
 void *sqlite3GenericMalloc(int n){
   char *p = (char *)malloc(n+8);
   assert(n>0);
@@ -158,3 +159,21 @@ void sqlite3GenericFree(void *p){
 int sqlite3GenericAllocationSize(void *p){
   return p ? *(int *)((char *)p - 8) : 0;
 }
+#else
+void *sqlite3GenericMalloc(int n){
+  char *p = (char *)malloc(n);
+  return (void *)p;
+}
+void *sqlite3GenericRealloc(void *p, int n){
+  assert(n>0);
+  p = realloc(p, n);
+  return p;
+}
+void sqlite3GenericFree(void *p){
+  assert(p);
+  free(p);
+}
+int sqlite3GenericAllocationSize(void *p){
+  assert(0);
+}
+#endif
index f9a368fbfaa18b05e562332c01494350123b9093..d8a495c674422580c257f572578c8334fe7d5256 100644 (file)
@@ -934,7 +934,7 @@ char *sqlite3WinFullPathname(const char *zRelative){
   if( cygwin_conv_to_full_win32_path(zRelative, zFull) ) return 0;
 #elif OS_WINCE
   /* WinCE has no concept of a relative pathname, or so I am told. */
-  zFull = sqlite3StrDup(zRelative);
+  zFull = sqliteStrDup(zRelative);
 #else
   char *zNotUsed;
   WCHAR *zWide;
index a1cc6a7a580d210da96bed8603fcaf060b19b94a..e7f13120fa48c65d1674308ff8d3b4cffbb2559d 100644 (file)
@@ -13,7 +13,7 @@
 ** interface, and routines that contribute to loading the database schema
 ** from disk.
 **
-** $Id: prepare.c,v 1.21 2006/01/12 12:43:36 drh Exp $
+** $Id: prepare.c,v 1.22 2006/01/13 06:33:24 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include "os.h"
@@ -322,8 +322,9 @@ static int sqlite3InitOne(sqlite3 *db, int iDb, char **pzErrMsg){
 ** created using ATTACH statements.  Return a success code.  If an
 ** error occurs, write an error message into *pzErrMsg.
 **
-** After the database is initialized, the SQLITE_Initialized
-** bit is set in the flags field of the sqlite structure. 
+** After a database is initialized, the DB_SchemaLoaded bit is set
+** bit is set in the flags field of the Db structure. If the database
+** file was of zero-length, then the DB_Empty flag is also set.
 */
 int sqlite3Init(sqlite3 *db, char **pzErrMsg){
   int i, rc;
index d0fff323c47987862e1da8f6da4d9c2311d829f2..4bfe81d14c1f4a6ebb4f8037df6865219d47c7c7 100644 (file)
@@ -12,7 +12,7 @@
 ** This file contains C code routines that are called by the parser
 ** to handle SELECT statements in SQLite.
 **
-** $Id: select.c,v 1.293 2006/01/11 21:41:22 drh Exp $
+** $Id: select.c,v 1.294 2006/01/13 06:33:24 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 
@@ -1034,7 +1034,7 @@ Table *sqlite3ResultSetOfSelect(Parse *pParse, char *zTabName, Select *pSelect){
     pCol->affinity = sqlite3ExprAffinity(p);
     pColl = sqlite3ExprCollSeq(pParse, p);
     if( pColl ){
-      pCol->zColl = sqlite3StrDup(pColl->zName);
+      pCol->zColl = sqliteStrDup(pColl->zName);
     }
   }
   pTab->iPKey = -1;
index 7c8e4e44ccdffc089c3ad79f79acb77cba213180..de97abb6795adf838a212a7808e8baacf1a48043 100644 (file)
@@ -11,7 +11,7 @@
 *************************************************************************
 ** Internal interface definitions for SQLite.
 **
-** @(#) $Id: sqliteInt.h,v 1.466 2006/01/12 17:20:51 drh Exp $
+** @(#) $Id: sqliteInt.h,v 1.467 2006/01/13 06:33:24 danielk1977 Exp $
 */
 #ifndef _SQLITEINT_H_
 #define _SQLITEINT_H_
@@ -285,6 +285,7 @@ extern int sqlite3_iMallocReset; /* Set iMallocFail to this when it reaches 0 */
 #define sqliteFree(x)          sqlite3FreeX(x)
 #define sqliteAllocSize(x)     sqlite3AllocSize(x)
 
+
 /*
 ** An instance of this structure might be allocated to store information
 ** specific to a single thread.
index b2534394d28d0af0bc8626f3753d342f7a2ff2bf..7261d5adb513ff0a37a8176af16c05b708b8ead6 100644 (file)
--- a/src/utf.c
+++ b/src/utf.c
@@ -12,7 +12,7 @@
 ** This file contains routines used to translate between UTF-8, 
 ** UTF-16, UTF-16BE, and UTF-16LE.
 **
-** $Id: utf.c,v 1.35 2005/12/15 22:34:01 drh Exp $
+** $Id: utf.c,v 1.36 2006/01/13 06:33:24 danielk1977 Exp $
 **
 ** Notes on UTF-8:
 **
@@ -464,7 +464,7 @@ char *sqlite3utf16to8(const void *z, int nByte){
   sqlite3VdbeChangeEncoding(&m, SQLITE_UTF8);
   assert( m.flags & MEM_Term );
   assert( m.flags & MEM_Str );
-  return (m.flags & MEM_Dyn)!=0 ? m.z : sqlite3StrDup(m.z);
+  return (m.flags & MEM_Dyn)!=0 ? m.z : sqliteStrDup(m.z);
 }
 
 /*
index e958755c215efd45ef319ce3747560f6c0c52a17..e64f1e6a73035c0db12374cf621dac051d94d12b 100644 (file)
@@ -14,7 +14,7 @@
 ** This file contains functions for allocating memory, comparing
 ** strings, and stuff like that.
 **
-** $Id: util.c,v 1.169 2006/01/12 01:25:18 drh Exp $
+** $Id: util.c,v 1.170 2006/01/13 06:33:24 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include "os.h"
@@ -647,9 +647,11 @@ void sqlite3ReallocOrFree(void **pp, int n){
 ** is the number of bytes that were available to SQLite using pointer p, 
 ** regardless of how much memory was actually allocated.
 */
+#if 0          /* This is never actually used */
 int sqlite3AllocSize(void *p){
   return OSSIZEOF(p);
 }
+#endif
 
 /*
 ** Make a copy of a string in memory obtained from sqliteMalloc(). These 
index 2837871e6333a25a06d74a73e4fead22168dc995..fffd92e738fbd8e96d039f9e3c28fcb674bf58d7 100644 (file)
@@ -43,7 +43,7 @@
 ** in this file for details.  If in doubt, do not deviate from existing
 ** commenting and indentation practices when changing or adding code.
 **
-** $Id: vdbe.c,v 1.526 2006/01/13 01:48:59 drh Exp $
+** $Id: vdbe.c,v 1.527 2006/01/13 06:33:24 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 #include "os.h"
@@ -4210,7 +4210,7 @@ case OP_ContextPush: {        /* no-push */
   /* FIX ME: This should be allocated as part of the vdbe at compile-time */
   if( i>=p->contextStackDepth ){
     p->contextStackDepth = i+1;
-    sqlite3ReallocOrFree((void**)&p->contextStack, sizeof(Context)*(i+1));
+    sqliteReallocOrFree((void**)&p->contextStack, sizeof(Context)*(i+1));
     if( p->contextStack==0 ) goto no_mem;
   }
   pContext = &p->contextStack[i];
index 59d4b6415b062c6649e22a2ae07eb617b74f51ea..2bdda2e47810fdd6513384451b54f700f467e644 100644 (file)
@@ -147,7 +147,7 @@ int sqlite3VdbeMakeLabel(Vdbe *p){
   assert( p->magic==VDBE_MAGIC_INIT );
   if( i>=p->nLabelAlloc ){
     p->nLabelAlloc = p->nLabelAlloc*2 + 10;
-    sqlite3ReallocOrFree((void**)&p->aLabel,
+    sqliteReallocOrFree((void**)&p->aLabel,
                           p->nLabelAlloc*sizeof(p->aLabel[0]));
   }
   if( p->aLabel ){
index bcb342ff99cdc7abc4ba93db5e8487e77d510d12..3c794672c1adab9431be437ac8ddc4a7b056249f 100644 (file)
@@ -16,7 +16,7 @@
 ** so is applicable.  Because this module is responsible for selecting
 ** indices, you might also think of this module as the "query optimizer".
 **
-** $Id: where.c,v 1.194 2006/01/11 21:41:22 drh Exp $
+** $Id: where.c,v 1.195 2006/01/13 06:33:25 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 
@@ -1210,7 +1210,7 @@ static void codeEqualityTerm(
     sqlite3VdbeAddOp(v, OP_Rewind, iTab, brk);
     VdbeComment((v, "# %.*s", pX->span.n, pX->span.z));
     pLevel->nIn++;
-    sqlite3ReallocOrFree((void**)&pLevel->aInLoop,
+    sqliteReallocOrFree((void**)&pLevel->aInLoop,
                                  sizeof(pLevel->aInLoop[0])*3*pLevel->nIn);
     aIn = pLevel->aInLoop;
     if( aIn ){