From 46168bfa322a85b7f21776a1a6dd6ee7d4c183dd Mon Sep 17 00:00:00 2001 From: Nikita Pettik <korablev@tarantool.org> Date: Thu, 28 Feb 2019 18:14:36 +0300 Subject: [PATCH] sql: remove support of CHAR type from parser Since now no checks connected with length of string are performed, it might be misleading to allow specifying this type. Instead, users must rely on VARCHAR type. Part of #4019 --- src/box/sql/parse.y | 10 +------- test/sql-tap/autoinc.test.lua | 2 +- test/sql-tap/collation.test.lua | 2 +- test/sql-tap/eqp.test.lua | 4 ++-- test/sql-tap/fkey1.test.lua | 4 ++-- test/sql-tap/func.test.lua | 2 +- test/sql-tap/resolver01.test.lua | 4 ++-- test/sql-tap/select6.test.lua | 6 ++--- test/sql-tap/table.test.lua | 6 ++--- test/sql-tap/where2.test.lua | 4 ++-- test/sql/collation.result | 40 ++++++++++++++++---------------- test/sql/collation.test.lua | 40 ++++++++++++++++---------------- test/sql/row-count.result | 4 ++-- test/sql/row-count.test.lua | 4 ++-- 14 files changed, 62 insertions(+), 70 deletions(-) diff --git a/src/box/sql/parse.y b/src/box/sql/parse.y index fb3639f3f9..92788ceb8f 100644 --- a/src/box/sql/parse.y +++ b/src/box/sql/parse.y @@ -1487,21 +1487,13 @@ typedef(A) ::= BLOB_KW . { A.type = FIELD_TYPE_SCALAR; } typedef(A) ::= DATETIME . { A.type = FIELD_TYPE_NUMBER; } */ -%type char_len {int} -typedef(A) ::= CHAR . { - A.type = FIELD_TYPE_STRING; -} char_len(A) ::= LP INTEGER(B) RP . { (void) A; (void) B; } -typedef(A) ::= CHAR char_len(B) . { - A.type = FIELD_TYPE_STRING; - (void) B; -} - +%type char_len {int} typedef(A) ::= VARCHAR char_len(B) . { A.type = FIELD_TYPE_STRING; (void) B; diff --git a/test/sql-tap/autoinc.test.lua b/test/sql-tap/autoinc.test.lua index 5ec9fd6328..dc2f60e152 100755 --- a/test/sql-tap/autoinc.test.lua +++ b/test/sql-tap/autoinc.test.lua @@ -805,7 +805,7 @@ test:do_test( test:do_catchsql_test( "autoinc-gh-3670", [[ - CREATE TABLE t1 (s1 INT PRIMARY KEY AUTOINCREMENT, s2 CHAR(10)); + CREATE TABLE t1 (s1 INT PRIMARY KEY AUTOINCREMENT, s2 VARCHAR(10)); INSERT INTO t1 VALUES (1, 'a'); INSERT INTO t1 SELECT s2, s2 FROM t1; ]], { diff --git a/test/sql-tap/collation.test.lua b/test/sql-tap/collation.test.lua index 1e55b00926..094d02c42a 100755 --- a/test/sql-tap/collation.test.lua +++ b/test/sql-tap/collation.test.lua @@ -209,7 +209,7 @@ local like_testcases = { {"2.0", [[ - CREATE TABLE tx1 (s1 CHAR(5) PRIMARY KEY); + CREATE TABLE tx1 (s1 VARCHAR(5) PRIMARY KEY); CREATE INDEX I1 on tx1(s1 collate "unicode_ci"); INSERT INTO tx1 VALUES('aaa'); INSERT INTO tx1 VALUES('Aab'); diff --git a/test/sql-tap/eqp.test.lua b/test/sql-tap/eqp.test.lua index 5ef9999d8f..2aa2d96757 100755 --- a/test/sql-tap/eqp.test.lua +++ b/test/sql-tap/eqp.test.lua @@ -727,8 +727,8 @@ test:drop_all_tables() test:do_execsql_test( 7.0, [[ - CREATE TABLE t1(idt1 INT primary key, a INT, b INT, ex CHAR(100)); - CREATE TABLE t2(idt2 INT primary key, a INT, b INT, ex CHAR(100)); + CREATE TABLE t1(idt1 INT primary key, a INT, b INT, ex VARCHAR(100)); + CREATE TABLE t2(idt2 INT primary key, a INT, b INT, ex VARCHAR(100)); CREATE INDEX i1 ON t2(a); ]]) diff --git a/test/sql-tap/fkey1.test.lua b/test/sql-tap/fkey1.test.lua index 557e557a5f..0464f2dcc8 100755 --- a/test/sql-tap/fkey1.test.lua +++ b/test/sql-tap/fkey1.test.lua @@ -241,9 +241,9 @@ test:do_select_tests( {"0", [[ CREATE TABLE T12 (A INTEGER PRIMARY KEY, - B CHAR(5) UNIQUE); + B VARCHAR(5) UNIQUE); CREATE TABLE T13 (A INTEGER PRIMARY KEY, - B CHAR(5) UNIQUE, + B VARCHAR(5) UNIQUE, FOREIGN KEY (B) REFERENCES T12 (B) ON UPDATE SET NULL); INSERT INTO T12 VALUES (1,'a'); INSERT INTO T13 VALUES (1,'a'); diff --git a/test/sql-tap/func.test.lua b/test/sql-tap/func.test.lua index 26e6f93ee4..889fc5867e 100755 --- a/test/sql-tap/func.test.lua +++ b/test/sql-tap/func.test.lua @@ -2853,7 +2853,7 @@ test:do_execsql_test( -- GROUP_CONCAT test:do_execsql_test( "func-72", - "CREATE TABLE t100(a INT PRIMARY KEY, b CHAR); \ + "CREATE TABLE t100(a INT PRIMARY KEY, b VARCHAR(5)); \ INSERT INTO t100 VALUES (1, CHAR(00)); \ INSERT INTO t100 VALUES (2, CHAR(65, 00, 65)); \ INSERT INTO t100 VALUES (3, CHAR(00)); \ diff --git a/test/sql-tap/resolver01.test.lua b/test/sql-tap/resolver01.test.lua index d40e499824..aa383b34b8 100755 --- a/test/sql-tap/resolver01.test.lua +++ b/test/sql-tap/resolver01.test.lua @@ -229,7 +229,7 @@ test:do_test( "resolver01-4.1", function () test:execsql([[ - CREATE TABLE t4(m CHAR(2) primary key); + CREATE TABLE t4(m VARCHAR(2) primary key); INSERT INTO t4 VALUES('az'); INSERT INTO t4 VALUES('by'); INSERT INTO t4 VALUES('cx'); @@ -257,7 +257,7 @@ test:do_test( test:do_execsql_test( "resolver01-5.1", [[ - CREATE TABLE t5(m CHAR(2) primary key); + CREATE TABLE t5(m VARCHAR(2) primary key); INSERT INTO t5 VALUES('ax'); INSERT INTO t5 VALUES('bx'); INSERT INTO t5 VALUES('cy'); diff --git a/test/sql-tap/select6.test.lua b/test/sql-tap/select6.test.lua index 49652a5a4a..7f6cc79394 100755 --- a/test/sql-tap/select6.test.lua +++ b/test/sql-tap/select6.test.lua @@ -1059,8 +1059,8 @@ test:do_execsql_test( [[ DROP TABLE t1; DROP TABLE t2; - CREATE TABLE t1 (s1 INT PRIMARY KEY, u CHAR UNIQUE); - CREATE TABLE t2 (s1 INT PRIMARY KEY, u CHAR); + CREATE TABLE t1 (s1 INT PRIMARY KEY, u VARCHAR(1) UNIQUE); + CREATE TABLE t2 (s1 INT PRIMARY KEY, u VARCHAR(1)); INSERT INTO t1 VALUES (1,''); INSERT INTO t2 VALUES (1,''); SELECT COUNT(*) FROM t1 WHERE u IN @@ -1075,7 +1075,7 @@ test:do_execsql_test( 12.2, [[ DROP TABLE t1; - CREATE TABLE t1 (s1 INT PRIMARY KEY, u CHAR); + CREATE TABLE t1 (s1 INT PRIMARY KEY, u VARCHAR(1)); INSERT INTO t1 VALUES (1,''); SELECT COUNT(*) FROM t1 WHERE u IN (SELECT u FROM t2 WHERE u IN (SELECT u FROM t1)); diff --git a/test/sql-tap/table.test.lua b/test/sql-tap/table.test.lua index b1ea278780..9c4048d4c5 100755 --- a/test/sql-tap/table.test.lua +++ b/test/sql-tap/table.test.lua @@ -228,7 +228,7 @@ test:do_test( -- local big_table = [[CREATE TABLE big( f1 varchar(20), - f2 char(10), + f2 varchar(10), f3 varchar(30) primary key, f4 text, f5 text, @@ -893,7 +893,7 @@ test:do_execsql_test( CREATE TABLE t7( a integer primary key, b numeric(5,10), - c char(8), + c VARCHAR(8), d VARCHAR(9), e blob, f BLOB, @@ -1405,7 +1405,7 @@ test:do_execsql_test( [[ CREATE TABLE T23( id INT PRIMARY KEY, - u CHAR + u VARCHAR(1) ); ]], { -- <table-23.2> diff --git a/test/sql-tap/where2.test.lua b/test/sql-tap/where2.test.lua index 2dd8b84c4a..8eaf4053d4 100755 --- a/test/sql-tap/where2.test.lua +++ b/test/sql-tap/where2.test.lua @@ -631,7 +631,7 @@ test:do_test( "where2-6.7", function() test:execsql [[ - CREATE TABLE t2249a(a TEXT PRIMARY KEY, x CHAR(100)); + CREATE TABLE t2249a(a TEXT PRIMARY KEY, x VARCHAR(100)); CREATE TABLE t2249b(b INTEGER PRIMARY KEY); INSERT INTO t2249a(a) VALUES('0123'); INSERT INTO t2249b VALUES(123); @@ -1273,7 +1273,7 @@ test:do_execsql_test( "where2-12.1", function () local data = test:execsql([[ - CREATE TABLE t12(x INTEGER PRIMARY KEY, y INT, z CHAR(100)); + CREATE TABLE t12(x INTEGER PRIMARY KEY, y INT, z VARCHAR(100)); CREATE INDEX t12y ON t12(y); EXPLAIN QUERY PLAN SELECT a.x, b.x diff --git a/test/sql/collation.result b/test/sql/collation.result index 07ba213deb..ce5496c967 100644 --- a/test/sql/collation.result +++ b/test/sql/collation.result @@ -34,7 +34,7 @@ box.sql.execute("SELECT 1 LIMIT 1 COLLATE BINARY, 1;") ... -- gh-3052: upper/lower support only default locale -- For tr-TR result depends on collation -box.sql.execute([[CREATE TABLE tu (descriptor CHAR(50) PRIMARY KEY, letter CHAR(50))]]); +box.sql.execute([[CREATE TABLE tu (descriptor VARCHAR(50) PRIMARY KEY, letter VARCHAR(50))]]); --- ... box.internal.collation.create('TURKISH', 'ICU', 'tr-TR', {strength='primary'}); @@ -263,10 +263,10 @@ box.schema.user.drop('tmp') ... -- gh-3644 Foreign key update fails with "unicode_ci". -- Check that foreign key update doesn't fail with "unicode_ci". -box.sql.execute('CREATE TABLE t0 (s1 CHAR(5) COLLATE "unicode_ci" UNIQUE, id INT PRIMARY KEY AUTOINCREMENT);') +box.sql.execute('CREATE TABLE t0 (s1 VARCHAR(5) COLLATE "unicode_ci" UNIQUE, id INT PRIMARY KEY AUTOINCREMENT);') --- ... -box.sql.execute('CREATE TABLE t1 (s1 INT PRIMARY KEY, s0 CHAR(5) COLLATE "unicode_ci" REFERENCES t0(s1));') +box.sql.execute('CREATE TABLE t1 (s1 INT PRIMARY KEY, s0 VARCHAR(5) COLLATE "unicode_ci" REFERENCES t0(s1));') --- ... box.sql.execute("INSERT INTO t0(s1) VALUES ('a');") @@ -294,10 +294,10 @@ box.sql.execute("DROP TABLE t0;") --- ... -- Check that foreign key update fails with default collation. -box.sql.execute('CREATE TABLE t0 (s1 CHAR(5) UNIQUE, id INT PRIMARY KEY AUTOINCREMENT);') +box.sql.execute('CREATE TABLE t0 (s1 VARCHAR(5) UNIQUE, id INT PRIMARY KEY AUTOINCREMENT);') --- ... -box.sql.execute('CREATE TABLE t1 (s1 INT PRIMARY KEY, s0 CHAR(5) REFERENCES t0(s1));') +box.sql.execute('CREATE TABLE t1 (s1 INT PRIMARY KEY, s0 VARCHAR(5) REFERENCES t0(s1));') --- ... box.sql.execute("INSERT INTO t0(s1) VALUES ('a');") @@ -429,7 +429,7 @@ box.space.T4B:drop() ... -- gh-3537 Duplicate key error for an index that is not unique -- pk - default, sc - unicode_ci -box.sql.execute('CREATE TABLE t3 (s1 CHAR(5) PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3 (s1 VARCHAR(5) PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3 ON t3 (s1 collate "unicode_ci");') @@ -450,7 +450,7 @@ box.sql.execute("DROP TABLE t3;") --- ... -- pk - binary, sc - unicode -box.sql.execute('CREATE TABLE t3b (s1 CHAR(5) collate "binary" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3b (s1 VARCHAR(5) collate "binary" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3b ON t3b (s1 collate "unicode");') @@ -471,7 +471,7 @@ box.sql.execute("DROP TABLE t3b;") --- ... -- pk - binary, sc - unicode (make dup) -box.sql.execute('CREATE TABLE t3b (s1 CHAR(5) collate "binary" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3b (s1 VARCHAR(5) collate "binary" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3b ON t3b (s1 collate "unicode");') @@ -496,7 +496,7 @@ box.sql.execute("DROP TABLE t3b;") --- ... -- pk - unicode, sc - binary -box.sql.execute('CREATE TABLE t3c (s1 CHAR(5) collate "unicode" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3c (s1 VARCHAR(5) collate "unicode" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3c ON t3c (s1 collate "binary");') @@ -517,7 +517,7 @@ box.sql.execute("DROP TABLE t3c;") --- ... -- pk - unicode, sc - binary (make dup) -box.sql.execute('CREATE TABLE t3c (s1 CHAR(5) collate "unicode" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3c (s1 VARCHAR(5) collate "unicode" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3c ON t3c (s1 collate "binary");') @@ -542,7 +542,7 @@ box.sql.execute("DROP TABLE t3c;") --- ... -- pk - binary, sc - unicode_ci -box.sql.execute('CREATE TABLE t3d (s1 CHAR(5) collate "binary" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3d (s1 VARCHAR(5) collate "binary" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3d ON t3d (s1 collate "unicode_ci");') @@ -563,7 +563,7 @@ box.sql.execute("DROP TABLE t3d;") --- ... -- pk - binary, sc - unicode_ci (make dup) -box.sql.execute('CREATE TABLE t3d (s1 CHAR(5) collate "binary" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3d (s1 VARCHAR(5) collate "binary" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3d ON t3d (s1 collate "unicode_ci");') @@ -588,7 +588,7 @@ box.sql.execute("DROP TABLE t3d;") --- ... -- pk - unicode_ci, sc - binary (should fail) -box.sql.execute('CREATE TABLE t3e (s1 CHAR(5) collate "unicode_ci" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3e (s1 VARCHAR(5) collate "unicode_ci" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3e ON t3e (s1 collate "binary");') @@ -609,7 +609,7 @@ box.sql.execute("DROP TABLE t3e;") --- ... -- pk - unicode, sc - unicode_ci -box.sql.execute('CREATE TABLE t3f (s1 CHAR(5) collate "unicode" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3f (s1 VARCHAR(5) collate "unicode" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3f ON t3f (s1 collate "unicode_ci");') @@ -630,7 +630,7 @@ box.sql.execute("DROP TABLE t3f;") --- ... -- pk - unicode, sc - unicode_ci (make dup) -box.sql.execute('CREATE TABLE t3f (s1 CHAR(5) collate "unicode" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3f (s1 VARCHAR(5) collate "unicode" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3f ON t3f (s1 collate "unicode_ci");') @@ -655,7 +655,7 @@ box.sql.execute("DROP TABLE t3f;") --- ... -- pk - unicode_ci, sc - unicode (should fail) -box.sql.execute('CREATE TABLE t3g (s1 CHAR(5) collate "unicode_ci" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3g (s1 VARCHAR(5) collate "unicode_ci" PRIMARY KEY);') --- ... box.sql.execute('CREATE INDEX i3g ON t3g (s1 collate "unicode");') @@ -676,7 +676,7 @@ box.sql.execute("DROP TABLE t3g;") --- ... -- pk - default, sc - multipart -box.sql.execute('CREATE TABLE qms1 (w CHAR(5) PRIMARY KEY, n CHAR(5), q CHAR(5), s INTEGER);') +box.sql.execute('CREATE TABLE qms1 (w VARCHAR(5) PRIMARY KEY, n VARCHAR(5), q VARCHAR(5), s INTEGER);') --- ... box.sql.execute('CREATE INDEX iqms1 ON qms1 (w collate "unicode_ci", n);') @@ -696,7 +696,7 @@ box.sql.execute("SELECT * FROM qms1;") box.sql.execute("DROP TABLE qms1;") --- ... -box.sql.execute('CREATE TABLE qms2 (w CHAR(5) PRIMARY KEY, n CHAR(5), q CHAR(5), s INTEGER);') +box.sql.execute('CREATE TABLE qms2 (w VARCHAR(5) PRIMARY KEY, n VARCHAR(5), q VARCHAR(5), s INTEGER);') --- ... box.sql.execute('CREATE INDEX iqms2 ON qms2 (w collate "unicode", n);') @@ -717,7 +717,7 @@ box.sql.execute("DROP TABLE qms2;") --- ... -- pk - multipart, sc overlaps with pk -box.sql.execute('CREATE TABLE qms3 (w CHAR(5), n CHAR(5), q CHAR(5), s INTEGER, CONSTRAINT pk_qms3 PRIMARY KEY(w, n, q));') +box.sql.execute('CREATE TABLE qms3 (w VARCHAR(5), n VARCHAR(5), q VARCHAR(5), s INTEGER, CONSTRAINT pk_qms3 PRIMARY KEY(w, n, q));') --- ... box.sql.execute('CREATE INDEX iqms3 ON qms3 (w collate "unicode_ci", s);') @@ -737,7 +737,7 @@ box.sql.execute("SELECT * FROM qms3;") box.sql.execute("DROP TABLE qms3;") --- ... -box.sql.execute('CREATE TABLE qms4 (w CHAR(5), n CHAR(5), q CHAR(5), s INTEGER, CONSTRAINT pk_qms4 PRIMARY KEY(w, n, q));') +box.sql.execute('CREATE TABLE qms4 (w VARCHAR(5), n VARCHAR(5), q VARCHAR(5), s INTEGER, CONSTRAINT pk_qms4 PRIMARY KEY(w, n, q));') --- ... box.sql.execute('CREATE INDEX iqms4 ON qms4 (w collate "unicode", s);') diff --git a/test/sql/collation.test.lua b/test/sql/collation.test.lua index 189328db49..65cf8fce88 100644 --- a/test/sql/collation.test.lua +++ b/test/sql/collation.test.lua @@ -14,7 +14,7 @@ box.sql.execute("SELECT 1 LIMIT 1 COLLATE BINARY, 1;") -- gh-3052: upper/lower support only default locale -- For tr-TR result depends on collation -box.sql.execute([[CREATE TABLE tu (descriptor CHAR(50) PRIMARY KEY, letter CHAR(50))]]); +box.sql.execute([[CREATE TABLE tu (descriptor VARCHAR(50) PRIMARY KEY, letter VARCHAR(50))]]); box.internal.collation.create('TURKISH', 'ICU', 'tr-TR', {strength='primary'}); box.sql.execute([[INSERT INTO tu VALUES ('Latin Capital Letter I U+0049','I');]]) box.sql.execute([[INSERT INTO tu VALUES ('Latin Small Letter I U+0069','i');]]) @@ -105,8 +105,8 @@ box.schema.user.drop('tmp') -- gh-3644 Foreign key update fails with "unicode_ci". -- Check that foreign key update doesn't fail with "unicode_ci". -box.sql.execute('CREATE TABLE t0 (s1 CHAR(5) COLLATE "unicode_ci" UNIQUE, id INT PRIMARY KEY AUTOINCREMENT);') -box.sql.execute('CREATE TABLE t1 (s1 INT PRIMARY KEY, s0 CHAR(5) COLLATE "unicode_ci" REFERENCES t0(s1));') +box.sql.execute('CREATE TABLE t0 (s1 VARCHAR(5) COLLATE "unicode_ci" UNIQUE, id INT PRIMARY KEY AUTOINCREMENT);') +box.sql.execute('CREATE TABLE t1 (s1 INT PRIMARY KEY, s0 VARCHAR(5) COLLATE "unicode_ci" REFERENCES t0(s1));') box.sql.execute("INSERT INTO t0(s1) VALUES ('a');") box.sql.execute("INSERT INTO t1 VALUES (1,'a');") -- Should't fail. @@ -116,8 +116,8 @@ box.sql.execute("SELECT * FROM t1;") box.sql.execute("DROP TABLE t1;") box.sql.execute("DROP TABLE t0;") -- Check that foreign key update fails with default collation. -box.sql.execute('CREATE TABLE t0 (s1 CHAR(5) UNIQUE, id INT PRIMARY KEY AUTOINCREMENT);') -box.sql.execute('CREATE TABLE t1 (s1 INT PRIMARY KEY, s0 CHAR(5) REFERENCES t0(s1));') +box.sql.execute('CREATE TABLE t0 (s1 VARCHAR(5) UNIQUE, id INT PRIMARY KEY AUTOINCREMENT);') +box.sql.execute('CREATE TABLE t1 (s1 INT PRIMARY KEY, s0 VARCHAR(5) REFERENCES t0(s1));') box.sql.execute("INSERT INTO t0(s1) VALUES ('a');") box.sql.execute("INSERT INTO t1 VALUES (1,'a');") -- Should fail. @@ -175,7 +175,7 @@ box.space.T4B:drop() -- gh-3537 Duplicate key error for an index that is not unique -- pk - default, sc - unicode_ci -box.sql.execute('CREATE TABLE t3 (s1 CHAR(5) PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3 (s1 VARCHAR(5) PRIMARY KEY);') box.sql.execute('CREATE INDEX i3 ON t3 (s1 collate "unicode_ci");') box.sql.execute("INSERT INTO t3 VALUES ('a');") box.sql.execute("INSERT INTO t3 VALUES ('A');") @@ -183,7 +183,7 @@ box.sql.execute("SELECT * FROM t3;") box.sql.execute("DROP TABLE t3;") -- pk - binary, sc - unicode -box.sql.execute('CREATE TABLE t3b (s1 CHAR(5) collate "binary" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3b (s1 VARCHAR(5) collate "binary" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3b ON t3b (s1 collate "unicode");') box.sql.execute("INSERT INTO t3b VALUES ('a');") box.sql.execute("INSERT INTO t3b VALUES ('A');") @@ -191,7 +191,7 @@ box.sql.execute("SELECT * FROM t3b;") box.sql.execute("DROP TABLE t3b;") -- pk - binary, sc - unicode (make dup) -box.sql.execute('CREATE TABLE t3b (s1 CHAR(5) collate "binary" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3b (s1 VARCHAR(5) collate "binary" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3b ON t3b (s1 collate "unicode");') box.sql.execute("INSERT INTO t3b VALUES ('a');") box.sql.execute("INSERT INTO t3b VALUES ('A');") @@ -200,7 +200,7 @@ box.sql.execute("SELECT * FROM t3b;") box.sql.execute("DROP TABLE t3b;") -- pk - unicode, sc - binary -box.sql.execute('CREATE TABLE t3c (s1 CHAR(5) collate "unicode" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3c (s1 VARCHAR(5) collate "unicode" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3c ON t3c (s1 collate "binary");') box.sql.execute("INSERT INTO t3c VALUES ('a');") box.sql.execute("INSERT INTO t3c VALUES ('A');") @@ -208,7 +208,7 @@ box.sql.execute("SELECT * FROM t3c;") box.sql.execute("DROP TABLE t3c;") -- pk - unicode, sc - binary (make dup) -box.sql.execute('CREATE TABLE t3c (s1 CHAR(5) collate "unicode" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3c (s1 VARCHAR(5) collate "unicode" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3c ON t3c (s1 collate "binary");') box.sql.execute("INSERT INTO t3c VALUES ('a');") box.sql.execute("INSERT INTO t3c VALUES ('A');") @@ -217,7 +217,7 @@ box.sql.execute("SELECT * FROM t3c;") box.sql.execute("DROP TABLE t3c;") -- pk - binary, sc - unicode_ci -box.sql.execute('CREATE TABLE t3d (s1 CHAR(5) collate "binary" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3d (s1 VARCHAR(5) collate "binary" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3d ON t3d (s1 collate "unicode_ci");') box.sql.execute("INSERT INTO t3d VALUES ('a');") box.sql.execute("INSERT INTO t3d VALUES ('A');") @@ -225,7 +225,7 @@ box.sql.execute("SELECT * FROM t3d;") box.sql.execute("DROP TABLE t3d;") -- pk - binary, sc - unicode_ci (make dup) -box.sql.execute('CREATE TABLE t3d (s1 CHAR(5) collate "binary" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3d (s1 VARCHAR(5) collate "binary" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3d ON t3d (s1 collate "unicode_ci");') box.sql.execute("INSERT INTO t3d VALUES ('a');") box.sql.execute("INSERT INTO t3d VALUES ('A');") @@ -234,7 +234,7 @@ box.sql.execute("SELECT * FROM t3d;") box.sql.execute("DROP TABLE t3d;") -- pk - unicode_ci, sc - binary (should fail) -box.sql.execute('CREATE TABLE t3e (s1 CHAR(5) collate "unicode_ci" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3e (s1 VARCHAR(5) collate "unicode_ci" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3e ON t3e (s1 collate "binary");') box.sql.execute("INSERT INTO t3e VALUES ('a');") box.sql.execute("INSERT INTO t3e VALUES ('A');") @@ -242,7 +242,7 @@ box.sql.execute("SELECT * FROM t3e;") box.sql.execute("DROP TABLE t3e;") -- pk - unicode, sc - unicode_ci -box.sql.execute('CREATE TABLE t3f (s1 CHAR(5) collate "unicode" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3f (s1 VARCHAR(5) collate "unicode" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3f ON t3f (s1 collate "unicode_ci");') box.sql.execute("INSERT INTO t3f VALUES ('a');") box.sql.execute("INSERT INTO t3f VALUES ('A');") @@ -250,7 +250,7 @@ box.sql.execute("SELECT * FROM t3f;") box.sql.execute("DROP TABLE t3f;") -- pk - unicode, sc - unicode_ci (make dup) -box.sql.execute('CREATE TABLE t3f (s1 CHAR(5) collate "unicode" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3f (s1 VARCHAR(5) collate "unicode" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3f ON t3f (s1 collate "unicode_ci");') box.sql.execute("INSERT INTO t3f VALUES ('a');") box.sql.execute("INSERT INTO t3f VALUES ('A');") @@ -259,7 +259,7 @@ box.sql.execute("SELECT * FROM t3f;") box.sql.execute("DROP TABLE t3f;") -- pk - unicode_ci, sc - unicode (should fail) -box.sql.execute('CREATE TABLE t3g (s1 CHAR(5) collate "unicode_ci" PRIMARY KEY);') +box.sql.execute('CREATE TABLE t3g (s1 VARCHAR(5) collate "unicode_ci" PRIMARY KEY);') box.sql.execute('CREATE INDEX i3g ON t3g (s1 collate "unicode");') box.sql.execute("INSERT INTO t3g VALUES ('a');") box.sql.execute("INSERT INTO t3g VALUES ('A');") @@ -267,14 +267,14 @@ box.sql.execute("SELECT * FROM t3g;") box.sql.execute("DROP TABLE t3g;") -- pk - default, sc - multipart -box.sql.execute('CREATE TABLE qms1 (w CHAR(5) PRIMARY KEY, n CHAR(5), q CHAR(5), s INTEGER);') +box.sql.execute('CREATE TABLE qms1 (w VARCHAR(5) PRIMARY KEY, n VARCHAR(5), q VARCHAR(5), s INTEGER);') box.sql.execute('CREATE INDEX iqms1 ON qms1 (w collate "unicode_ci", n);') box.sql.execute("INSERT INTO qms1 VALUES ('www', 'nnn', 'qqq', 1);") box.sql.execute("INSERT INTO qms1 VALUES ('WWW', 'nnn', 'qqq', 2);") box.sql.execute("SELECT * FROM qms1;") box.sql.execute("DROP TABLE qms1;") -box.sql.execute('CREATE TABLE qms2 (w CHAR(5) PRIMARY KEY, n CHAR(5), q CHAR(5), s INTEGER);') +box.sql.execute('CREATE TABLE qms2 (w VARCHAR(5) PRIMARY KEY, n VARCHAR(5), q VARCHAR(5), s INTEGER);') box.sql.execute('CREATE INDEX iqms2 ON qms2 (w collate "unicode", n);') box.sql.execute("INSERT INTO qms2 VALUES ('www', 'nnn', 'qqq', 1);") box.sql.execute("INSERT INTO qms2 VALUES ('WWW', 'nnn', 'qqq', 2);") @@ -282,14 +282,14 @@ box.sql.execute("SELECT * FROM qms2;") box.sql.execute("DROP TABLE qms2;") -- pk - multipart, sc overlaps with pk -box.sql.execute('CREATE TABLE qms3 (w CHAR(5), n CHAR(5), q CHAR(5), s INTEGER, CONSTRAINT pk_qms3 PRIMARY KEY(w, n, q));') +box.sql.execute('CREATE TABLE qms3 (w VARCHAR(5), n VARCHAR(5), q VARCHAR(5), s INTEGER, CONSTRAINT pk_qms3 PRIMARY KEY(w, n, q));') box.sql.execute('CREATE INDEX iqms3 ON qms3 (w collate "unicode_ci", s);') box.sql.execute("INSERT INTO qms3 VALUES ('www', 'nnn', 'qqq', 1);") box.sql.execute("INSERT INTO qms3 VALUES ('WWW', 'nnn', 'qqq', 2);") box.sql.execute("SELECT * FROM qms3;") box.sql.execute("DROP TABLE qms3;") -box.sql.execute('CREATE TABLE qms4 (w CHAR(5), n CHAR(5), q CHAR(5), s INTEGER, CONSTRAINT pk_qms4 PRIMARY KEY(w, n, q));') +box.sql.execute('CREATE TABLE qms4 (w VARCHAR(5), n VARCHAR(5), q VARCHAR(5), s INTEGER, CONSTRAINT pk_qms4 PRIMARY KEY(w, n, q));') box.sql.execute('CREATE INDEX iqms4 ON qms4 (w collate "unicode", s);') box.sql.execute("INSERT INTO qms4 VALUES ('www', 'nnn', 'qqq', 1);") box.sql.execute("INSERT INTO qms4 VALUES ('WWW', 'nnn', 'qqq', 2);") diff --git a/test/sql/row-count.result b/test/sql/row-count.result index d6248eb0f8..b75298f720 100644 --- a/test/sql/row-count.result +++ b/test/sql/row-count.result @@ -9,7 +9,7 @@ box.sql.execute('pragma sql_default_engine=\''..engine..'\'') ... -- Test cases concerning row count calculations. -- -box.sql.execute("CREATE TABLE t1 (s1 CHAR(10) PRIMARY KEY);") +box.sql.execute("CREATE TABLE t1 (s1 VARCHAR(10) PRIMARY KEY);") --- ... box.sql.execute("SELECT ROW_COUNT();") @@ -20,7 +20,7 @@ box.sql.execute("SELECT ROW_COUNT();") --- - - [0] ... -box.sql.execute("CREATE TABLE t2 (s1 CHAR(10) PRIMARY KEY, s2 CHAR(10) REFERENCES t1 ON DELETE CASCADE);") +box.sql.execute("CREATE TABLE t2 (s1 VARCHAR(10) PRIMARY KEY, s2 VARCHAR(10) REFERENCES t1 ON DELETE CASCADE);") --- ... box.sql.execute("SELECT ROW_COUNT();") diff --git a/test/sql/row-count.test.lua b/test/sql/row-count.test.lua index f10807fff0..89476c7a91 100644 --- a/test/sql/row-count.test.lua +++ b/test/sql/row-count.test.lua @@ -4,10 +4,10 @@ box.sql.execute('pragma sql_default_engine=\''..engine..'\'') -- Test cases concerning row count calculations. -- -box.sql.execute("CREATE TABLE t1 (s1 CHAR(10) PRIMARY KEY);") +box.sql.execute("CREATE TABLE t1 (s1 VARCHAR(10) PRIMARY KEY);") box.sql.execute("SELECT ROW_COUNT();") box.sql.execute("SELECT ROW_COUNT();") -box.sql.execute("CREATE TABLE t2 (s1 CHAR(10) PRIMARY KEY, s2 CHAR(10) REFERENCES t1 ON DELETE CASCADE);") +box.sql.execute("CREATE TABLE t2 (s1 VARCHAR(10) PRIMARY KEY, s2 VARCHAR(10) REFERENCES t1 ON DELETE CASCADE);") box.sql.execute("SELECT ROW_COUNT();") box.sql.execute("CREATE TABLE t3 (i1 INT UNIQUE, i2 INT, i3 INT PRIMARY KEY);") box.sql.execute("INSERT INTO t3 VALUES (0, 0, 0);") -- GitLab