timescaledb/tsl/test/shared/sql/generated_columns.sql.in
gayyappan 0d99592b20 Add tests for ALTER COLUMN .. DROP EXPRESSION
This PR adds tests for dropping defaults for generated
columns. This is done by executing
ALTER TABLE .. ALTER COLUMN .. DROP EXPRESSION
This feature is introduced in PG13.
2021-02-12 12:32:28 -05:00

48 lines
1.5 KiB
MySQL

-- This file and its contents are licensed under the Timescale License.
-- Please see the included NOTICE for copyright information and
-- LICENSE-TIMESCALE for a copy of the license.
CREATE TABLE gencol_tab (
a INT NOT NULL,
b INT,
c INT GENERATED ALWAYS AS (a + b) STORED
);
SELECT table_name FROM create_hypertable('gencol_tab', 'a', chunk_time_interval=>10);
INSERT INTO gencol_tab(a, b) VALUES(1, 2);
INSERT INTO gencol_tab(a, b) VALUES(2, 3);
-- Ensure generated column cannot be updated
\set ON_ERROR_STOP 0
INSERT INTO gencol_tab VALUES(3, 5, 8);
\set ON_ERROR_STOP 1
SELECT * FROM gencol_tab ORDER BY a;
DROP TABLE gencol_tab;
-- Ensure that generated column cannot be used for partitioning
-- Generated as expression
CREATE TABLE gencol_test (
a INT NOT NULL,
b INT GENERATED ALWAYS AS (a + 123) STORED
);
\set ON_ERROR_STOP 0
SELECT table_name FROM create_hypertable('gencol_test', 'a', 'b', 2, chunk_time_interval=>10);
\set ON_ERROR_STOP 1
-- check if default generated expression can be dropped (works on >= PG13)
SELECT table_name FROM create_hypertable('gencol_test', 'a', chunk_time_interval=>10);
SELECT attname, atthasdef, attidentity, attgenerated, attnotnull
FROM pg_attribute where attname = 'b' and attrelid = 'gencol_test'::regclass;
\set ON_ERROR_STOP 0
ALTER TABLE gencol_test ALTER COLUMN b DROP EXPRESSION;
\set ON_ERROR_STOP 1
SELECT attname, atthasdef, attidentity, attgenerated, attnotnull
FROM pg_attribute where attname = 'b' and attrelid = 'gencol_test'::regclass;
DROP TABLE gencol_test;