mirror of
https://github.com/timescale/timescaledb.git
synced 2025-05-18 03:23:37 +08:00
48 lines
1.5 KiB
MySQL
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;
|
|
|
|
|