From: drh Date: Tue, 11 Jan 2005 17:59:47 +0000 (+0000) Subject: Allow '$' in the middle of identifiers. Ticket #1066. This is an X-Git-Tag: version-3.6.10~3955 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a0d1f663e1ed790040c81019011e0d3d00d054fc;p=thirdparty%2Fsqlite.git Allow '$' in the middle of identifiers. Ticket #1066. This is an experimental change. It might be backed out at a later date. (CVS 2197) FossilOrigin-Name: 00a352ea79e0e1e855282c54d0e470161215f25e --- diff --git a/manifest b/manifest index d6e5087805..a476551146 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Test\scoverage\simprovements\son\stokenize.c.\s(CVS\s2196) -D 2005-01-11T17:46:42 +C Allow\s'$'\sin\sthe\smiddle\sof\sidentifiers.\s\sTicket\s#1066.\s\sThis\sis\san\nexperimental\schange.\s\sIt\smight\sbe\sbacked\sout\sat\sa\slater\sdate.\s(CVS\s2197) +D 2005-01-11T17:59:48 F Makefile.in ecf441ac5ca1ccfc8748a8a9537706e69893dfa4 F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457 F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1 @@ -70,7 +70,7 @@ F src/test2.c b11fa244fff02190707dd0879987c37c75e61fc8 F src/test3.c a72f20066cccd5a7b9f20b7b78fa9b05b47b3020 F src/test4.c 7c6b9fc33dd1f3f93c7f1ee6e5e6d016afa6c1df F src/test5.c 64f08b2a50ef371a1bd68ff206829e7b1b9997f5 -F src/tokenize.c 2ad3d1ae1a0a70746db0b31a0a74f58050a3c39a +F src/tokenize.c c1d124ec41422c9ec14360ea3a1f98ca4acf7cf1 F src/trigger.c 98f3b07c08ba01b34cff139ef9687883d325ae8e F src/update.c 0979397c41ac29c54fe0cc687a356d8629a633af F src/utf.c e45ce11be6922408cd381561721f6cca7d3b992a @@ -268,7 +268,7 @@ F www/tclsqlite.tcl e73f8f8e5f20e8277619433f7970060ab01088fc F www/vdbe.tcl 095f106d93875c94b47367384ebc870517431618 F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0 F www/whentouse.tcl c3b50d3ac31c54be2a1af9b488a89d22f1e6e746 -P 3f46cd7767cf7c48dd1de7ae1c4104d6d1a609be -R 20f2a0dab63537f5c3dee30143439d82 +P 5767850ccadb3b53d14bca547e50f65de1d3092e +R 71bb19c51dd02cdb496badd87eed0c55 U drh -Z 389596d56c67cb78fa06091fbcccd7d8 +Z bf2e03dddc8198df2fe40e1f78888259 diff --git a/manifest.uuid b/manifest.uuid index 683778b20b..9bfbfe0515 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5767850ccadb3b53d14bca547e50f65de1d3092e \ No newline at end of file +00a352ea79e0e1e855282c54d0e470161215f25e \ No newline at end of file diff --git a/src/tokenize.c b/src/tokenize.c index 5ae6613794..725223cef5 100644 --- a/src/tokenize.c +++ b/src/tokenize.c @@ -15,7 +15,7 @@ ** individual tokens and sends those tokens one-by-one over to the ** parser for analysis. ** -** $Id: tokenize.c,v 1.97 2004/11/12 13:42:31 danielk1977 Exp $ +** $Id: tokenize.c,v 1.98 2005/01/11 17:59:48 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -49,9 +49,15 @@ ** with the high-order bit set. The latter rule means that ** any sequence of UTF-8 characters or characters taken from ** an extended ISO8859 character set can form an identifier. +** +** Ticket #1066. the SQL standard does not allow '$' in the +** middle of identfiers. But many SQL implementations do. +** SQLite will allow '$' in identifiers for compatibility. +** But the feature is undocumented. */ static const char isIdChar[] = { /* x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF */ + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 2x */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, /* 3x */ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 4x */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, /* 5x */ @@ -59,7 +65,7 @@ static const char isIdChar[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, /* 7x */ }; -#define IdChar(C) (((c=C)&0x80)!=0 || (c>0x2f && isIdChar[c-0x30])) +#define IdChar(C) (((c=C)&0x80)!=0 || (c>0x1f && isIdChar[c-0x20])) /* ** Return the length of the token that begins at z[0].