From ba21256f98b56970db401c33ee855d79a96d4b2b Mon Sep 17 00:00:00 2001 From: drh Date: Thu, 8 Jan 2004 02:17:31 +0000 Subject: [PATCH] Remove unused code and tighten existing code to make the library a little smaller. (CVS 1168) FossilOrigin-Name: 34a6b7416c6c9bcdf301f5e7b072a0362a746105 --- manifest | 18 ++-- manifest.uuid | 2 +- src/date.c | 67 ++++++------- src/hash.c | 8 +- src/hash.h | 4 +- src/tokenize.c | 248 ++++++++++++++++++++++++------------------------- 6 files changed, 169 insertions(+), 178 deletions(-) diff --git a/manifest b/manifest index 80558853f0..b05a19d7d3 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Rework\sthe\sfix\sto\sticket\s#461\sso\sthat\swe\sdo\snot\shave\sto\sdo\sredundant\stests\nof\sWHERE\sclause\sterms\slooking\sfor\sNULLs.\s\sSee\salso\scheck-in\s(1103).\s(CVS\s1167) -D 2004-01-07T20:37:52 +C Remove\sunused\scode\sand\stighten\sexisting\scode\sto\smake\sthe\slibrary\sa\slittle\nsmaller.\s(CVS\s1168) +D 2004-01-08T02:17:32 F Makefile.in 0515ff9218ad8d5a8f6220f0494b8ef94c67013b F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd @@ -28,13 +28,13 @@ F src/btree.h 9b7c09f1e64274d7bb74a57bbfc63778f67b1048 F src/btree_rb.c e4084b6a12270674b0cd7034655f55e6a2639c78 F src/build.c a7493c433de5b552f9535d8fa7ed80aaf135491e F src/copy.c 9e47975ea96751c658bcf1a0c4f0bb7c6ee61e73 -F src/date.c eef0ccd9d0b1d9fe74ed2ae8e247578be3f49bc4 +F src/date.c bb89fdb9c89e367b9a728c58cb96e4823974a2c1 F src/delete.c 0f81e6799c089487615d38e042a2de4d2d6192bc F src/encode.c 25ea901a9cefb3d93774afa4a06b57cb58acf544 F src/expr.c abb40922fa9995aca06f999ed35d2061d44650d6 F src/func.c 62cf8fae8147c0301d1c6a4a94fe0a78f7aa5b33 -F src/hash.c 058f077c1f36f266581aa16f907a3903abf64aa3 -F src/hash.h cd0433998bc1a3759d244e1637fe5a3c13b53bf8 +F src/hash.c 9b56ef3b291e25168f630d5643a4264ec011c70e +F src/hash.h 3247573ab95b9dd90bcca0307a75d9a16da1ccc7 F src/insert.c 01f66866f35c986eab4a57373ca689a3255ef2df F src/main.c 3dd3cae00bade294011da5a3cf9ff660a610c545 F src/md5.c fe4f9c9c6f71dfc26af8da63e4d04489b1430565 @@ -58,7 +58,7 @@ F src/test2.c 5014337d8576b731cce5b5a14bec4f0daf432700 F src/test3.c 30985ebdfaf3ee1462a9b0652d3efbdc8d9798f5 F src/test4.c dcbbbb382626fd466a7c46907f74db35fc8bad64 F src/threadtest.c d641a5219e718e18a1a80a50eb9bb549f451f42e -F src/tokenize.c 5597df1fd76d6947e7da824856ac1910e2055729 +F src/tokenize.c 8c95dcd2620b18dc0db1cdc97f9e111d11e55fe0 F src/trigger.c ce83e017b407d046e909d05373d7f8ee70f9f7f9 F src/update.c 24260b4fda00c9726d27699a0561d53c0dccc397 F src/util.c 64995b5949a5d377629ffd2598747bc771cade1e @@ -179,7 +179,7 @@ F www/speed.tcl 2f6b1155b99d39adb185f900456d1d592c4832b3 F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1 -P 03636c94a542b1f90a3acfbe65a9c2976872073f -R 747698ac4eca9128ab63b6b98ff5a6c2 +P 5fd581787e88173f0303f870fc956ec9285cca4e +R 42e0a61dd74faeac7023df4a5dc43247 U drh -Z af269badac40ad362e9b5738b29d6b42 +Z 17125e9495da03df5ae68d60c6a8dbf2 diff --git a/manifest.uuid b/manifest.uuid index 42d2dbe1b5..9dd9f1351a 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5fd581787e88173f0303f870fc956ec9285cca4e \ No newline at end of file +34a6b7416c6c9bcdf301f5e7b072a0362a746105 \ No newline at end of file diff --git a/src/date.c b/src/date.c index 4e5e46e0a8..4700cde15f 100644 --- a/src/date.c +++ b/src/date.c @@ -16,7 +16,7 @@ ** sqliteRegisterDateTimeFunctions() found at the bottom of the file. ** All other code has file scope. ** -** $Id: date.c,v 1.7 2004/01/07 03:29:16 drh Exp $ +** $Id: date.c,v 1.8 2004/01/08 02:17:32 drh Exp $ ** ** NOTES: ** @@ -221,7 +221,7 @@ static void computeJD(DateTime *p){ M = p->M; D = p->D; }else{ - Y = 2000; + Y = 2000; /* If no YMD specified, assume 2000-Jan-01 */ M = 1; D = 1; } @@ -368,6 +368,23 @@ static void computeHMS(DateTime *p){ p->validHMS = 1; } +/* +** Compute both YMD and HMS +*/ +static void computeYMD_HMS(DateTime *p){ + computeYMD(p); + computeHMS(p); +} + +/* +** Clear the YMD and HMS and the TZ +*/ +static void clearYMD_HMS_TZ(DateTime *p){ + p->validYMD = 0; + p->validHMS = 0; + p->validTZ = 0; +} + /* ** Compute the difference (in days) between localtime and UTC (a.k.a. GMT) ** for the time value p where p is in UTC. @@ -376,9 +393,8 @@ static double localtimeOffset(DateTime *p){ DateTime x, y; time_t t; struct tm *pTm; - computeYMD(p); - computeHMS(p); x = *p; + computeYMD_HMS(&x); if( x.Y<1971 || x.Y>=2038 ){ x.Y = 2000; x.M = 1; @@ -408,9 +424,6 @@ static double localtimeOffset(DateTime *p){ y.validJD = 0; y.validTZ = 0; computeJD(&y); - /* printf("x=%d-%02d-%02d %02d:%02d:%02d\n",x.Y,x.M,x.D,x.h,x.m,(int)x.s); */ - /* printf("y=%d-%02d-%02d %02d:%02d:%02d\n",y.Y,y.M,y.D,y.h,y.m,(int)y.s); */ - /* printf("diff=%.17g\n", y.rJD - x.rJD); */ return y.rJD - x.rJD; } @@ -454,9 +467,7 @@ static int parseModifier(const char *zMod, DateTime *p){ if( strcmp(z, "localtime")==0 ){ computeJD(p); p->rJD += localtimeOffset(p); - p->validYMD = 0; - p->validHMS = 0; - p->validTZ = 0; + clearYMD_HMS_TZ(p); rc = 0; } break; @@ -470,22 +481,15 @@ static int parseModifier(const char *zMod, DateTime *p){ */ if( strcmp(z, "unixepoch")==0 && p->validJD ){ p->rJD = p->rJD/86400.0 + 2440587.5; - p->validYMD = 0; - p->validHMS = 0; - p->validTZ = 0; + clearYMD_HMS_TZ(p); rc = 0; }else if( strcmp(z, "utc")==0 ){ double c1; computeJD(p); c1 = localtimeOffset(p); p->rJD -= c1; - p->validYMD = 0; - p->validHMS = 0; - p->validTZ = 0; + clearYMD_HMS_TZ(p); p->rJD += c1 - localtimeOffset(p); - p->validYMD = 0; - p->validHMS = 0; - p->validTZ = 0; rc = 0; } break; @@ -501,8 +505,7 @@ static int parseModifier(const char *zMod, DateTime *p){ if( strncmp(z, "weekday ", 8)==0 && getValue(&z[8],&r)>0 && (n=r)==r && n>=0 && r<7 ){ int Z; - computeYMD(p); - computeHMS(p); + computeYMD_HMS(p); p->validTZ = 0; p->validJD = 0; computeJD(p); @@ -510,8 +513,7 @@ static int parseModifier(const char *zMod, DateTime *p){ Z %= 7; if( Z>n ) Z -= 7; p->rJD += n - Z; - p->validYMD = 0; - p->validHMS = 0; + clearYMD_HMS_TZ(p); rc = 0; } break; @@ -569,18 +571,14 @@ static int parseModifier(const char *zMod, DateTime *p){ if( n==3 && strcmp(z,"day")==0 ){ p->rJD += r; }else if( n==4 && strcmp(z,"hour")==0 ){ - computeJD(p); p->rJD += r/24.0; }else if( n==6 && strcmp(z,"minute")==0 ){ - computeJD(p); p->rJD += r/(24.0*60.0); }else if( n==6 && strcmp(z,"second")==0 ){ - computeJD(p); p->rJD += r/(24.0*60.0*60.0); }else if( n==5 && strcmp(z,"month")==0 ){ int x, y; - computeYMD(p); - computeHMS(p); + computeYMD_HMS(p); p->M += r; x = p->M>0 ? (p->M-1)/12 : (p->M-12)/12; p->Y += x; @@ -592,17 +590,14 @@ static int parseModifier(const char *zMod, DateTime *p){ p->rJD += (r - y)*30.0; } }else if( n==4 && strcmp(z,"year")==0 ){ - computeYMD(p); - computeHMS(p); + computeYMD_HMS(p); p->Y += r; p->validJD = 0; computeJD(p); }else{ rc = 1; } - p->validYMD = 0; - p->validHMS = 0; - p->validTZ = 0; + clearYMD_HMS_TZ(p); break; } default: { @@ -656,8 +651,7 @@ static void datetimeFunc(sqlite_func *context, int argc, const char **argv){ DateTime x; if( isDate(argc, argv, &x)==0 ){ char zBuf[100]; - computeYMD(&x); - computeHMS(&x); + computeYMD_HMS(&x); sprintf(zBuf, "%04d-%02d-%02d %02d:%02d:%02d",x.Y, x.M, x.D, x.h, x.m, (int)(x.s)); sqlite_set_result_string(context, zBuf, -1); @@ -760,8 +754,7 @@ static void strftimeFunc(sqlite_func *context, int argc, const char **argv){ if( z==0 ) return; } computeJD(&x); - computeYMD(&x); - computeHMS(&x); + computeYMD_HMS(&x); for(i=j=0; zFmt[i]; i++){ if( zFmt[i]!='%' ){ z[j++] = zFmt[i]; diff --git a/src/hash.c b/src/hash.c index bb2291c6f3..c7feea8fd8 100644 --- a/src/hash.c +++ b/src/hash.c @@ -12,7 +12,7 @@ ** This is the implementation of generic hash-tables ** used in SQLite. ** -** $Id: hash.c,v 1.10 2003/05/12 23:06:53 drh Exp $ +** $Id: hash.c,v 1.11 2004/01/08 02:17:33 drh Exp $ */ #include "sqliteInt.h" #include @@ -75,6 +75,7 @@ static int intCompare(const void *pKey1, int n1, const void *pKey2, int n2){ return n2 - n1; } +#if 0 /* NOT USED */ /* ** Hash and comparison functions when the mode is SQLITE_HASH_POINTER */ @@ -87,6 +88,7 @@ static int ptrCompare(const void *pKey1, int n1, const void *pKey2, int n2){ if( pKey1pNext){ + for(i=aiHashTable[h]; i; i=p->iNext){ + p = &aKeywordTable[i-1]; if( p->len==n && sqliteStrNICmp(p->zName, z, n)==0 ){ return p->tokenType; } @@ -185,8 +185,12 @@ int sqliteKeywordCode(const char *z, int n){ /* -** If X is a character that can be used in an identifier then -** isIdChar[X] will be 1. Otherwise isIdChar[X] will be 0. +** If X is a character that can be used in an identifier and +** X&0x80==0 then isIdChar[X] will be 1. If X&0x80==0x80 then +** X is always an identifier character. (Hence all UTF-8 +** characters can be part of an identifier). isIdChar[X] will +** be 0 for every character in the lower 128 ASCII characters +** that cannot be used as part of an identifier. ** ** In this implementation, an identifier can be a string of ** alphabetic characters, digits, and "_" plus any character @@ -204,14 +208,6 @@ static const char isIdChar[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 5x */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 6x */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* 7x */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 8x */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 9x */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* Ax */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* Bx */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* Cx */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* Dx */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* Ex */ - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* Fx */ }; @@ -380,10 +376,10 @@ static int sqliteGetToken(const unsigned char *z, int *tokenType){ return 1; } default: { - if( !isIdChar[*z] ){ + if( (*z&0x80)==0 && !isIdChar[*z] ){ break; } - for(i=1; isIdChar[z[i]]; i++){} + for(i=1; (z[i]&0x80)!=0 || isIdChar[z[i]]; i++){} *tokenType = sqliteKeywordCode((char*)z, i); return i; }