-- DROP a table's column before making it a hypertable CREATE TABLE alter_before(id serial, time timestamp, temp float, colorid integer); ALTER TABLE alter_before DROP COLUMN id; SELECT create_hypertable('alter_before', 'time', chunk_time_interval => 2628000000000); INSERT INTO alter_before VALUES ('2017-03-22T09:18:22', 23.5, 1); SELECT * FROM alter_before; -- Show that deleted column is marked as dropped and that attnums are -- now different for the root table and the chunk SELECT c.relname, a.attname, a.attnum FROM pg_attribute a, pg_class c WHERE a.attrelid = c.oid AND (c.relname LIKE '_hyper_1%_chunk' OR c.relname = 'alter_before') AND a.attnum > 0; -- DROP a table's column after making it a hypertable and having data CREATE TABLE alter_after(id serial, time timestamp, temp float, colorid integer); SELECT create_hypertable('alter_after', 'time', chunk_time_interval => 2628000000000); -- Create first chunk INSERT INTO alter_after (time, temp, colorid) VALUES ('2017-03-22T09:18:22', 23.5, 1); ALTER TABLE alter_after DROP COLUMN id; -- Creating new chunks after dropping a column should work just fine INSERT INTO alter_after VALUES ('2017-03-22T09:18:23', 21.5, 1), ('2017-05-22T09:18:22', 36.2, 2), ('2017-05-22T09:18:23', 15.2, 2); -- Make sure tuple conversion also works with COPY \COPY alter_after FROM 'data/alter.tsv' NULL AS ''; -- Data should look OK SELECT * FROM alter_after; -- Show that attnums are different for chunks created after DROP -- column SELECT c.relname, a.attname, a.attnum FROM pg_attribute a, pg_class c WHERE a.attrelid = c.oid AND (c.relname LIKE '_hyper_2%_chunk' OR c.relname = 'alter_after') AND a.attnum > 0; -- Add an ID column again ALTER TABLE alter_after ADD COLUMN id serial; INSERT INTO alter_after (time, temp, colorid) VALUES ('2017-08-22T09:19:14', 12.5, 3); SELECT c.relname, a.attname, a.attnum FROM pg_attribute a, pg_class c WHERE a.attrelid = c.oid AND (c.relname LIKE '_hyper_2%_chunk' OR c.relname = 'alter_after') AND a.attnum > 0; SELECT * FROM alter_after;