mirror of
https://github.com/chaisql/chai.git
synced 2026-04-23 07:09:36 +08:00
158 lines
4.6 KiB
SQL
158 lines
4.6 KiB
SQL
-- test: same type
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a INT DEFAULT 10);
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a INTEGER DEFAULT 10, CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: compatible type
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT 10);
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a DOUBLE DEFAULT 10, CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: expr
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT 1 + 4 / 4);
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a DOUBLE DEFAULT 1 + 4 / 4, CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: incompatible type
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT 'hello');
|
|
-- error:
|
|
|
|
-- test: function
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT pk());
|
|
-- error:
|
|
|
|
-- test: compatible type
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT 10);
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a DOUBLE DEFAULT 10, CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: expr
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT 1 + 4 / 4);
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a DOUBLE DEFAULT 1 + 4 / 4, CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: incompatible type
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT 'hello');
|
|
-- error:
|
|
|
|
-- test: function
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT pk());
|
|
-- error:
|
|
-- test: same type
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a INT DEFAULT 10);
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a INTEGER DEFAULT 10, CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: compatible type
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT 10);
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a DOUBLE DEFAULT 10, CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: expr
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT 1 + 4 / 4);
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a DOUBLE DEFAULT 1 + 4 / 4, CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: incompatible type
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT 'hello');
|
|
-- error:
|
|
|
|
-- test: function
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a DOUBLE DEFAULT pk());
|
|
-- error:
|
|
|
|
-- test: incompatible expr
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a BLOB DEFAULT 1 + 4 / 4);
|
|
-- error:
|
|
|
|
-- test: forbidden tokens: AND
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a BLOB DEFAULT 1 AND 1);
|
|
-- error:
|
|
|
|
-- test: forbidden tokens: path
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a BLOB DEFAULT b);
|
|
-- error:
|
|
|
|
-- test: DEFAULT nextval sequence
|
|
CREATE SEQUENCE seq1;
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a INTEGER DEFAULT nextval('seq1'));
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a INTEGER DEFAULT nextval(\"seq1\"), CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: DEFAULT with parentheses
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a INTEGER DEFAULT (1 + 2));
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a INTEGER DEFAULT 1 + 2, CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: DEFAULT (nextval sequence)
|
|
CREATE SEQUENCE seq_paren;
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a INTEGER DEFAULT (nextval('seq_paren')));
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a INTEGER DEFAULT nextval(\"seq_paren\"), CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|
|
-- test: DEFAULT with nested parentheses
|
|
CREATE TABLE test(pk INT PRIMARY KEY, a INTEGER DEFAULT ((1)));
|
|
SELECT name, sql FROM __chai_catalog WHERE type = "table" AND name = "test";
|
|
/* result:
|
|
{
|
|
"name": "test",
|
|
"sql": "CREATE TABLE test (pk INTEGER NOT NULL, a INTEGER DEFAULT (1), CONSTRAINT test_pk PRIMARY KEY (pk))"
|
|
}
|
|
*/
|
|
|