timescaledb/test/sql/broken_tables.sql
Lakshmi Narayanan Sreethar e5691bee11 Cleanup PG12 specific code from source and test files
Removed the PG12 specific macros and all the now, dead code. Also updated
the testcases which had workarounds in place to make them compatible
with PG12.
2023-07-25 16:00:18 +05:30

86 lines
2.8 KiB
SQL

-- This file and its contents are licensed under the Apache License 2.0.
-- Please see the included NOTICE for copyright information and
-- LICENSE-APACHE for a copy of the license.
-- Hypertables can break as a result of race conditions, but we should
-- still not crash when trying to truncate or delete the broken table.
\c :TEST_DBNAME :ROLE_SUPERUSER
CREATE VIEW missing_slices AS
SELECT DISTINCT
dimension_slice_id,
constraint_name,
attname AS column_name,
pg_get_expr(conbin, conrelid) AS constraint_expr
FROM
_timescaledb_catalog.chunk_constraint cc
JOIN _timescaledb_catalog.chunk ch ON cc.chunk_id = ch.id
JOIN pg_constraint ON conname = constraint_name
JOIN pg_namespace ns ON connamespace = ns.oid
AND ns.nspname = ch.schema_name
JOIN pg_attribute ON attnum = conkey[1]
AND attrelid = conrelid
WHERE
dimension_slice_id NOT IN (SELECT id FROM _timescaledb_catalog.dimension_slice);
-- To drop rows from dimension_slice table, we need to remove some
-- constraints.
ALTER TABLE _timescaledb_catalog.chunk_constraint
DROP CONSTRAINT chunk_constraint_dimension_slice_id_fkey;
CREATE TABLE chunk_test_int(time integer, temp float8, tag integer, color integer);
SELECT create_hypertable('chunk_test_int', 'time', 'tag', 2, chunk_time_interval => 3);
INSERT INTO chunk_test_int VALUES
(4, 24.3, 1, 1),
(4, 24.3, 2, 1),
(10, 24.3, 2, 1);
SELECT * FROM _timescaledb_catalog.dimension_slice ORDER BY id;
SELECT DISTINCT
chunk_id,
dimension_slice_id,
constraint_name,
pg_get_expr(conbin, conrelid) AS constraint_expr
FROM _timescaledb_catalog.chunk_constraint,
LATERAL (
SELECT *
FROM pg_constraint JOIN pg_namespace ns ON connamespace = ns.oid
WHERE conname = constraint_name
) AS con
ORDER BY chunk_id, dimension_slice_id;
DELETE FROM _timescaledb_catalog.dimension_slice WHERE id = 1;
SELECT * FROM missing_slices;
TRUNCATE TABLE chunk_test_int;
DROP TABLE chunk_test_int;
CREATE TABLE chunk_test_int(time integer, temp float8, tag integer, color integer);
SELECT create_hypertable('chunk_test_int', 'time', 'tag', 2, chunk_time_interval => 3);
INSERT INTO chunk_test_int VALUES
(4, 24.3, 1, 1),
(4, 24.3, 2, 1),
(10, 24.3, 2, 1);
SELECT DISTINCT
chunk_id,
dimension_slice_id,
constraint_name,
pg_get_expr(conbin, conrelid) AS constraint_expr
FROM _timescaledb_catalog.chunk_constraint,
LATERAL (
SELECT *
FROM pg_constraint JOIN pg_namespace ns ON connamespace = ns.oid
WHERE conname = constraint_name
) AS con
ORDER BY chunk_id, dimension_slice_id;
DELETE FROM _timescaledb_catalog.dimension_slice WHERE id = 5;
SELECT * FROM missing_slices;
DROP TABLE chunk_test_int;