# LogicTest: !weak-iso-level-configs
# This test is skipped under READ COMMITTED and REPEATABLE READ, since it
# asserts on the NOTICE output, and weak isolation level schema changes always
# send out extra notices.

statement ok
CREATE TABLE t (
  a INT REFERENCES t,
  FAMILY "primary" (a, rowid)
)

statement ok
CREATE TABLE v (
  "'" INT REFERENCES t, s STRING UNIQUE REFERENCES v (s),
  FAMILY "primary" ("'", s, rowid)
)

statement ok
CREATE TABLE c (
	a INT NOT NULL,
	b INT NULL,
	INDEX c_a_b_idx (a ASC, b ASC),
	FAMILY fam_0_a_rowid (a, rowid),
	FAMILY fam_1_b (b)
)

statement ok
COMMENT ON TABLE c IS 'table'

statement ok
COMMENT ON COLUMN c.a IS 'column'

statement ok
COMMENT ON INDEX c_a_b_idx IS 'index'

query TTTT colnames
SELECT
  regexp_replace(create_statement, '\n', ' ', 'g'),
  regexp_replace(create_nofks, '\n', ' ', 'g'),
  alter_statements,
  validate_statements
FROM
  crdb_internal.create_statements
WHERE
  database_name = 'test'
AND
  schema_name NOT IN ('pg_catalog', 'pg_extension', 'crdb_internal', 'information_schema')
ORDER BY descriptor_id
----
regexp_replace                                                                                                                                                                                                                                                                                                                                                                                regexp_replace                                                                                                                                                                                                                                                                                                                                                                                alter_statements                                                                                                                                                                           validate_statements
CREATE TABLE public.t (   a INT8 NULL,   rowid INT8 NOT VISIBLE NOT NULL DEFAULT unique_rowid(),   CONSTRAINT t_pkey PRIMARY KEY (rowid ASC),   CONSTRAINT t_a_fkey FOREIGN KEY (a) REFERENCES public.t(rowid) )                                                                                                                                                                              CREATE TABLE public.t (   a INT8 NULL,   rowid INT8 NOT VISIBLE NOT NULL DEFAULT unique_rowid(),   CONSTRAINT t_pkey PRIMARY KEY (rowid ASC) )                                                                                                                                                                                                                                                {"ALTER TABLE public.t ADD CONSTRAINT t_a_fkey FOREIGN KEY (a) REFERENCES public.t(rowid)"}                                                                                                {"ALTER TABLE public.t VALIDATE CONSTRAINT t_a_fkey"}
CREATE TABLE public.v (   "'" INT8 NULL,   s STRING NULL,   rowid INT8 NOT VISIBLE NOT NULL DEFAULT unique_rowid(),   CONSTRAINT v_pkey PRIMARY KEY (rowid ASC),   CONSTRAINT "v_'_fkey" FOREIGN KEY ("'") REFERENCES public.t(rowid),   CONSTRAINT v_s_fkey FOREIGN KEY (s) REFERENCES public.v(s),   UNIQUE INDEX v_s_key (s ASC) )                                                         CREATE TABLE public.v (   "'" INT8 NULL,   s STRING NULL,   rowid INT8 NOT VISIBLE NOT NULL DEFAULT unique_rowid(),   CONSTRAINT v_pkey PRIMARY KEY (rowid ASC),   UNIQUE INDEX v_s_key (s ASC) )                                                                                                                                                                                             {"ALTER TABLE public.v ADD CONSTRAINT \"v_'_fkey\" FOREIGN KEY (\"'\") REFERENCES public.t(rowid)","ALTER TABLE public.v ADD CONSTRAINT v_s_fkey FOREIGN KEY (s) REFERENCES public.v(s)"}  {"ALTER TABLE public.v VALIDATE CONSTRAINT \"v_'_fkey\"","ALTER TABLE public.v VALIDATE CONSTRAINT v_s_fkey"}
CREATE TABLE public.c (   a INT8 NOT NULL,   b INT8 NULL,   rowid INT8 NOT VISIBLE NOT NULL DEFAULT unique_rowid(),   CONSTRAINT c_pkey PRIMARY KEY (rowid ASC),   INDEX c_a_b_idx (a ASC, b ASC),   FAMILY fam_0_a_rowid (a, rowid),   FAMILY fam_1_b (b) ); COMMENT ON TABLE public.c IS 'table'; COMMENT ON COLUMN public.c.a IS 'column'; COMMENT ON INDEX public.c@c_a_b_idx IS 'index'  CREATE TABLE public.c (   a INT8 NOT NULL,   b INT8 NULL,   rowid INT8 NOT VISIBLE NOT NULL DEFAULT unique_rowid(),   CONSTRAINT c_pkey PRIMARY KEY (rowid ASC),   INDEX c_a_b_idx (a ASC, b ASC),   FAMILY fam_0_a_rowid (a, rowid),   FAMILY fam_1_b (b) ); COMMENT ON TABLE public.c IS 'table'; COMMENT ON COLUMN public.c.a IS 'column'; COMMENT ON INDEX public.c@c_a_b_idx IS 'index'  {}                                                                                                                                                                                         {}

query T noticetrace
CREATE UNLOGGED TABLE unlogged_tbl (col int PRIMARY KEY)
----
NOTICE: UNLOGGED TABLE will behave as a regular table in CockroachDB

query TT
SHOW CREATE TABLE unlogged_tbl
----
unlogged_tbl  CREATE TABLE public.unlogged_tbl (
                col INT8 NOT NULL,
                CONSTRAINT unlogged_tbl_pkey PRIMARY KEY (col ASC)
              )

statement error pgcode 22023 invalid storage parameter "foo"
CREATE TABLE a (b INT) WITH (foo=100);

statement error parameter "fillfactor" requires a float value
CREATE TABLE a (b INT) WITH (fillfactor=true);

statement error unimplemented: storage parameter "toast_tuple_target"
CREATE TABLE a (b INT) WITH (toast_tuple_target=100);

query T noticetrace
CREATE TABLE a (b INT) WITH (fillfactor=99.9)
----
NOTICE: storage parameter "fillfactor" is ignored

query T noticetrace
CREATE INDEX a_idx ON a(b) WITH (fillfactor=50)
----
NOTICE: storage parameter "fillfactor" is ignored

statement ok
DROP TABLE a CASCADE;

query T noticetrace
CREATE TABLE a (b INT) WITH (autovacuum_enabled=off)
----
NOTICE: storage parameter "autovacuum_enabled = 'off'" is ignored

statement ok
DROP TABLE a CASCADE;

query T noticetrace
CREATE TABLE a (b INT) WITH (autovacuum_enabled=on)
----

statement ok
DROP TABLE a CASCADE;

statement error parameter "autovacuum_enabled" requires a Boolean value
CREATE TABLE a (b INT) WITH (autovacuum_enabled='11')
