citus/src/test/regress/output/multi_append_table_to_shard...

139 lines
4.2 KiB
Plaintext

--
-- MULTI_APPEND_TABLE_TO_SHARD
--
-- Initialize tables to join
CREATE TABLE multi_append_table_to_shard_right
(
right_number INTEGER not null,
right_text TEXT not null
);
SELECT create_distributed_table('multi_append_table_to_shard_right', 'right_number', 'append');
create_distributed_table
--------------------------
(1 row)
CREATE TABLE multi_append_table_to_shard_left
(
left_number INTEGER not null,
left_text TEXT not null
);
SELECT create_distributed_table('multi_append_table_to_shard_left', 'left_number', 'append');
create_distributed_table
--------------------------
(1 row)
-- Replicate 'left' table on both workers
SELECT set_config('citus.shard_replication_factor', '2', false);
set_config
------------
2
(1 row)
\STAGE multi_append_table_to_shard_left FROM '@abs_srcdir@/data/agg.data'
\STAGE multi_append_table_to_shard_left FROM '@abs_srcdir@/data/agg.data'
-- Place 'right' table only on the primary worker
SELECT set_config('citus.shard_replication_factor', '1', false);
set_config
------------
1
(1 row)
\STAGE multi_append_table_to_shard_right FROM '@abs_srcdir@/data/agg.data'
-- Reset shard replication factor to ensure tasks will be assigned to both workers
SELECT set_config('citus.shard_replication_factor', '2', false);
set_config
------------
2
(1 row)
-- All 8 rows in left table match a row in right table
SELECT COUNT(*)
FROM multi_append_table_to_shard_left,
multi_append_table_to_shard_right
WHERE left_number = right_number;
count
-------
8
(1 row)
-- Now append more data to the 'right' table
CREATE TABLE multi_append_table_to_shard_stage
(
number INTEGER not null,
text TEXT not null
);
COPY multi_append_table_to_shard_stage FROM '@abs_srcdir@/data/agg.data';
SELECT append_table_to_shard(shardid, 'multi_append_table_to_shard_stage', 'localhost', 57636)
FROM
pg_dist_shard
WHERE 'multi_append_table_to_shard_right'::regclass::oid = logicalrelid;
append_table_to_shard
-----------------------
0.0533333
(1 row)
-- Only the primary worker will see the new matches, as the secondary still uses a cached shard
SELECT COUNT(*)
FROM multi_append_table_to_shard_left,
multi_append_table_to_shard_right
WHERE left_number = right_number;
count
-------
12
(1 row)
-- Now add a lot of data to ensure we increase the size on disk
DELETE FROM multi_append_table_to_shard_stage;
COPY multi_append_table_to_shard_stage FROM '@abs_srcdir@/data/large_records.data' with delimiter '|';
SELECT append_table_to_shard(shardid, 'multi_append_table_to_shard_stage', 'localhost', 57636)
FROM
pg_dist_shard
WHERE 'multi_append_table_to_shard_right'::regclass::oid = logicalrelid;
append_table_to_shard
-----------------------
0.106667
(1 row)
-- This join will refresh the shard on the secondary, all 8 rows in the left table will match twice (16)
SELECT COUNT(*)
FROM multi_append_table_to_shard_left,
multi_append_table_to_shard_right
WHERE left_number = right_number;
count
-------
16
(1 row)
-- Check that we error out if we try to append data to a hash partitioned table.
UPDATE pg_dist_partition SET partmethod = 'h' WHERE
logicalrelid = 'multi_append_table_to_shard_right'::regclass::oid;
SELECT create_empty_shard('multi_append_table_to_shard_right');
ERROR: relation "multi_append_table_to_shard_right" is a hash partitioned table
DETAIL: We currently don't support creating shards on hash-partitioned tables
SELECT append_table_to_shard(shardid, 'multi_append_table_to_shard_stage', 'localhost', 57636)
FROM
pg_dist_shard
WHERE 'multi_append_table_to_shard_right'::regclass::oid = logicalrelid;
ERROR: cannot append to shardId 103013
DETAIL: We currently don't support appending to shards in hash-partitioned tables
UPDATE pg_dist_partition SET partmethod = 'a' WHERE
logicalrelid = 'multi_append_table_to_shard_right'::regclass::oid;
-- Clean up after test
SELECT apply_delete_command('DELETE FROM multi_append_table_to_shard_right');
apply_delete_command
----------------------
1
(1 row)
SELECT apply_delete_command('DELETE FROM multi_append_table_to_shard_left');
apply_delete_command
----------------------
2
(1 row)
DROP TABLE multi_append_table_to_shard_stage;
DROP TABLE multi_append_table_to_shard_right;
DROP TABLE multi_append_table_to_shard_left;