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

Side by Side Diff: third_party/sqlite/sqlite-src-3170000/test/parser1.test

Issue 2747283002: [sql] Import reference version of SQLite 3.17.. (Closed)
Patch Set: Created 3 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
OLDNEW
(Empty)
1 # 2014-08-24
2 #
3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing:
5 #
6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give.
9 #
10 #***********************************************************************
11 # This file implements regression tests for SQLite library.
12 # The focus of this script is testing details of the SQL language parser.
13 #
14
15 set testdir [file dirname $argv0]
16 source $testdir/tester.tcl
17
18 do_catchsql_test parser1-1.1 {
19 CREATE TABLE t1(
20 a TEXT PRIMARY KEY,
21 b TEXT,
22 FOREIGN KEY(b COLLATE nocase DESC) REFERENCES t1(a COLLATE binary ASC)
23 );
24 } {1 {syntax error after column name "b"}}
25
26
27 # Verify that a legacy schema in the sqlite_master file is allowed to have
28 # COLLATE, ASC, and DESC keywords on the id list of a FK constraint, and that
29 # those keywords are silently ignored.
30 #
31 do_execsql_test parser1-1.2 {
32 CREATE TABLE t1(
33 a TEXT PRIMARY KEY,
34 b TEXT,
35 FOREIGN KEY(b) REFERENCES t1(a)
36 );
37 INSERT INTO t1 VALUES('abc',NULL),('xyz','abc');
38 PRAGMA writable_schema=on;
39 UPDATE sqlite_master SET sql='CREATE TABLE t1(
40 a TEXT PRIMARY KEY,
41 b TEXT,
42 FOREIGN KEY(b COLLATE nocase) REFERENCES t1(a)
43 )' WHERE name='t1';
44 SELECT name FROM sqlite_master WHERE sql LIKE '%collate%';
45 } {t1}
46 sqlite3 db2 test.db
47 do_test parser1-1.3 {
48 sqlite3 db2 test.db
49 db2 eval {SELECT * FROM t1 ORDER BY 1}
50 } {abc {} xyz abc}
51 db2 close
52
53 do_execsql_test parser1-1.4 {
54 UPDATE sqlite_master SET sql='CREATE TABLE t1(
55 a TEXT PRIMARY KEY,
56 b TEXT,
57 FOREIGN KEY(b ASC) REFERENCES t1(a)
58 )' WHERE name='t1';
59 SELECT name FROM sqlite_master WHERE sql LIKE '%ASC%';
60 } {t1}
61 sqlite3 db2 test.db
62 do_test parser1-1.5 {
63 sqlite3 db2 test.db
64 db2 eval {SELECT * FROM t1 ORDER BY 1}
65 } {abc {} xyz abc}
66 db2 close
67
68 do_catchsql_test parser1-2.1 {
69 WITH RECURSIVE
70 c(x COLLATE binary) AS (VALUES(1) UNION SELECT x+1 FROM c WHERE x<5)
71 SELECT x FROM c;
72 } {1 {syntax error after column name "x"}}
73 do_catchsql_test parser1-2.2 {
74 WITH RECURSIVE
75 c(x ASC) AS (VALUES(1) UNION SELECT x+1 FROM c WHERE x<5)
76 SELECT x FROM c;
77 } {1 {syntax error after column name "x"}}
78
79 # Verify that the comma between multiple table constraints is
80 # optional.
81 #
82 # The missing comma is technically a syntax error. But we have to support
83 # it because there might be legacy databases that omit the commas in their
84 # sqlite_master tables.
85 #
86 do_execsql_test parser1-3.1 {
87 CREATE TABLE t300(id INTEGER PRIMARY KEY);
88 CREATE TABLE t301(
89 id INTEGER PRIMARY KEY,
90 c1 INTEGER NOT NULL,
91 c2 INTEGER NOT NULL,
92 c3 BOOLEAN NOT NULL DEFAULT 0,
93 FOREIGN KEY(c1) REFERENCES t300(id) ON DELETE CASCADE ON UPDATE RESTRICT
94 /* no comma */
95 FOREIGN KEY(c2) REFERENCES t300(id) ON DELETE CASCADE ON UPDATE RESTRICT
96 /* no comma */
97 UNIQUE(c1, c2)
98 );
99 PRAGMA foreign_key_list(t301);
100 } {0 0 t300 c2 id RESTRICT CASCADE NONE 1 0 t300 c1 id RESTRICT CASCADE NONE}
101
102 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/sqlite-src-3170000/test/pagesize.test ('k') | third_party/sqlite/sqlite-src-3170000/test/pcache.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698