]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Correctly parser column typenames that contain more than one identifier.
authordrh <drh@noemail.net>
Thu, 30 Sep 2004 14:22:47 +0000 (14:22 +0000)
committerdrh <drh@noemail.net>
Thu, 30 Sep 2004 14:22:47 +0000 (14:22 +0000)
Ticket #934. (CVS 1990)

FossilOrigin-Name: 85ad18712d2bd2b4322ceb617f33c265c1933240

manifest
manifest.uuid
src/build.c
src/parse.y

index 274e4a0223e4acce4f35ebea98c9c6f8e68ea73b..421b0e72f61abcb4fcf6c36ec55b690ca61fe955 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Allow\sfunctions\sto\sbe\screated\swhen\sthere\sare\soutstanding\sVMs.\n(Ticket\s#926)\s\sFix\sproblems\swith\ssqlite3_errcode().\s\sAdd\stests\sfor\nsqlite3_errcode().\s(CVS\s1989)
-D 2004-09-30T13:43:13
+C Correctly\sparser\scolumn\stypenames\sthat\scontain\smore\sthan\sone\sidentifier.\nTicket\s#934.\s(CVS\s1990)
+D 2004-09-30T14:22:47
 F Makefile.in abdeb5bd9d017822691884935c320037c33f6ee6
 F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457
 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@@ -30,7 +30,7 @@ F src/attach.c e49d09dad9f5f9fb10b4b0c1be5a70ae4c45e689
 F src/auth.c 3b81f2a42f48a62c2c9c9b0eda31a157c681edea
 F src/btree.c 014d3c9d31136050f3b3294c0c5dc0c7615557bf
 F src/btree.h 94dfec0a1722d33359b23e7e310f2b64ffedf029
-F src/build.c 86318bdcd291919d4f87700385fdb73146436531
+F src/build.c 2ed6d9c26ad736142012bc99898869db17337121
 F src/date.c eb8d5fa1a6d5cfc09031c8852d10ff742a94b15b
 F src/delete.c d862b383a9abc0b79f4588783c2619fe52d74ea7
 F src/expr.c f255c5c56c0371cb2955cbc2733621051e4f79f8
@@ -53,7 +53,7 @@ F src/os_win.c 9e2887825b1a32f0ceb1b73b93ffe29a112cd86f
 F src/os_win.h babd4e912967c6b09088cfe38a45e8005a07ba44
 F src/pager.c 705a61117f05d7dd031762408f9a279834e88c3a
 F src/pager.h 67739fe649f33be55dba522ca8a9cc4e42d14f71
-F src/parse.y 52ca09eec10fdce4e6a8b4005e89209154b6cfb7
+F src/parse.y 968231351dd13ef6ee544336295db54708c22faf
 F src/pragma.c 45978cc82fdf91f00d024a8e875c2b679fbce488
 F src/printf.c 40770e1f553612d13dfc86d236086e69baa62fe1
 F src/random.c eff68e3f257e05e81eae6c4d50a51eb88beb4ff3
@@ -247,7 +247,7 @@ F www/tclsqlite.tcl 560ecd6a916b320e59f2917317398f3d59b7cc25
 F www/vdbe.tcl 59288db1ac5c0616296b26dce071c36cb611dfe9
 F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0
 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P b15abf984fa06ae968d92fa9533dab20dcebd323
-R 8f6137a115115a381df787e036d26411
+P d0f1dc5898382258b283308c2cce55a8bc378ee4
+R aa5092649a19379f2aef61459f86a3f4
 U drh
-Z 0f9579e4a88ed7070472b7f1aab3addc
+Z bc0a1170a8e5cf89cf6852a70795a98a
index 678ccb19a97a1e4aee1ac8f204dd46d71ab82cd1..3413e9e666da56cb62589ab2378b8baf20f29849 100644 (file)
@@ -1 +1 @@
-d0f1dc5898382258b283308c2cce55a8bc378ee4
\ No newline at end of file
+85ad18712d2bd2b4322ceb617f33c265c1933240
\ No newline at end of file
index 94c63148012f5c6bd5e131d6cc4f7e9bfe797007..f4deb51829fe8e4fa721ebb91c46238a18d73d4b 100644 (file)
@@ -23,7 +23,7 @@
 **     ROLLBACK
 **     PRAGMA
 **
-** $Id: build.c,v 1.254 2004/09/25 14:39:18 drh Exp $
+** $Id: build.c,v 1.255 2004/09/30 14:22:47 drh Exp $
 */
 #include "sqliteInt.h"
 #include <ctype.h>
@@ -784,7 +784,7 @@ void sqlite3AddColumnType(Parse *pParse, Token *pFirst, Token *pLast){
   if( i<0 ) return;
   pCol = &p->aCol[i];
   pz = &pCol->zType;
-  n = pLast->n + Addr(pLast->z) - Addr(pFirst->z);
+  n = pLast->n + (pLast->z - pFirst->z);
   assert( pCol->zType==0 );
   z = pCol->zType = sqlite3MPrintf("%.*s", n, pFirst->z);
   if( z==0 ) return;
index 71111bcc8b7324a9d9c05ea543c24e83fe600798..8d42dfd479f244f3a4ccf8a70ae6efcee129baab 100644 (file)
@@ -14,7 +14,7 @@
 ** the parser.  Lemon will also generate a header file containing
 ** numeric codes for all of the tokens.
 **
-** @(#) $Id: parse.y,v 1.138 2004/09/25 15:29:09 drh Exp $
+** @(#) $Id: parse.y,v 1.139 2004/09/30 14:22:47 drh Exp $
 */
 %token_prefix TK_
 %token_type {Token}
@@ -168,7 +168,7 @@ type ::= typename(X) LP signed COMMA signed RP(Y).
                                          {sqlite3AddColumnType(pParse,&X,&Y);}
 %type typename {Token}
 typename(A) ::= ids(X).             {A = X;}
-typename(A) ::= typename(X) ids(Y). {A.z=X.z; A.n=X.n+Addr(Y.z)-Addr(X.z);}
+typename(A) ::= typename(X) ids(Y). {A.z=X.z; A.n=Y.n+(Y.z-X.z);}
 %type signed {int}
 signed(A) ::= INTEGER(X).         { A = atoi(X.z); }
 signed(A) ::= PLUS INTEGER(X).    { A = atoi(X.z); }