# LogicTest: local

statement ok
CREATE TABLE ok1 (
    a INT PRIMARY KEY, b INT,
    INDEX (b) PARTITION BY LIST (b) (
        PARTITION p1 VALUES IN (1),
        PARTITION pu VALUES IN (NULL)
    )
)

query TT
SHOW CREATE TABLE ok1
----
ok1  CREATE TABLE ok1 (
     a INT8 NOT NULL,
     b INT8 NULL,
     CONSTRAINT "primary" PRIMARY KEY (a ASC),
     INDEX ok1_b_idx (b ASC) PARTITION BY LIST (b) (
       PARTITION p1 VALUES IN ((1)),
       PARTITION pu VALUES IN ((NULL))
     ),
     FAMILY "primary" (a, b)
)

# Verify that secondary indexes with a partition for NULLs can actually store
# NULLs.
statement ok
INSERT INTO ok1 (a, b) VALUES (1, NULL), (2, NULL)

statement ok
CREATE TABLE ok2 (
    a INT PRIMARY KEY, b INT,
    UNIQUE (b) PARTITION BY LIST (b) (
        PARTITION p1 VALUES IN (1)
    )
)

query TT
SHOW CREATE TABLE ok2
----
ok2  CREATE TABLE ok2 (
     a INT8 NOT NULL,
     b INT8 NULL,
     CONSTRAINT "primary" PRIMARY KEY (a ASC),
     UNIQUE INDEX ok2_b_key (b ASC) PARTITION BY LIST (b) (
       PARTITION p1 VALUES IN ((1))
     ),
     FAMILY "primary" (a, b)
)

statement ok
CREATE TABLE ok3 (
    a INT PRIMARY KEY, b INT,
    UNIQUE INDEX (b) PARTITION BY LIST (b) (
        PARTITION p1 VALUES IN (1)
    )
)

query TT
SHOW CREATE TABLE ok3
----
ok3  CREATE TABLE ok3 (
     a INT8 NOT NULL,
     b INT8 NULL,
     CONSTRAINT "primary" PRIMARY KEY (a ASC),
     UNIQUE INDEX ok3_b_key (b ASC) PARTITION BY LIST (b) (
       PARTITION p1 VALUES IN ((1))
     ),
     FAMILY "primary" (a, b)
)

statement ok
CREATE TABLE indexes (a INT PRIMARY KEY, b INT)

statement ok
CREATE INDEX i1 ON indexes (b) PARTITION BY LIST (b) (
    PARTITION p1 VALUES IN (1)
)

statement ok
CREATE UNIQUE INDEX i2 ON indexes (b) PARTITION BY LIST (b) (
    PARTITION p2 VALUES IN (1)
)

statement ok
CREATE INDEX IF NOT EXISTS i3 ON indexes (b) PARTITION BY LIST (b) (
    PARTITION p3 VALUES IN (1)
)

statement ok
CREATE UNIQUE INDEX IF NOT EXISTS i4 ON indexes (b) PARTITION BY LIST (b) (
    PARTITION p4 VALUES IN (1)
)

statement error PARTITION p1: name must be unique \(used in both index "i1" and index "i5"\)
CREATE INDEX i5 ON indexes (b) PARTITION BY LIST (b) (
    PARTITION p1 VALUES IN (1)
)

query TT
SHOW CREATE TABLE indexes
----
indexes  CREATE TABLE indexes (
         a INT8 NOT NULL,
         b INT8 NULL,
         CONSTRAINT "primary" PRIMARY KEY (a ASC),
         INDEX i1 (b ASC) PARTITION BY LIST (b) (
           PARTITION p1 VALUES IN ((1))
         ),
         UNIQUE INDEX i2 (b ASC) PARTITION BY LIST (b) (
           PARTITION p2 VALUES IN ((1))
         ),
         INDEX i3 (b ASC) PARTITION BY LIST (b) (
           PARTITION p3 VALUES IN ((1))
         ),
         UNIQUE INDEX i4 (b ASC) PARTITION BY LIST (b) (
           PARTITION p4 VALUES IN ((1))
         ),
         FAMILY "primary" (a, b)
)
