-- -- Testing insert on cstore_fdw tables. -- CREATE FOREIGN TABLE test_insert_command (a int) SERVER cstore_server; -- test single row inserts fail select count(*) from test_insert_command; insert into test_insert_command values(1); select count(*) from test_insert_command; insert into test_insert_command default values; select count(*) from test_insert_command; -- test inserting from another table succeed CREATE TABLE test_insert_command_data (a int); select count(*) from test_insert_command_data; insert into test_insert_command_data values(1); select count(*) from test_insert_command_data; insert into test_insert_command select * from test_insert_command_data; select count(*) from test_insert_command; drop table test_insert_command_data; drop foreign table test_insert_command; -- test long attribute value insertion -- create sufficiently long text so that data is stored in toast CREATE TABLE test_long_text AS SELECT a as int_val, string_agg(random()::text, '') as text_val FROM generate_series(1, 10) a, generate_series(1, 1000) b GROUP BY a ORDER BY a; -- store hash values of text for later comparison CREATE TABLE test_long_text_hash AS SELECT int_val, md5(text_val) AS hash FROM test_long_text; CREATE FOREIGN TABLE test_cstore_long_text(int_val int, text_val text) SERVER cstore_server; -- store long text in cstore table INSERT INTO test_cstore_long_text SELECT * FROM test_long_text; -- drop source table to remove original text from toast DROP TABLE test_long_text; -- check if text data is still available in cstore table -- by comparing previously stored hash. SELECT a.int_val FROM test_long_text_hash a, test_cstore_long_text c WHERE a.int_val = c.int_val AND a.hash = md5(c.text_val); DROP TABLE test_long_text_hash; DROP FOREIGN TABLE test_cstore_long_text;