Schema 1.2.0: meta.series_schemas registry; lower-case name checks
- meta.series_schemas (name, description, created_at, created_by), seeded with 'series'. FK series_db_schema_fkey from meta.series.db_schema: a series may only live in a registered schema, for every client. Unregistered schemas belong to the user and are never touched. - CHECK series_schemas_name_check and series_table_name_check enforce the shared lower-case identifier rule in the database. - meta.find_schema_problems() covers the registry and reports a registered schema that no longer exists; user schemas are not examined. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
155fc7c3dd
commit
4c067bc4b9
7 changed files with 59 additions and 5 deletions
|
|
@ -114,6 +114,10 @@ BEGIN
|
|||
('meta.instruments', 'asset_class', 'character varying(30)', false),
|
||||
('meta.instruments', 'geography', 'character varying(30)', false),
|
||||
('meta.instruments', 'underlying', 'character varying(30)', false),
|
||||
('meta.series_schemas', 'name', 'text', true),
|
||||
('meta.series_schemas', 'description', 'text', false),
|
||||
('meta.series_schemas', 'created_at', 'timestamp with time zone', true),
|
||||
('meta.series_schemas', 'created_by', 'text', true),
|
||||
('meta.security_types', 'code', 'character varying(10)', true),
|
||||
('meta.security_types', 'name', 'character varying(50)', true),
|
||||
('meta.security_types', 'description', 'text', false),
|
||||
|
|
@ -211,6 +215,10 @@ BEGIN
|
|||
('meta.sessions', 'sessions_pkey'),
|
||||
('meta.series', 'series_pkey'),
|
||||
('meta.series', 'series_schema_table_key'),
|
||||
('meta.series', 'series_db_schema_fkey'),
|
||||
('meta.series', 'series_table_name_check'),
|
||||
('meta.series_schemas', 'series_schemas_pkey'),
|
||||
('meta.series_schemas', 'series_schemas_name_check'),
|
||||
('meta.currencies', 'currencies_pkey'),
|
||||
('meta.security_types', 'security_types_pkey'),
|
||||
('meta.timezones', 'timezones_pkey')
|
||||
|
|
@ -301,12 +309,27 @@ BEGIN
|
|||
FROM (VALUES
|
||||
('meta.timezones', 563),
|
||||
('meta.currencies', 179),
|
||||
('meta.security_types', 13)
|
||||
('meta.security_types', 13),
|
||||
('meta.series_schemas', 1)
|
||||
) AS e(tbl, expected)
|
||||
WHERE to_regclass(e.tbl) IS NOT NULL
|
||||
) AS r
|
||||
WHERE r.actual < r.expected;
|
||||
|
||||
-- Series schema registry ------------------------------------------------
|
||||
-- Only REGISTERED schemas are examined; user schemas are never looked at.
|
||||
IF to_regclass('meta.series_schemas') IS NOT NULL THEN
|
||||
RETURN QUERY
|
||||
SELECT 'series schema series', 'not registered in meta.series_schemas'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM meta.series_schemas WHERE name = 'series');
|
||||
|
||||
RETURN QUERY
|
||||
SELECT 'series schema ' || r.name, 'registered but the schema does not exist'
|
||||
FROM meta.series_schemas r
|
||||
WHERE NOT EXISTS (SELECT 1 FROM pg_namespace WHERE nspname = r.name)
|
||||
ORDER BY r.name;
|
||||
END IF;
|
||||
|
||||
IF to_regclass('meta.schema_version') IS NOT NULL THEN
|
||||
RETURN QUERY
|
||||
SELECT 'schema version', 'not recorded in meta.schema_version'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue