Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Correctly parser column typenames that contain more than one identifier. Ticket #934. (CVS 1990) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
85ad18712d2bd2b4322ceb617f33c265 |
User & Date: | drh 2004-09-30 14:22:47.000 |
Context
2004-09-30
| ||
14:24 | Strict prototype on sqlite3_libversion(). Ticket #936 (CVS 1991) (check-in: 1d3c6f7351 user: drh tags: trunk) | |
14:22 | Correctly parser column typenames that contain more than one identifier. Ticket #934. (CVS 1990) (check-in: 85ad18712d user: drh tags: trunk) | |
13:43 | Allow functions to be created when there are outstanding VMs. (Ticket #926) Fix problems with sqlite3_errcode(). Add tests for sqlite3_errcode(). (CVS 1989) (check-in: d0f1dc5898 user: drh tags: trunk) | |
Changes
Changes to src/build.c.
︙ | ︙ | |||
19 20 21 22 23 24 25 | ** DROP INDEX ** creating ID lists ** BEGIN TRANSACTION ** COMMIT ** ROLLBACK ** PRAGMA ** | | | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | ** DROP INDEX ** creating ID lists ** BEGIN TRANSACTION ** COMMIT ** ROLLBACK ** PRAGMA ** ** $Id: build.c,v 1.255 2004/09/30 14:22:47 drh Exp $ */ #include "sqliteInt.h" #include <ctype.h> /* ** This routine is called when a new SQL statement is beginning to ** be parsed. Check to see if the schema for the database needs |
︙ | ︙ | |||
780 781 782 783 784 785 786 | char *z, **pz; Column *pCol; if( (p = pParse->pNewTable)==0 ) return; i = p->nCol-1; if( i<0 ) return; pCol = &p->aCol[i]; pz = &pCol->zType; | | | 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 | char *z, **pz; Column *pCol; if( (p = pParse->pNewTable)==0 ) return; i = p->nCol-1; if( i<0 ) return; pCol = &p->aCol[i]; pz = &pCol->zType; n = pLast->n + (pLast->z - pFirst->z); assert( pCol->zType==0 ); z = pCol->zType = sqlite3MPrintf("%.*s", n, pFirst->z); if( z==0 ) return; for(i=j=0; z[i]; i++){ int c = z[i]; if( isspace(c) ) continue; z[j++] = c; |
︙ | ︙ |
Changes to src/parse.y.
︙ | ︙ | |||
10 11 12 13 14 15 16 | ** ************************************************************************* ** This file contains SQLite's grammar for SQL. Process this file ** using the lemon parser generator to generate C code that runs ** the parser. Lemon will also generate a header file containing ** numeric codes for all of the tokens. ** | | | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ** ************************************************************************* ** This file contains SQLite's grammar for SQL. Process this file ** using the lemon parser generator to generate C code that runs ** the parser. Lemon will also generate a header file containing ** numeric codes for all of the tokens. ** ** @(#) $Id: parse.y,v 1.139 2004/09/30 14:22:47 drh Exp $ */ %token_prefix TK_ %token_type {Token} %default_type {Token} %extra_argument {Parse *pParse} %syntax_error { if( pParse->zErrMsg==0 ){ |
︙ | ︙ | |||
164 165 166 167 168 169 170 | type ::= . type ::= typename(X). {sqlite3AddColumnType(pParse,&X,&X);} type ::= typename(X) LP signed RP(Y). {sqlite3AddColumnType(pParse,&X,&Y);} type ::= typename(X) LP signed COMMA signed RP(Y). {sqlite3AddColumnType(pParse,&X,&Y);} %type typename {Token} typename(A) ::= ids(X). {A = X;} | | | 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 | type ::= . type ::= typename(X). {sqlite3AddColumnType(pParse,&X,&X);} type ::= typename(X) LP signed RP(Y). {sqlite3AddColumnType(pParse,&X,&Y);} 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=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); } signed(A) ::= MINUS INTEGER(X). { A = -atoi(X.z); } carglist ::= carglist carg. carglist ::= . carg ::= CONSTRAINT nm ccons. |
︙ | ︙ |