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

Unified Diff: third_party/sqlite/patches/0011-backport-Fix-collation-dequoting.patch

Issue 1610963002: Import SQLite 3.10.2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: third_party/sqlite/patches/0011-backport-Fix-collation-dequoting.patch
diff --git a/third_party/sqlite/patches/0011-backport-Fix-collation-dequoting.patch b/third_party/sqlite/patches/0011-backport-Fix-collation-dequoting.patch
deleted file mode 100644
index 2fa90710e4818596ae3fbfdf62e41a043a63552f..0000000000000000000000000000000000000000
--- a/third_party/sqlite/patches/0011-backport-Fix-collation-dequoting.patch
+++ /dev/null
@@ -1,205 +0,0 @@
-From 8451a8f615c1542a79ae190d4117e10f263857f7 Mon Sep 17 00:00:00 2001
-From: Scott Hess <shess@chromium.org>
-Date: Mon, 23 Mar 2015 11:24:11 -0700
-Subject: [PATCH 11/11] [backport] Fix collation dequoting.
-
-Backport https://www.sqlite.org/src/info/eddc05e7bb31fae7
-"Fix a problem causing collation sequence names to be dequoted
-multiple times under some circumstances."
-
-BUG=469082
----
- third_party/sqlite/src/src/expr.c | 7 ++--
- third_party/sqlite/src/src/parse.y | 6 ++--
- third_party/sqlite/src/src/sqliteInt.h | 2 +-
- third_party/sqlite/src/src/where.c | 9 +++--
- third_party/sqlite/src/test/collate1.test | 58 +++++++++++++++++++++++++++++--
- 5 files changed, 68 insertions(+), 14 deletions(-)
-
-diff --git a/third_party/sqlite/src/src/expr.c b/third_party/sqlite/src/src/expr.c
-index 65f211e..2d96c8d 100644
---- a/third_party/sqlite/src/src/expr.c
-+++ b/third_party/sqlite/src/src/expr.c
-@@ -69,10 +69,11 @@ char sqlite3ExprAffinity(Expr *pExpr){
- Expr *sqlite3ExprAddCollateToken(
- Parse *pParse, /* Parsing context */
- Expr *pExpr, /* Add the "COLLATE" clause to this expression */
-- const Token *pCollName /* Name of collating sequence */
-+ const Token *pCollName, /* Name of collating sequence */
-+ int dequote /* True to dequote pCollName */
- ){
- if( pCollName->n>0 ){
-- Expr *pNew = sqlite3ExprAlloc(pParse->db, TK_COLLATE, pCollName, 1);
-+ Expr *pNew = sqlite3ExprAlloc(pParse->db, TK_COLLATE, pCollName, dequote);
- if( pNew ){
- pNew->pLeft = pExpr;
- pNew->flags |= EP_Collate|EP_Skip;
-@@ -86,7 +87,7 @@ Expr *sqlite3ExprAddCollateString(Parse *pParse, Expr *pExpr, const char *zC){
- assert( zC!=0 );
- s.z = zC;
- s.n = sqlite3Strlen30(s.z);
-- return sqlite3ExprAddCollateToken(pParse, pExpr, &s);
-+ return sqlite3ExprAddCollateToken(pParse, pExpr, &s, 0);
- }
-
- /*
-diff --git a/third_party/sqlite/src/src/parse.y b/third_party/sqlite/src/src/parse.y
-index 877827e..d888cff 100644
---- a/third_party/sqlite/src/src/parse.y
-+++ b/third_party/sqlite/src/src/parse.y
-@@ -854,7 +854,7 @@ expr(A) ::= VARIABLE(X). {
- spanSet(&A, &X, &X);
- }
- expr(A) ::= expr(E) COLLATE ids(C). {
-- A.pExpr = sqlite3ExprAddCollateToken(pParse, E.pExpr, &C);
-+ A.pExpr = sqlite3ExprAddCollateToken(pParse, E.pExpr, &C, 1);
- A.zStart = E.zStart;
- A.zEnd = &C.z[C.n];
- }
-@@ -1200,14 +1200,14 @@ uniqueflag(A) ::= . {A = OE_None;}
- idxlist_opt(A) ::= . {A = 0;}
- idxlist_opt(A) ::= LP idxlist(X) RP. {A = X;}
- idxlist(A) ::= idxlist(X) COMMA nm(Y) collate(C) sortorder(Z). {
-- Expr *p = sqlite3ExprAddCollateToken(pParse, 0, &C);
-+ Expr *p = sqlite3ExprAddCollateToken(pParse, 0, &C, 1);
- A = sqlite3ExprListAppend(pParse,X, p);
- sqlite3ExprListSetName(pParse,A,&Y,1);
- sqlite3ExprListCheckLength(pParse, A, "index");
- if( A ) A->a[A->nExpr-1].sortOrder = (u8)Z;
- }
- idxlist(A) ::= nm(Y) collate(C) sortorder(Z). {
-- Expr *p = sqlite3ExprAddCollateToken(pParse, 0, &C);
-+ Expr *p = sqlite3ExprAddCollateToken(pParse, 0, &C, 1);
- A = sqlite3ExprListAppend(pParse,0, p);
- sqlite3ExprListSetName(pParse, A, &Y, 1);
- sqlite3ExprListCheckLength(pParse, A, "index");
-diff --git a/third_party/sqlite/src/src/sqliteInt.h b/third_party/sqlite/src/src/sqliteInt.h
-index 9d6a7d8..264f4fe 100644
---- a/third_party/sqlite/src/src/sqliteInt.h
-+++ b/third_party/sqlite/src/src/sqliteInt.h
-@@ -3462,7 +3462,7 @@ int sqlite3ReadSchema(Parse *pParse);
- CollSeq *sqlite3FindCollSeq(sqlite3*,u8 enc, const char*,int);
- CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char*zName);
- CollSeq *sqlite3ExprCollSeq(Parse *pParse, Expr *pExpr);
--Expr *sqlite3ExprAddCollateToken(Parse *pParse, Expr*, const Token*);
-+Expr *sqlite3ExprAddCollateToken(Parse *pParse, Expr*, const Token*, int);
- Expr *sqlite3ExprAddCollateString(Parse*,Expr*,const char*);
- Expr *sqlite3ExprSkipCollate(Expr*);
- int sqlite3CheckCollSeq(Parse *, CollSeq *);
-diff --git a/third_party/sqlite/src/src/where.c b/third_party/sqlite/src/src/where.c
-index bc01107..793b01d 100644
---- a/third_party/sqlite/src/src/where.c
-+++ b/third_party/sqlite/src/src/where.c
-@@ -1252,7 +1252,7 @@ static void exprAnalyze(
- Expr *pNewExpr2;
- int idxNew1;
- int idxNew2;
-- Token sCollSeqName; /* Name of collating sequence */
-+ const char *zCollSeqName; /* Name of collating sequence */
-
- pLeft = pExpr->x.pList->a[1].pExpr;
- pStr2 = sqlite3ExprDup(db, pStr1, 0);
-@@ -1272,11 +1272,10 @@ static void exprAnalyze(
- }
- *pC = c + 1;
- }
-- sCollSeqName.z = noCase ? "NOCASE" : "BINARY";
-- sCollSeqName.n = 6;
-+ zCollSeqName = noCase ? "NOCASE" : "BINARY";
- pNewExpr1 = sqlite3ExprDup(db, pLeft, 0);
- pNewExpr1 = sqlite3PExpr(pParse, TK_GE,
-- sqlite3ExprAddCollateToken(pParse,pNewExpr1,&sCollSeqName),
-+ sqlite3ExprAddCollateString(pParse,pNewExpr1,zCollSeqName),
- pStr1, 0);
- transferJoinMarkings(pNewExpr1, pExpr);
- idxNew1 = whereClauseInsert(pWC, pNewExpr1, TERM_VIRTUAL|TERM_DYNAMIC);
-@@ -1284,7 +1283,7 @@ static void exprAnalyze(
- exprAnalyze(pSrc, pWC, idxNew1);
- pNewExpr2 = sqlite3ExprDup(db, pLeft, 0);
- pNewExpr2 = sqlite3PExpr(pParse, TK_LT,
-- sqlite3ExprAddCollateToken(pParse,pNewExpr2,&sCollSeqName),
-+ sqlite3ExprAddCollateString(pParse,pNewExpr2,zCollSeqName),
- pStr2, 0);
- transferJoinMarkings(pNewExpr2, pExpr);
- idxNew2 = whereClauseInsert(pWC, pNewExpr2, TERM_VIRTUAL|TERM_DYNAMIC);
-diff --git a/third_party/sqlite/src/test/collate1.test b/third_party/sqlite/src/test/collate1.test
-index 2085415..0716ac7 100644
---- a/third_party/sqlite/src/test/collate1.test
-+++ b/third_party/sqlite/src/test/collate1.test
-@@ -10,12 +10,12 @@
- #
- #***********************************************************************
- # This file implements regression tests for SQLite library. The
--# focus of this script is page cache subsystem.
-+# focus of this script is testing collation sequences.
- #
--# $Id: collate1.test,v 1.5 2007/02/01 23:02:46 drh Exp $
-
- set testdir [file dirname $argv0]
- source $testdir/tester.tcl
-+set testprefix collate1
-
- #
- # Tests are roughly organised as follows:
-@@ -333,4 +333,58 @@ do_test collate1-5.3 {
- }
- } {1 2}
-
-+
-+
-+#-------------------------------------------------------------------------
-+# Fix problems with handling collation sequences named '"""'.
-+#
-+do_execsql_test 6.1 {
-+ SELECT """""""";
-+} {\"\"\"}
-+
-+do_catchsql_test 6.2 {
-+ CREATE TABLE x1(a);
-+ SELECT a FROM x1 ORDER BY a COLLATE """""""";
-+} {1 {no such collation sequence: """}}
-+
-+do_catchsql_test 6.3 {
-+ SELECT a FROM x1 ORDER BY 1 COLLATE """""""";
-+} {1 {no such collation sequence: """}}
-+
-+do_catchsql_test 6.4 {
-+ SELECT 0 UNION SELECT 0 ORDER BY 1 COLLATE """""""";
-+} {1 {no such collation sequence: """}}
-+
-+db collate {"""} [list string compare -nocase]
-+
-+do_execsql_test 6.5 {
-+ PRAGMA foreign_keys = ON;
-+ CREATE TABLE p1(a PRIMARY KEY COLLATE '"""');
-+ CREATE TABLE c1(x, y REFERENCES p1);
-+} {}
-+
-+do_execsql_test 6.6 {
-+ INSERT INTO p1 VALUES('abc');
-+ INSERT INTO c1 VALUES(1, 'ABC');
-+}
-+
-+ifcapable foreignkey {
-+ do_catchsql_test 6.7 {
-+ DELETE FROM p1 WHERE rowid = 1
-+ } {1 {FOREIGN KEY constraint failed}}
-+}
-+
-+do_execsql_test 6.8 {
-+ INSERT INTO p1 VALUES('abb');
-+ INSERT INTO p1 VALUES('wxz');
-+ INSERT INTO p1 VALUES('wxy');
-+
-+ INSERT INTO c1 VALUES(2, 'abb');
-+ INSERT INTO c1 VALUES(3, 'wxz');
-+ INSERT INTO c1 VALUES(4, 'WXY');
-+ SELECT x, y FROM c1 ORDER BY y COLLATE """""""";
-+} {2 abb 1 ABC 4 WXY 3 wxz}
-+
- finish_test
-+
-+
---
-2.4.5
-

Powered by Google App Engine
This is Rietveld 408576698