influxdb/iox_catalog/migrations/20211229171744_initial_sche...

186 lines
5.6 KiB
SQL

-- iox_shared schema
CREATE TABLE IF NOT EXISTS kafka_topic (
id INT GENERATED ALWAYS AS IDENTITY,
name VARCHAR NOT NULL,
PRIMARY KEY (id),
CONSTRAINT kafka_topic_name_unique UNIQUE (name)
);
CREATE TABLE IF NOT EXISTS query_pool (
id SMALLINT GENERATED ALWAYS AS IDENTITY,
name VARCHAR NOT NULL,
PRIMARY KEY (id),
CONSTRAINT query_pool_name_unique UNIQUE (name)
);
CREATE TABLE IF NOT EXISTS namespace (
id INT GENERATED ALWAYS AS IDENTITY,
name VARCHAR NOT NULL,
retention_duration VARCHAR,
kafka_topic_id integer NOT NULL,
query_pool_id SMALLINT NOT NULL,
PRIMARY KEY (id),
CONSTRAINT namespace_name_unique UNIQUE (name)
);
CREATE TABLE IF NOT EXISTS table_name (
id INT GENERATED ALWAYS AS IDENTITY,
namespace_id integer NOT NULL,
name VARCHAR NOT NULL,
PRIMARY KEY (id),
CONSTRAINT table_name_unique UNIQUE (namespace_id, name)
);
CREATE TABLE IF NOT EXISTS column_name (
id INT GENERATED ALWAYS AS IDENTITY,
table_id INT NOT NULL,
name VARCHAR NOT NULL,
column_type SMALLINT NOT NULL,
PRIMARY KEY (id),
CONSTRAINT column_name_unique UNIQUE (table_id, name)
);
CREATE TABLE IF NOT EXISTS sequencer (
id SMALLINT GENERATED ALWAYS AS IDENTITY,
kafka_topic_id INT NOT NULL,
kafka_partition INT NOT NULL,
min_unpersisted_sequence_number BIGINT,
PRIMARY KEY (id),
CONSTRAINT sequencer_unique UNIQUE (kafka_topic_id, kafka_partition)
);
CREATE TABLE IF NOT EXISTS sharding_rule_override (
id INT GENERATED ALWAYS AS IDENTITY,
namespace_id INT NOT NULL,
table_id INT NOT NULL,
column_id INT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE IF NOT EXISTS PARTITION (
id BIGINT GENERATED ALWAYS AS IDENTITY,
sequencer_id SMALLINT NOT NULL,
table_id INT NOT NULL,
partition_key VARCHAR NOT NULL,
PRIMARY KEY (id),
CONSTRAINT partition_key_unique UNIQUE (table_id, partition_key)
);
CREATE TABLE IF NOT EXISTS parquet_file (
id BIGINT GENERATED ALWAYS AS IDENTITY,
sequencer_id SMALLINT NOT NULL,
table_id INT NOT NULL,
partition_id BIGINT NOT NULL,
object_store_id uuid NOT NULL,
min_sequence_number BIGINT,
max_sequence_number BIGINT,
min_time BIGINT,
max_time BIGINT,
to_delete BOOLEAN,
PRIMARY KEY (id),
CONSTRAINT parquet_location_unique UNIQUE (object_store_id)
);
CREATE TABLE IF NOT EXISTS tombstone (
id BIGINT GENERATED ALWAYS AS IDENTITY,
table_id INT NOT NULL,
sequencer_id SMALLINT NOT NULL,
sequence_number BIGINT NOT NULL,
min_time BIGINT NOT NULL,
max_time BIGINT NOT NULL,
serialized_predicate TEXT NOT NULL,
PRIMARY KEY (id),
CONSTRAINT tombstone_unique UNIQUE (table_id, sequencer_id, sequence_number)
);
CREATE TABLE IF NOT EXISTS processed_tombstone (
tombstone_id BIGINT NOT NULL,
parquet_file_id BIGINT NOT NULL,
PRIMARY KEY (tombstone_id, parquet_file_id)
);
ALTER TABLE
IF EXISTS namespace
ADD
FOREIGN KEY (kafka_topic_id) REFERENCES kafka_topic (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS namespace
ADD
FOREIGN KEY (query_pool_id) REFERENCES query_pool (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS table_name
ADD
FOREIGN KEY (namespace_id) REFERENCES namespace (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS column_name
ADD
FOREIGN KEY (table_id) REFERENCES table_name (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS sequencer
ADD
FOREIGN KEY (kafka_topic_id) REFERENCES kafka_topic (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS sharding_rule_override
ADD
FOREIGN KEY (namespace_id) REFERENCES namespace (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS sharding_rule_override
ADD
FOREIGN KEY (table_id) REFERENCES table_name (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS sharding_rule_override
ADD
FOREIGN KEY (column_id) REFERENCES column_name (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS PARTITION
ADD
FOREIGN KEY (sequencer_id) REFERENCES sequencer (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS PARTITION
ADD
FOREIGN KEY (table_id) REFERENCES table_name (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS parquet_file
ADD
FOREIGN KEY (sequencer_id) REFERENCES sequencer (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS parquet_file
ADD
FOREIGN KEY (table_id) REFERENCES table_name (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS parquet_file
ADD
FOREIGN KEY (partition_id) REFERENCES PARTITION (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS tombstone
ADD
FOREIGN KEY (sequencer_id) REFERENCES sequencer (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS tombstone
ADD
FOREIGN KEY (table_id) REFERENCES table_name (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS processed_tombstone
ADD
FOREIGN KEY (tombstone_id) REFERENCES tombstone (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;
ALTER TABLE
IF EXISTS processed_tombstone
ADD
FOREIGN KEY (parquet_file_id) REFERENCES parquet_file (id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION NOT VALID;