CREATE SCHEMA "distributed planning";
SET search_path TO "distributed planning";
CREATE TABLE
date_part_table (event_time timestamp, event int, user_id int)
partition by range (event_time);
SELECT create_distributed_table('date_part_table', 'user_id');
 create_distributed_table
---------------------------------------------------------------------

(1 row)

-- an unnamed index
CREATE INDEX ON date_part_table(user_id, event_time);
--create named and long index with parameters
CREATE INDEX event_idx ON date_part_table(event, event_time, user_id, user_id, event_time);
SELECT create_time_partitions(table_name:='date_part_table',
  partition_interval:= '1 week',
  end_at:= '2020-01-20',
  start_from:='2020-01-01');
 create_time_partitions
---------------------------------------------------------------------
 t
(1 row)

INSERT INTO date_part_table
	SELECT '2020-01-01'::timestamp + '3 hours'::interval * i, i, i % 20 FROM generate_series(0,100)i;
CREATE TABLE test(x bigint, y bigint);
SELECT create_distributed_table('test','x');
 create_distributed_table
---------------------------------------------------------------------

(1 row)

CREATE TYPE new_type AS (n int, m text);
CREATE TABLE test_2(x bigint, y bigint, z new_type);
SELECT create_distributed_table('test_2','x');
 create_distributed_table
---------------------------------------------------------------------

(1 row)

CREATE TABLE ref(a bigint, b bigint);
SELECT create_reference_table('ref');
 create_reference_table
---------------------------------------------------------------------

(1 row)

CREATE TABLE ref2(a bigint, b bigint);
SELECT create_reference_table('ref2');
 create_reference_table
---------------------------------------------------------------------

(1 row)

CREATE TABLE local(c bigint, d bigint);
select citus_add_local_table_to_metadata('local');
 citus_add_local_table_to_metadata
---------------------------------------------------------------------

(1 row)

CREATE TABLE non_binary_copy_test (key int PRIMARY KEY, value new_type);
SELECT create_distributed_table('non_binary_copy_test', 'key');
 create_distributed_table
---------------------------------------------------------------------

(1 row)

INSERT INTO non_binary_copy_test SELECT i, (i, 'citus9.5')::new_type FROM generate_series(0,1000)i;
-- Test upsert with constraint
CREATE TABLE upsert_test
(
	part_key int UNIQUE,
	other_col int,
	third_col int
);
-- distribute the table
SELECT create_distributed_table('upsert_test', 'part_key');
 create_distributed_table
---------------------------------------------------------------------

(1 row)

-- do a regular insert
INSERT INTO upsert_test (part_key, other_col) VALUES (1, 1), (2, 2) RETURNING *;
 part_key | other_col | third_col
---------------------------------------------------------------------
        1 |         1 |
        2 |         2 |
(2 rows)

create table t1(a int, b int, c int primary key, d int);
ALTER TABLE t1 DROP COLUMN b;
select create_distributed_table('t1','c');
 create_distributed_table
---------------------------------------------------------------------

(1 row)

ALTER TABLE t1 DROP COLUMN d;
CREATE TABLE companies (
    id bigint NOT NULL,
    name character varying NOT NULL,
    created_at timestamp without time zone NOT NULL,
    a int,
    b int,
    updated_at timestamp without time zone NOT NULL,
    fmi boolean DEFAULT false NOT NULL,
    meta jsonb DEFAULT '{}'::jsonb NOT NULL,
    deleted_at timestamp without time zone,
    c int,
    flex boolean DEFAULT false
);
ALTER TABLE ONLY companies
    ADD CONSTRAINT companies_pkey PRIMARY KEY (id);
alter table companies drop column a;
alter table companies drop column b;
SELECT create_reference_table('companies');
 create_reference_table
---------------------------------------------------------------------

(1 row)

alter table companies drop column c;
