Files
turso/testing/create_table.test

118 lines
4.0 KiB
Tcl
Executable File

#!/usr/bin/env tclsh
set testdir [file dirname $argv0]
source $testdir/tester.tcl
do_execsql_test_in_memory_any_error create_table_one_unique_set {
CREATE TABLE t4 (a, unique(b));
}
do_execsql_test_on_specific_db {:memory:} create_table_same_uniques_and_primary_keys {
CREATE TABLE t2 (a,b, unique(a,b), primary key(a,b));
} {}
do_execsql_test_on_specific_db {:memory:} create_table_unique_contained_in_primary_keys {
CREATE TABLE t4 (a,b, primary key(a,b), unique(a));
} {}
# https://github.com/tursodatabase/turso/issues/3187
do_execsql_test_on_specific_db {:memory:} create_table_unique_constraint_and_autoinc_backticks {
CREATE TABLE `databases` (`id` integer PRIMARY KEY AUTOINCREMENT,`created_at` datetime,`updated_at` datetime,`deleted_at` datetime,`hostname` text NOT NULL,`namespace` text,`address` text,`primary_address` text,`local` numeric,`allowed_ips` text, CONSTRAINT `uni_databases_hostname` UNIQUE (`hostname`));
} {}
# https://github.com/tursodatabase/turso/issues/2686
do_execsql_test_on_specific_db {:memory:} create_table_rowid_unique_regression_test {
create table u(x integer unique primary key);
insert into u values (1),(2),(3);
select * from u where x > 2;
} {3}
# https://github.com/tursodatabase/turso/issues/2886#issuecomment-3244885481
do_execsql_test_on_specific_db {:memory:} create_table_with_empty_string_name {
create table ''('' INTEGER) strict;
insert into '' values(9);
select * from '';
} {9}
do_execsql_test_in_memory_any_error create_table_multiple_column_primary_keys {
CREATE TABLE t(a primary key, b primary key);
}
do_execsql_test_in_memory_any_error create_table_column_and_table_primary_keys {
CREATE TABLE t(a primary key, b,c, primary key(b,c));
}
do_execsql_test_in_memory_any_error create_table_multiple_table_primary_keys {
CREATE TABLE t(a,b,c,d,primary key(a,b), primary key(c,d));
}
# https://github.com/tursodatabase/turso/issues/3282
do_execsql_test_on_specific_db {:memory:} col-named-rowid {
create table t(rowid, a);
insert into t values (1,2), (2,3), (3,4);
update t set rowid = 1; -- should allow regular update and not throw unique constraint
select count(*) from t where rowid = 1;
} {3}
# https://github.com/tursodatabase/turso/issues/3637
do_execsql_test_in_memory_any_error create_table_duplicate_column_names {
CREATE TABLE t(a, a);
}
do_execsql_test_in_memory_any_error create_table_duplicate_column_names_case_insensitive {
CREATE TABLE t(A, a);
}
do_execsql_test_in_memory_any_error create_table_duplicate_column_names_quoted {
CREATE TABLE t("a", a);
}
# https://github.com/tursodatabase/turso/issues/3675
do_execsql_test_in_memory_any_error create_table_view_collision-1 {
CREATE VIEW v_same AS SELECT 1;
CREATE TABLE v_same(x INT);
}
do_execsql_test_in_memory_any_error create_view_table_collision-1 {
CREATE TABLE t_same(x INT);
CREATE VIEW t_same AS SELECT 1;
}
do_execsql_test_in_memory_any_error create_index_view_collision-1 {
CREATE VIEW i_same AS SELECT 1;
CREATE TABLE t1(x);
CREATE INDEX i_same ON t1(x);
}
do_execsql_test_in_memory_any_error create_index_table_collision-1 {
CREATE TABLE i_same(x INT);
CREATE TABLE t2(y);
CREATE INDEX i_same ON t2(y);
}
do_execsql_test_in_memory_any_error create_table_index_collision-1 {
CREATE TABLE t3(z);
CREATE INDEX ix_same ON t3(z);
CREATE TABLE ix_same(x INT);
}
do_execsql_test_in_memory_any_error create_view_index_collision-1 {
CREATE TABLE t4(w);
CREATE INDEX ix_same ON t4(w);
CREATE VIEW ix_same AS SELECT 1;
}
# https://github.com/tursodatabase/turso/issues/3796
do_execsql_test_on_specific_db {:memory:} col-default-true {
create table t(id integer primary key, a default true);
insert into t (id) values (1);
SELECT a from t;
} {1}
# https://github.com/tursodatabase/turso/issues/3796
do_execsql_test_on_specific_db {:memory:} col-default-false {
create table t(id integer primary key, a default false);
insert into t (id) values (1);
SELECT a from t;
} {0}