CREATE SCHEMA "prepared statements"; SET search_path TO "prepared statements"; CREATE TABLE repartition_prepared_test (a int, b int); SELECT create_distributed_table('repartition_prepared_test', 'a'); create_distributed_table --------------------------------------------------------------------- (1 row) INSERT INTO repartition_prepared_test SELECT i%2, i%3 FROM generate_series(0,24)i; -- create a custom type which also exists on worker nodes CREATE TYPE test_composite_type AS ( i integer, i2 integer ); CREATE TABLE router_executor_table ( id bigint NOT NULL, comment varchar(20), stats test_composite_type ); SELECT create_distributed_table('router_executor_table', 'id'); create_distributed_table --------------------------------------------------------------------- (1 row) -- test router executor with prepare statements CREATE TABLE prepare_table ( key int, value int ); SELECT create_distributed_table('prepare_table','key'); create_distributed_table --------------------------------------------------------------------- (1 row) -- Testing parameters + function evaluation CREATE TABLE prepare_func_table ( key text, value1 int, value2 text, value3 timestamptz DEFAULT now() ); SELECT create_distributed_table('prepare_func_table', 'key'); create_distributed_table --------------------------------------------------------------------- (1 row) -- test function evaluation with parameters in an expression PREPARE prepared_function_evaluation_insert(int) AS INSERT INTO prepare_func_table (key, value1) VALUES ($1+1, 0*random()); -- Text columns can give issues when there is an implicit cast from varchar CREATE TABLE text_partition_column_table ( key text NOT NULL, value int ); SELECT create_distributed_table('text_partition_column_table', 'key'); create_distributed_table --------------------------------------------------------------------- (1 row) -- Domain type columns can give issues -- and we use offset to prevent output diverging CREATE DOMAIN test_key AS text CHECK(VALUE ~ '^test-\d$'); CREATE TABLE domain_partition_column_table ( key test_key NOT NULL, value int ); SELECT create_distributed_table('domain_partition_column_table', 'key'); create_distributed_table --------------------------------------------------------------------- (1 row) -- verify we re-evaluate volatile functions every time CREATE TABLE http_request ( site_id INT, ingest_time TIMESTAMPTZ DEFAULT now(), url TEXT, request_country TEXT, ip_address TEXT, status_code INT, response_time_msec INT ); SELECT create_distributed_table('http_request', 'site_id'); create_distributed_table --------------------------------------------------------------------- (1 row) -- Standard planner converted text and varchar casts to cstring in some cases -- We make sure we convert it back to text when parsing the expression -- https://github.com/citusdata/citus/issues/6061 -- https://github.com/citusdata/citus/issues/5646 -- https://github.com/citusdata/citus/issues/5033 CREATE TABLE test(t timestamp, user_id int); SELECT create_distributed_table('test', 'user_id'); create_distributed_table --------------------------------------------------------------------- (1 row)