Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions diagnostic.sql
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ $$;
-- catalog corruption checks
DO $$
DECLARE
v_query text;
v_count int8;
v_relnames text[];
v_rels regclass[];
Expand All @@ -53,10 +54,18 @@ BEGIN
END IF;

-- chunks with missing relations
SELECT count(*), array_agg(format('%I.%I',ch.schema_name,ch.table_name)) INTO v_count, v_relnames
FROM _timescaledb_catalog.chunk ch WHERE
NOT dropped AND
NOT EXISTS (SELECT FROM pg_class c JOIN pg_namespace n ON c.relnamespace = n.oid WHERE c.relname=ch.table_name AND n.nspname = ch.schema_name);
-- this check finds chunks that have an entry in our catalog but the actual table is missing
v_query := $sql$
SELECT count(*), array_agg(format('%I.%I',ch.schema_name,ch.table_name))
FROM _timescaledb_catalog.chunk ch WHERE
NOT EXISTS (SELECT FROM pg_class c JOIN pg_namespace n ON c.relnamespace = n.oid WHERE c.relname=ch.table_name AND n.nspname = ch.schema_name)
$sql$;
PERFORM FROM pg_attribute a JOIN pg_class c ON c.oid = a.attrelid AND c.relnamespace='_timescaledb_catalog'::regnamespace AND c.relname = 'chunk' WHERE a.attname = 'dropped';
IF FOUND THEN
v_query := v_query || ' AND NOT ch.dropped';
END IF;

EXECUTE v_query INTO v_count, v_relnames;
IF v_count > 0 THEN
RAISE WARNING 'Found % chunk entries without relations: %', v_count, v_relnames[1:20];
END IF;
Expand Down Expand Up @@ -217,7 +226,9 @@ BEGIN
format('%I.%I',ch.schema_name, ch.table_name) chunk,
format('%I.%I',ch2.schema_name, ch2.table_name) compressed
FROM _timescaledb_catalog.chunk ch
JOIN pg_class c_ch ON c_ch.relname = ch.table_name AND c_ch.relnamespace = ch.schema_name::regnamespace
JOIN _timescaledb_catalog.chunk ch2 ON ch2.id = ch.compressed_chunk_id
JOIN pg_class c_ch2 ON c_ch2.relname = ch2.table_name AND c_ch2.relnamespace = ch2.schema_name::regnamespace
WHERE ch.hypertable_id = v_hypertable_id
LOOP
RAISE DEBUG ' Checking chunk: %', v_chunk;
Expand Down