Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(254)

Side by Side Diff: third_party/sqlite/src/src/parse.y

Issue 1022423004: [sqlite backport] Fix collation dequoting. (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/sqlite/src/src/expr.c ('k') | third_party/sqlite/src/src/sqliteInt.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 ** 2001 September 15 2 ** 2001 September 15
3 ** 3 **
4 ** The author disclaims copyright to this source code. In place of 4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing: 5 ** a legal notice, here is a blessing:
6 ** 6 **
7 ** May you do good and not evil. 7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others. 8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give. 9 ** May you share freely, never taking more than you give.
10 ** 10 **
(...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 A.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0, &X); 847 A.pExpr = sqlite3PExpr(pParse, TK_REGISTER, 0, 0, &X);
848 if( A.pExpr ) sqlite3GetInt32(&X.z[1], &A.pExpr->iTable); 848 if( A.pExpr ) sqlite3GetInt32(&X.z[1], &A.pExpr->iTable);
849 } 849 }
850 }else{ 850 }else{
851 spanExpr(&A, pParse, TK_VARIABLE, &X); 851 spanExpr(&A, pParse, TK_VARIABLE, &X);
852 sqlite3ExprAssignVarNumber(pParse, A.pExpr); 852 sqlite3ExprAssignVarNumber(pParse, A.pExpr);
853 } 853 }
854 spanSet(&A, &X, &X); 854 spanSet(&A, &X, &X);
855 } 855 }
856 expr(A) ::= expr(E) COLLATE ids(C). { 856 expr(A) ::= expr(E) COLLATE ids(C). {
857 A.pExpr = sqlite3ExprAddCollateToken(pParse, E.pExpr, &C); 857 A.pExpr = sqlite3ExprAddCollateToken(pParse, E.pExpr, &C, 1);
858 A.zStart = E.zStart; 858 A.zStart = E.zStart;
859 A.zEnd = &C.z[C.n]; 859 A.zEnd = &C.z[C.n];
860 } 860 }
861 %ifndef SQLITE_OMIT_CAST 861 %ifndef SQLITE_OMIT_CAST
862 expr(A) ::= CAST(X) LP expr(E) AS typetoken(T) RP(Y). { 862 expr(A) ::= CAST(X) LP expr(E) AS typetoken(T) RP(Y). {
863 A.pExpr = sqlite3PExpr(pParse, TK_CAST, E.pExpr, 0, &T); 863 A.pExpr = sqlite3PExpr(pParse, TK_CAST, E.pExpr, 0, &T);
864 spanSet(&A,&X,&Y); 864 spanSet(&A,&X,&Y);
865 } 865 }
866 %endif SQLITE_OMIT_CAST 866 %endif SQLITE_OMIT_CAST
867 expr(A) ::= id(X) LP distinct(D) exprlist(Y) RP(E). { 867 expr(A) ::= id(X) LP distinct(D) exprlist(Y) RP(E). {
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 uniqueflag(A) ::= . {A = OE_None;} 1193 uniqueflag(A) ::= . {A = OE_None;}
1194 1194
1195 %type idxlist {ExprList*} 1195 %type idxlist {ExprList*}
1196 %destructor idxlist {sqlite3ExprListDelete(pParse->db, $$);} 1196 %destructor idxlist {sqlite3ExprListDelete(pParse->db, $$);}
1197 %type idxlist_opt {ExprList*} 1197 %type idxlist_opt {ExprList*}
1198 %destructor idxlist_opt {sqlite3ExprListDelete(pParse->db, $$);} 1198 %destructor idxlist_opt {sqlite3ExprListDelete(pParse->db, $$);}
1199 1199
1200 idxlist_opt(A) ::= . {A = 0;} 1200 idxlist_opt(A) ::= . {A = 0;}
1201 idxlist_opt(A) ::= LP idxlist(X) RP. {A = X;} 1201 idxlist_opt(A) ::= LP idxlist(X) RP. {A = X;}
1202 idxlist(A) ::= idxlist(X) COMMA nm(Y) collate(C) sortorder(Z). { 1202 idxlist(A) ::= idxlist(X) COMMA nm(Y) collate(C) sortorder(Z). {
1203 Expr *p = sqlite3ExprAddCollateToken(pParse, 0, &C); 1203 Expr *p = sqlite3ExprAddCollateToken(pParse, 0, &C, 1);
1204 A = sqlite3ExprListAppend(pParse,X, p); 1204 A = sqlite3ExprListAppend(pParse,X, p);
1205 sqlite3ExprListSetName(pParse,A,&Y,1); 1205 sqlite3ExprListSetName(pParse,A,&Y,1);
1206 sqlite3ExprListCheckLength(pParse, A, "index"); 1206 sqlite3ExprListCheckLength(pParse, A, "index");
1207 if( A ) A->a[A->nExpr-1].sortOrder = (u8)Z; 1207 if( A ) A->a[A->nExpr-1].sortOrder = (u8)Z;
1208 } 1208 }
1209 idxlist(A) ::= nm(Y) collate(C) sortorder(Z). { 1209 idxlist(A) ::= nm(Y) collate(C) sortorder(Z). {
1210 Expr *p = sqlite3ExprAddCollateToken(pParse, 0, &C); 1210 Expr *p = sqlite3ExprAddCollateToken(pParse, 0, &C, 1);
1211 A = sqlite3ExprListAppend(pParse,0, p); 1211 A = sqlite3ExprListAppend(pParse,0, p);
1212 sqlite3ExprListSetName(pParse, A, &Y, 1); 1212 sqlite3ExprListSetName(pParse, A, &Y, 1);
1213 sqlite3ExprListCheckLength(pParse, A, "index"); 1213 sqlite3ExprListCheckLength(pParse, A, "index");
1214 if( A ) A->a[A->nExpr-1].sortOrder = (u8)Z; 1214 if( A ) A->a[A->nExpr-1].sortOrder = (u8)Z;
1215 } 1215 }
1216 1216
1217 %type collate {Token} 1217 %type collate {Token}
1218 collate(C) ::= . {C.z = 0; C.n = 0;} 1218 collate(C) ::= . {C.z = 0; C.n = 0;}
1219 collate(C) ::= COLLATE ids(X). {C = X;} 1219 collate(C) ::= COLLATE ids(X). {C = X;}
1220 1220
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
1464 with(A) ::= WITH wqlist(W). { A = W; } 1464 with(A) ::= WITH wqlist(W). { A = W; }
1465 with(A) ::= WITH RECURSIVE wqlist(W). { A = W; } 1465 with(A) ::= WITH RECURSIVE wqlist(W). { A = W; }
1466 1466
1467 wqlist(A) ::= nm(X) idxlist_opt(Y) AS LP select(Z) RP. { 1467 wqlist(A) ::= nm(X) idxlist_opt(Y) AS LP select(Z) RP. {
1468 A = sqlite3WithAdd(pParse, 0, &X, Y, Z); 1468 A = sqlite3WithAdd(pParse, 0, &X, Y, Z);
1469 } 1469 }
1470 wqlist(A) ::= wqlist(W) COMMA nm(X) idxlist_opt(Y) AS LP select(Z) RP. { 1470 wqlist(A) ::= wqlist(W) COMMA nm(X) idxlist_opt(Y) AS LP select(Z) RP. {
1471 A = sqlite3WithAdd(pParse, W, &X, Y, Z); 1471 A = sqlite3WithAdd(pParse, W, &X, Y, Z);
1472 } 1472 }
1473 %endif SQLITE_OMIT_CTE 1473 %endif SQLITE_OMIT_CTE
OLDNEW
« no previous file with comments | « third_party/sqlite/src/src/expr.c ('k') | third_party/sqlite/src/src/sqliteInt.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698