summaryrefslogtreecommitdiffstats
path: root/third_party/sqlite/src/test/join5.test
diff options
context:
space:
mode:
authorScott Hess <shess@chromium.org>2015-02-10 13:33:29 -0800
committerScott Hess <shess@chromium.org>2015-02-10 21:37:23 +0000
commitdcf12048055030a2b5858ceca5ce26294a82a6e4 (patch)
treec84f0e56702c610d82cf961829c6766d281dc98b /third_party/sqlite/src/test/join5.test
parent22a8af1afb44b29cfcee081f492ac1f434b54201 (diff)
downloadchromium_src-dcf12048055030a2b5858ceca5ce26294a82a6e4.zip
chromium_src-dcf12048055030a2b5858ceca5ce26294a82a6e4.tar.gz
chromium_src-dcf12048055030a2b5858ceca5ce26294a82a6e4.tar.bz2
Import SQLite 3.8.7.4.
Ran through the import script in third_party/sqlite/README.Chromium, including the SQLite test suite. There are a few pager errors which are because of a change required for WebDatabase support (documented in README). SQLite changes are at http://www.sqlite.org/changes.html , Chromium previously used 3.7.6.3. All patches were applied and the results reviewed to make sure backported patches were safe to remove, and retained patches were still covering what was necessary. Keep fts4 disabled, and also the new fts3 virtual table and unicode61 tokenizer. Once enabled, these are very hard to disable, and there doesn't seem to be any pressure to enable them. Other SQLITE_* flags were reviewed for applicability, none looked essential. Fixes to Chromium: - In recovery.cc, pk_column now follows the documentation. - Short garbage files now see SQLITE_NOTADB rather than SQLITE_IOERR_SHORT_READ. - Adjust to allow clients to use ScopedErrorIgnore without adding dependencies. - More-specific SQLITE_CONSTRAINT_* errors aren't necessary. - Force recovery test to scan table rather than index. BUG=340757 TEST=*EVERYTHING* continues to work. R=michaeln@chromium.org Review URL: https://codereview.chromium.org/901033002 Cr-Commit-Position: refs/heads/master@{#315646}
Diffstat (limited to 'third_party/sqlite/src/test/join5.test')
-rw-r--r--third_party/sqlite/src/test/join5.test54
1 files changed, 54 insertions, 0 deletions
diff --git a/third_party/sqlite/src/test/join5.test b/third_party/sqlite/src/test/join5.test
index 45d8a31..b0b0df4 100644
--- a/third_party/sqlite/src/test/join5.test
+++ b/third_party/sqlite/src/test/join5.test
@@ -106,5 +106,59 @@ do_test join5-2.12 {
execsql {SELECT * FROM xy LEFT JOIN ab ON NULL WHERE NULL}
} {}
+# Ticket https://www.sqlite.org/src/tktview/6f2222d550f5b0ee7ed37601
+# Incorrect output on a LEFT JOIN.
+#
+do_execsql_test join5-3.1 {
+ DROP TABLE IF EXISTS t1;
+ DROP TABLE IF EXISTS t2;
+ DROP TABLE IF EXISTS t3;
+ CREATE TABLE x1(a);
+ INSERT INTO x1 VALUES(1);
+ CREATE TABLE x2(b NOT NULL);
+ CREATE TABLE x3(c, d);
+ INSERT INTO x3 VALUES('a', NULL);
+ INSERT INTO x3 VALUES('b', NULL);
+ INSERT INTO x3 VALUES('c', NULL);
+ SELECT * FROM x1 LEFT JOIN x2 LEFT JOIN x3 ON x3.d = x2.b;
+} {1 {} {} {}}
+do_execsql_test join5-3.2 {
+ DROP TABLE IF EXISTS t1;
+ DROP TABLE IF EXISTS t2;
+ DROP TABLE IF EXISTS t3;
+ DROP TABLE IF EXISTS t4;
+ DROP TABLE IF EXISTS t5;
+ CREATE TABLE t1(x text NOT NULL, y text);
+ CREATE TABLE t2(u text NOT NULL, x text NOT NULL);
+ CREATE TABLE t3(w text NOT NULL, v text);
+ CREATE TABLE t4(w text NOT NULL, z text NOT NULL);
+ CREATE TABLE t5(z text NOT NULL, m text);
+ INSERT INTO t1 VALUES('f6d7661f-4efe-4c90-87b5-858e61cd178b',NULL);
+ INSERT INTO t1 VALUES('f6ea82c3-2cad-45ce-ae8f-3ddca4fb2f48',NULL);
+ INSERT INTO t1 VALUES('f6f47499-ecb4-474b-9a02-35be73c235e5',NULL);
+ INSERT INTO t1 VALUES('56f47499-ecb4-474b-9a02-35be73c235e5',NULL);
+ INSERT INTO t3 VALUES('007f2033-cb20-494c-b135-a1e4eb66130c',
+ 'f6d7661f-4efe-4c90-87b5-858e61cd178b');
+ SELECT *
+ FROM t3
+ INNER JOIN t1 ON t1.x= t3.v AND t1.y IS NULL
+ LEFT JOIN t4 ON t4.w = t3.w
+ LEFT JOIN t5 ON t5.z = t4.z
+ LEFT JOIN t2 ON t2.u = t5.m
+ LEFT JOIN t1 xyz ON xyz.y = t2.x;
+} {007f2033-cb20-494c-b135-a1e4eb66130c f6d7661f-4efe-4c90-87b5-858e61cd178b f6d7661f-4efe-4c90-87b5-858e61cd178b {} {} {} {} {} {} {} {} {}}
+do_execsql_test join5-3.3 {
+ DROP TABLE IF EXISTS x1;
+ DROP TABLE IF EXISTS x2;
+ DROP TABLE IF EXISTS x3;
+ CREATE TABLE x1(a);
+ INSERT INTO x1 VALUES(1);
+ CREATE TABLE x2(b NOT NULL);
+ CREATE TABLE x3(c, d);
+ INSERT INTO x3 VALUES('a', NULL);
+ INSERT INTO x3 VALUES('b', NULL);
+ INSERT INTO x3 VALUES('c', NULL);
+ SELECT * FROM x1 LEFT JOIN x2 JOIN x3 WHERE x3.d = x2.b;
+} {}
finish_test