diff --git a/src/nodes/hypertable_modify.c b/src/nodes/hypertable_modify.c index 044095983..f599808a2 100644 --- a/src/nodes/hypertable_modify.c +++ b/src/nodes/hypertable_modify.c @@ -947,8 +947,8 @@ ExecModifyTable(PlanState *pstate) tupleid, oldtuple, true, - false, node->canSetTag, + false, NULL, NULL); break; diff --git a/test/expected/create_table.out b/test/expected/create_table.out index 611032c7c..d828289ca 100644 --- a/test/expected/create_table.out +++ b/test/expected/create_table.out @@ -16,3 +16,44 @@ SELECT create_hypertable('test_hyper_pk', 'time'); CREATE TABLE test_fk(time TIMESTAMPTZ REFERENCES test_hyper_pk(time)); ERROR: foreign keys to hypertables are not supported \set ON_ERROR_STOP 1 +CREATE TABLE test_delete(time timestamp with time zone PRIMARY KEY, temp float); +SELECT create_hypertable('test_delete', 'time'); + create_hypertable +-------------------------- + (2,public,test_delete,t) +(1 row) + +INSERT INTO test_delete VALUES('2017-01-20T09:00:01', 22.5); +INSERT INTO test_delete VALUES('2017-01-20T09:00:21', 21.2); +INSERT INTO test_delete VALUES('2017-01-20T09:00:47', 25.1); +INSERT INTO test_delete VALUES('2020-01-20T09:00:47', 25.1); +INSERT INTO test_delete VALUES('2021-01-20T09:00:47', 25.1); +SELECT * FROM test_delete WHERE temp = 25.1 ORDER BY time; + time | temp +------------------------------+------ + Fri Jan 20 09:00:47 2017 PST | 25.1 + Mon Jan 20 09:00:47 2020 PST | 25.1 + Wed Jan 20 09:00:47 2021 PST | 25.1 +(3 rows) + +CREATE OR replace FUNCTION test_delete_row_count() +RETURNS void AS $$ +DECLARE + v_cnt numeric; +BEGIN + v_cnt := 0; + + DELETE FROM test_delete WHERE temp = 25.1; + GET DIAGNOSTICS v_cnt = ROW_COUNT; + + IF v_cnt != 3 THEN + RAISE EXCEPTION 'unexpected result'; + END IF; +END; +$$ LANGUAGE plpgsql; +SELECT test_delete_row_count(); + test_delete_row_count +----------------------- + +(1 row) + diff --git a/test/sql/create_table.sql b/test/sql/create_table.sql index 8a79220e6..67ad3390c 100644 --- a/test/sql/create_table.sql +++ b/test/sql/create_table.sql @@ -13,3 +13,30 @@ SELECT create_hypertable('test_hyper_pk', 'time'); -- Foreign key constraints that reference hypertables are currently unsupported CREATE TABLE test_fk(time TIMESTAMPTZ REFERENCES test_hyper_pk(time)); \set ON_ERROR_STOP 1 + +CREATE TABLE test_delete(time timestamp with time zone PRIMARY KEY, temp float); +SELECT create_hypertable('test_delete', 'time'); +INSERT INTO test_delete VALUES('2017-01-20T09:00:01', 22.5); +INSERT INTO test_delete VALUES('2017-01-20T09:00:21', 21.2); +INSERT INTO test_delete VALUES('2017-01-20T09:00:47', 25.1); +INSERT INTO test_delete VALUES('2020-01-20T09:00:47', 25.1); +INSERT INTO test_delete VALUES('2021-01-20T09:00:47', 25.1); +SELECT * FROM test_delete WHERE temp = 25.1 ORDER BY time; + +CREATE OR replace FUNCTION test_delete_row_count() +RETURNS void AS $$ +DECLARE + v_cnt numeric; +BEGIN + v_cnt := 0; + + DELETE FROM test_delete WHERE temp = 25.1; + GET DIAGNOSTICS v_cnt = ROW_COUNT; + + IF v_cnt != 3 THEN + RAISE EXCEPTION 'unexpected result'; + END IF; +END; +$$ LANGUAGE plpgsql; + +SELECT test_delete_row_count();