601 lines
38 KiB
SQL
601 lines
38 KiB
SQL
-- ============================================================
|
|
-- CANONICAL CURRENT PRODUCTION SCHEMA CONTRACT (L0)
|
|
-- db: historical · schema: public
|
|
-- Auto-generated by gen_l0_sql.py from read-only capture
|
|
-- Modus: CURRENT VERIFIED PRODUCTION TRUTH — NICHT historische Migration
|
|
-- ============================================================
|
|
|
|
-- SEMANTIC OVERRIDES (Owner-Canonical)
|
|
-- last_successful_chunk = timestamp with time zone (Production + Owner decision)
|
|
-- interrupt_reason = text · PRESERVED CURRENT CONTRACT · origin unknown · do not remove
|
|
-- technical_quality = text · nullable · default 'VALID' · historical provenance debt OPEN
|
|
|
|
CREATE SEQUENCE IF NOT EXISTS "calendar_event_event_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "corporate_action_action_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "daily_quality_report_report_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "data_gap_gap_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "data_ingestion_run_ingestion_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "data_quality_issue_issue_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "dataset_dataset_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "dataset_version_dataset_version_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "derived_bar_derived_bar_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "historical_bar_bar_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "historical_tick_tick_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "ingestion_provenance_provenance_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "instrument_instrument_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "market_calendar_calendar_id_seq";
|
|
CREATE SEQUENCE IF NOT EXISTS "provider_provider_id_seq";
|
|
|
|
-- Table: calendar_event (9 cols)
|
|
CREATE TABLE IF NOT EXISTS "calendar_event" (
|
|
"event_id" bigint NOT NULL DEFAULT nextval('calendar_event_event_id_seq'::regclass),
|
|
"calendar_id" bigint NOT NULL,
|
|
"event_date" date NOT NULL,
|
|
"kind" text NOT NULL,
|
|
"reason" text,
|
|
"session_phase_override" text,
|
|
"source" text,
|
|
"notes" text,
|
|
"created_at" timestamp with time zone NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Table: corporate_action (9 cols)
|
|
CREATE TABLE IF NOT EXISTS "corporate_action" (
|
|
"action_id" bigint NOT NULL DEFAULT nextval('corporate_action_action_id_seq'::regclass),
|
|
"instrument_id" bigint NOT NULL,
|
|
"action_type" text NOT NULL,
|
|
"ex_date" date NOT NULL,
|
|
"ratio_num" double precision,
|
|
"ratio_denom" double precision,
|
|
"dividend" double precision,
|
|
"currency" text,
|
|
"provider_id" bigint
|
|
);
|
|
|
|
-- Table: daily_quality_report (23 cols)
|
|
CREATE TABLE IF NOT EXISTS "daily_quality_report" (
|
|
"report_id" bigint NOT NULL DEFAULT nextval('daily_quality_report_report_id_seq'::regclass),
|
|
"instrument_id" bigint NOT NULL,
|
|
"provider_id" bigint NOT NULL,
|
|
"report_date" date NOT NULL,
|
|
"feed_type" text DEFAULT 'REFERENCE'::text,
|
|
"expected_m1" bigint,
|
|
"received_m1" bigint,
|
|
"eligible" bigint,
|
|
"excluded" bigint,
|
|
"conditional" bigint,
|
|
"stale_count" bigint,
|
|
"zero_volume" bigint,
|
|
"spread_median_price" double precision,
|
|
"spread_p95_price" double precision,
|
|
"spread_p99_price" double precision,
|
|
"gaps_count" bigint,
|
|
"coverage_ratio" double precision,
|
|
"session_anomalies" bigint,
|
|
"status" text NOT NULL,
|
|
"quality_model_version" text,
|
|
"session_model_version" text,
|
|
"calendar_version" text,
|
|
"generated_at" timestamp with time zone NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Table: data_gap (9 cols)
|
|
CREATE TABLE IF NOT EXISTS "data_gap" (
|
|
"gap_id" bigint NOT NULL DEFAULT nextval('data_gap_gap_id_seq'::regclass),
|
|
"provider_id" bigint NOT NULL,
|
|
"instrument_id" bigint NOT NULL,
|
|
"timeframe" text NOT NULL,
|
|
"start_utc" timestamp with time zone NOT NULL,
|
|
"end_utc" timestamp with time zone NOT NULL,
|
|
"kind" text NOT NULL,
|
|
"backfilled" boolean NOT NULL DEFAULT false,
|
|
"filled_at" timestamp with time zone
|
|
);
|
|
|
|
-- Table: data_ingestion_run (29 cols)
|
|
CREATE TABLE IF NOT EXISTS "data_ingestion_run" (
|
|
"ingestion_id" bigint NOT NULL DEFAULT nextval('data_ingestion_run_ingestion_id_seq'::regclass),
|
|
"provider_id" bigint NOT NULL,
|
|
"instrument_id" bigint NOT NULL,
|
|
"timeframe" text NOT NULL,
|
|
"start_utc" timestamp with time zone,
|
|
"end_utc" timestamp with time zone,
|
|
"rows_inserted" bigint DEFAULT 0,
|
|
"rows_skipped" bigint DEFAULT 0,
|
|
"status" text NOT NULL DEFAULT 'RUNNING'::text,
|
|
"started_at" timestamp with time zone NOT NULL DEFAULT now(),
|
|
"finished_at" timestamp with time zone,
|
|
"checkpoint" jsonb,
|
|
"status_fsm" text DEFAULT 'PENDING'::text,
|
|
"rows_downloaded" bigint DEFAULT 0,
|
|
"rows_decoded" bigint DEFAULT 0,
|
|
"rows_valid" bigint DEFAULT 0,
|
|
"rows_suspect" bigint DEFAULT 0,
|
|
"rows_excluded" bigint DEFAULT 0,
|
|
"rows_derived" bigint DEFAULT 0,
|
|
"last_successful_chunk" timestamp with time zone,
|
|
"last_timestamp" timestamp with time zone,
|
|
"updated_at" timestamp with time zone DEFAULT now(),
|
|
"interrupt_reason" text,
|
|
"rows_existing" bigint DEFAULT 0,
|
|
"rows_deduplicated" bigint DEFAULT 0,
|
|
"rows_404" bigint DEFAULT 0,
|
|
"rows_503" bigint DEFAULT 0,
|
|
"rows_provider_unavailable" bigint DEFAULT 0,
|
|
"rows_failed" bigint DEFAULT 0
|
|
);
|
|
|
|
-- Table: data_quality_issue (9 cols)
|
|
CREATE TABLE IF NOT EXISTS "data_quality_issue" (
|
|
"issue_id" bigint NOT NULL DEFAULT nextval('data_quality_issue_issue_id_seq'::regclass),
|
|
"instrument_id" bigint NOT NULL,
|
|
"timeframe" text NOT NULL,
|
|
"ts_utc" timestamp with time zone,
|
|
"severity" text NOT NULL,
|
|
"issue_type" text NOT NULL,
|
|
"detail" jsonb,
|
|
"resolved" boolean NOT NULL DEFAULT false,
|
|
"created_at" timestamp with time zone NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Table: dataset (6 cols)
|
|
CREATE TABLE IF NOT EXISTS "dataset" (
|
|
"dataset_id" bigint NOT NULL DEFAULT nextval('dataset_dataset_id_seq'::regclass),
|
|
"name" text NOT NULL,
|
|
"provider_id" bigint NOT NULL,
|
|
"feed_type" text NOT NULL,
|
|
"description" text,
|
|
"created_at" timestamp with time zone NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Table: dataset_version (23 cols)
|
|
CREATE TABLE IF NOT EXISTS "dataset_version" (
|
|
"dataset_version_id" bigint NOT NULL DEFAULT nextval('dataset_version_dataset_version_id_seq'::regclass),
|
|
"dataset_id" bigint NOT NULL,
|
|
"version_label" text NOT NULL,
|
|
"provider_id" bigint NOT NULL,
|
|
"feed_type" text NOT NULL,
|
|
"instrument_id" bigint NOT NULL,
|
|
"timeframe" text NOT NULL,
|
|
"start_utc" timestamp with time zone NOT NULL,
|
|
"end_utc" timestamp with time zone NOT NULL,
|
|
"raw_source" text NOT NULL,
|
|
"normalization_version" text NOT NULL,
|
|
"aggregation_version" text,
|
|
"quality_version" text NOT NULL,
|
|
"dataset_version_hash" text NOT NULL,
|
|
"data_as_of" timestamp with time zone NOT NULL,
|
|
"notes" text,
|
|
"created_at" timestamp with time zone NOT NULL DEFAULT now(),
|
|
"quality_model_version" text,
|
|
"stale_model_version" text,
|
|
"session_model_version" text,
|
|
"calendar_version" text,
|
|
"eligibility_model_version" text,
|
|
"is_fixture" boolean NOT NULL DEFAULT false
|
|
);
|
|
|
|
-- Table: derived_bar (35 cols)
|
|
CREATE TABLE IF NOT EXISTS "derived_bar" (
|
|
"derived_bar_id" bigint NOT NULL DEFAULT nextval('derived_bar_derived_bar_id_seq'::regclass),
|
|
"provider_id" bigint NOT NULL,
|
|
"instrument_id" bigint NOT NULL,
|
|
"feed_type" text NOT NULL DEFAULT 'REFERENCE'::text,
|
|
"price_basis" text NOT NULL DEFAULT 'bid_ask'::text,
|
|
"timeframe" text NOT NULL,
|
|
"ts_utc" timestamp with time zone NOT NULL,
|
|
"source_timeframe" text NOT NULL,
|
|
"aggregation_version" text NOT NULL,
|
|
"bid_open" double precision,
|
|
"bid_high" double precision,
|
|
"bid_low" double precision,
|
|
"bid_close" double precision,
|
|
"ask_open" double precision,
|
|
"ask_high" double precision,
|
|
"ask_low" double precision,
|
|
"ask_close" double precision,
|
|
"mid_open" double precision,
|
|
"mid_high" double precision,
|
|
"mid_low" double precision,
|
|
"mid_close" double precision,
|
|
"volume" double precision,
|
|
"volume_type" text DEFAULT 'tick'::text,
|
|
"quality_status" text NOT NULL DEFAULT 'VALID'::text,
|
|
"quality_flags" _text,
|
|
"dataset_version_id" bigint NOT NULL,
|
|
"expected_bar_count" bigint,
|
|
"actual_bar_count" bigint,
|
|
"eligible_bar_count" bigint,
|
|
"excluded_bar_count" bigint,
|
|
"coverage_ratio" double precision,
|
|
"aggregation_quality" text,
|
|
"eligibility_model_version" text DEFAULT 'eligibility_v1'::text,
|
|
"session_model_version" text DEFAULT 'fx_session_v1'::text,
|
|
"calendar_version" text DEFAULT 'fx_cal_v1'::text
|
|
);
|
|
|
|
-- Table: historical_bar (41 cols)
|
|
CREATE TABLE IF NOT EXISTS "historical_bar" (
|
|
"bar_id" bigint NOT NULL DEFAULT nextval('historical_bar_bar_id_seq'::regclass),
|
|
"provider_id" bigint NOT NULL,
|
|
"instrument_id" bigint NOT NULL,
|
|
"feed_type" text NOT NULL DEFAULT 'REFERENCE'::text,
|
|
"price_basis" text NOT NULL DEFAULT 'bid_ask'::text,
|
|
"timeframe" text NOT NULL,
|
|
"ts_utc" timestamp with time zone NOT NULL,
|
|
"raw_or_derived" text NOT NULL DEFAULT 'raw'::text,
|
|
"source_timeframe" text,
|
|
"aggregation_version" text,
|
|
"bid_open" double precision,
|
|
"bid_high" double precision,
|
|
"bid_low" double precision,
|
|
"bid_close" double precision,
|
|
"ask_open" double precision,
|
|
"ask_high" double precision,
|
|
"ask_low" double precision,
|
|
"ask_close" double precision,
|
|
"mid_open" double precision,
|
|
"mid_high" double precision,
|
|
"mid_low" double precision,
|
|
"mid_close" double precision,
|
|
"volume" double precision,
|
|
"volume_type" text DEFAULT 'tick'::text,
|
|
"quality_status" text NOT NULL DEFAULT 'VALID'::text,
|
|
"quality_flags" _text,
|
|
"source_timestamp" timestamp with time zone,
|
|
"ingested_at" timestamp with time zone NOT NULL DEFAULT now(),
|
|
"dataset_version_id" bigint NOT NULL,
|
|
"technical_quality" text DEFAULT 'VALID'::text,
|
|
"market_quality" text,
|
|
"session_state" text,
|
|
"session_phase" text,
|
|
"eligibility" text DEFAULT 'ELIGIBLE'::text,
|
|
"exclusion_reason" text,
|
|
"quality_model_version" text DEFAULT 'quality_v1'::text,
|
|
"session_model_version" text,
|
|
"calendar_version" text,
|
|
"eligibility_model_version" text DEFAULT 'eligibility_v1'::text,
|
|
"effective_eligibility" text,
|
|
"stale_model_version" text
|
|
);
|
|
|
|
-- Table: historical_tick (10 cols)
|
|
CREATE TABLE IF NOT EXISTS "historical_tick" (
|
|
"tick_id" bigint NOT NULL DEFAULT nextval('historical_tick_tick_id_seq'::regclass),
|
|
"provider_id" bigint NOT NULL,
|
|
"instrument_id" bigint NOT NULL,
|
|
"feed_type" text NOT NULL DEFAULT 'REFERENCE'::text,
|
|
"ts_utc" timestamp with time zone NOT NULL,
|
|
"bid" double precision,
|
|
"ask" double precision,
|
|
"last" double precision,
|
|
"volume" double precision,
|
|
"dataset_version_id" bigint NOT NULL
|
|
);
|
|
|
|
-- Table: ingestion_provenance (41 cols)
|
|
CREATE TABLE IF NOT EXISTS "ingestion_provenance" (
|
|
"provenance_id" bigint NOT NULL,
|
|
"ingestion_run_id" bigint NOT NULL,
|
|
"provider_id" bigint NOT NULL,
|
|
"provider_name_snapshot" text NOT NULL,
|
|
"provider_environment_class" text NOT NULL,
|
|
"provider_dataset" text NOT NULL,
|
|
"provider_feed" text NOT NULL,
|
|
"provider_instrument_id" text NOT NULL,
|
|
"canonical_instrument_id" bigint NOT NULL,
|
|
"asset_class" text NOT NULL,
|
|
"request_start" timestamp with time zone NOT NULL,
|
|
"request_end" timestamp with time zone NOT NULL,
|
|
"actual_start" timestamp with time zone NOT NULL,
|
|
"actual_end" timestamp with time zone NOT NULL,
|
|
"request_timestamp" timestamp with time zone NOT NULL,
|
|
"response_timestamp" timestamp with time zone NOT NULL,
|
|
"http_status" integer NOT NULL,
|
|
"provider_metadata" jsonb,
|
|
"provider_version" text,
|
|
"raw_payload_sha256" text NOT NULL,
|
|
"raw_content_length" bigint NOT NULL,
|
|
"compression" text NOT NULL,
|
|
"content_type" text,
|
|
"parser_version" text NOT NULL,
|
|
"adapter_version" text NOT NULL,
|
|
"normalization_version" text NOT NULL,
|
|
"timezone_source" text NOT NULL,
|
|
"timezone_target" text NOT NULL,
|
|
"timezone_transform_version" text NOT NULL,
|
|
"price_type" text NOT NULL,
|
|
"granularity" text NOT NULL,
|
|
"correction_status" text NOT NULL DEFAULT 'ORIGINAL'::text,
|
|
"license_class" text NOT NULL DEFAULT 'UNKNOWN'::text,
|
|
"software_git_commit" text NOT NULL,
|
|
"software_image_id" text NOT NULL,
|
|
"software_build_input_sha" text,
|
|
"request_identity_hash" text NOT NULL,
|
|
"supersedes_provenance_id" bigint,
|
|
"raw_storage_ref" text,
|
|
"extra" jsonb,
|
|
"created_at" timestamp with time zone NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Table: instrument (13 cols)
|
|
CREATE TABLE IF NOT EXISTS "instrument" (
|
|
"instrument_id" bigint NOT NULL DEFAULT nextval('instrument_instrument_id_seq'::regclass),
|
|
"symbol" text NOT NULL,
|
|
"asset_class" text NOT NULL,
|
|
"name" text,
|
|
"currency" text,
|
|
"exchange" text,
|
|
"mic" text,
|
|
"isin" text,
|
|
"tick_size" double precision,
|
|
"contract_size" double precision,
|
|
"min_deal_size" double precision,
|
|
"active" boolean NOT NULL DEFAULT true,
|
|
"created_at" timestamp with time zone NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Table: market_calendar (13 cols)
|
|
CREATE TABLE IF NOT EXISTS "market_calendar" (
|
|
"calendar_id" bigint NOT NULL DEFAULT nextval('market_calendar_calendar_id_seq'::regclass),
|
|
"calendar_name" text NOT NULL,
|
|
"asset_class" text NOT NULL,
|
|
"venue_exchange" text,
|
|
"timezone" text NOT NULL,
|
|
"week_open_utc" text,
|
|
"week_close_utc" text,
|
|
"rollover_utc" text,
|
|
"session_open_utc" text,
|
|
"session_close_utc" text,
|
|
"notes" text,
|
|
"calendar_version" text NOT NULL,
|
|
"created_at" timestamp with time zone NOT NULL DEFAULT now()
|
|
);
|
|
|
|
-- Table: provider (6 cols)
|
|
CREATE TABLE IF NOT EXISTS "provider" (
|
|
"provider_id" bigint NOT NULL DEFAULT nextval('provider_provider_id_seq'::regclass),
|
|
"provider_key" text NOT NULL,
|
|
"name" text NOT NULL,
|
|
"data_type" text NOT NULL,
|
|
"pricing_plan" text,
|
|
"license_terms" text
|
|
);
|
|
|
|
-- Table: provider_instrument (6 cols)
|
|
CREATE TABLE IF NOT EXISTS "provider_instrument" (
|
|
"provider_id" bigint NOT NULL,
|
|
"instrument_id" bigint NOT NULL,
|
|
"provider_symbol" text NOT NULL,
|
|
"broker_epic" text,
|
|
"extra_metadata" jsonb,
|
|
"active" boolean NOT NULL DEFAULT true
|
|
);
|
|
|
|
ALTER TABLE "calendar_event" ADD CONSTRAINT "calendar_event_pkey" PRIMARY KEY ("event_id");
|
|
ALTER TABLE "corporate_action" ADD CONSTRAINT "corporate_action_pkey" PRIMARY KEY ("action_id");
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "daily_quality_report_pkey" PRIMARY KEY ("report_id");
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "data_gap_pkey" PRIMARY KEY ("gap_id");
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "data_ingestion_run_pkey" PRIMARY KEY ("ingestion_id");
|
|
ALTER TABLE "data_quality_issue" ADD CONSTRAINT "data_quality_issue_pkey" PRIMARY KEY ("issue_id");
|
|
ALTER TABLE "dataset" ADD CONSTRAINT "dataset_pkey" PRIMARY KEY ("dataset_id");
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "dataset_version_pkey" PRIMARY KEY ("dataset_version_id");
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "derived_bar_pkey" PRIMARY KEY ("derived_bar_id");
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "historical_bar_pkey" PRIMARY KEY ("bar_id");
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "historical_tick_pkey" PRIMARY KEY ("tick_id");
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "ingestion_provenance_pkey" PRIMARY KEY ("provenance_id");
|
|
ALTER TABLE "instrument" ADD CONSTRAINT "instrument_pkey" PRIMARY KEY ("instrument_id");
|
|
ALTER TABLE "market_calendar" ADD CONSTRAINT "market_calendar_pkey" PRIMARY KEY ("calendar_id");
|
|
ALTER TABLE "provider" ADD CONSTRAINT "provider_pkey" PRIMARY KEY ("provider_id");
|
|
ALTER TABLE "provider_instrument" ADD CONSTRAINT "provider_instrument_pkey" PRIMARY KEY ("provider_id", "instrument_id");
|
|
|
|
ALTER TABLE "calendar_event" ADD CONSTRAINT "calendar_event_calendar_id_event_date_kind_key" UNIQUE ("calendar_id", "event_date", "kind");
|
|
ALTER TABLE "corporate_action" ADD CONSTRAINT "corporate_action_instrument_id_action_type_ex_date_provider_key" UNIQUE ("instrument_id", "action_type", "ex_date", "provider_id");
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "daily_quality_report_instrument_id_provider_id_report_date__key" UNIQUE ("instrument_id", "provider_id", "report_date", "feed_type");
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "data_gap_unique" UNIQUE ("provider_id", "instrument_id", "timeframe", "start_utc", "end_utc", "kind");
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "data_ingestion_run_provider_id_instrument_id_timeframe_star_key" UNIQUE ("provider_id", "instrument_id", "timeframe", "started_at");
|
|
ALTER TABLE "dataset" ADD CONSTRAINT "dataset_name_key" UNIQUE ("name");
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "dataset_version_dataset_version_hash_key" UNIQUE ("dataset_version_hash");
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "derived_bar_provider_id_instrument_id_feed_type_price_basis_key" UNIQUE ("provider_id", "instrument_id", "feed_type", "price_basis", "timeframe", "ts_utc", "aggregation_version");
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "historical_bar_provider_id_instrument_id_feed_type_price_ba_key" UNIQUE ("provider_id", "instrument_id", "feed_type", "price_basis", "timeframe", "ts_utc", "raw_or_derived");
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "historical_tick_provider_id_instrument_id_feed_type_ts_utc__key" UNIQUE ("provider_id", "instrument_id", "feed_type", "ts_utc", "bid", "ask");
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "ingestion_provenance_ingestion_run_id_key" UNIQUE ("ingestion_run_id");
|
|
ALTER TABLE "instrument" ADD CONSTRAINT "instrument_symbol_key" UNIQUE ("symbol");
|
|
ALTER TABLE "market_calendar" ADD CONSTRAINT "market_calendar_calendar_name_key" UNIQUE ("calendar_name");
|
|
ALTER TABLE "provider" ADD CONSTRAINT "provider_provider_key_key" UNIQUE ("provider_key");
|
|
ALTER TABLE "provider_instrument" ADD CONSTRAINT "provider_instrument_provider_id_provider_symbol_key" UNIQUE ("provider_id", "provider_symbol");
|
|
|
|
ALTER TABLE "calendar_event" ADD CONSTRAINT "calendar_event_calendar_id_fkey" FOREIGN KEY ("calendar_id") REFERENCES "market_calendar" ("calendar_id");
|
|
ALTER TABLE "corporate_action" ADD CONSTRAINT "corporate_action_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "corporate_action" ADD CONSTRAINT "corporate_action_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "daily_quality_report_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "daily_quality_report_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "data_gap_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "data_gap_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "data_ingestion_run_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "data_ingestion_run_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "data_quality_issue" ADD CONSTRAINT "data_quality_issue_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "dataset" ADD CONSTRAINT "dataset_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "dataset_version_dataset_id_fkey" FOREIGN KEY ("dataset_id") REFERENCES "dataset" ("dataset_id");
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "dataset_version_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "dataset_version_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "derived_bar_dataset_version_id_fkey" FOREIGN KEY ("dataset_version_id") REFERENCES "dataset_version" ("dataset_version_id");
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "derived_bar_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "derived_bar_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "historical_bar_dataset_version_id_fkey" FOREIGN KEY ("dataset_version_id") REFERENCES "dataset_version" ("dataset_version_id");
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "historical_bar_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "historical_bar_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "historical_tick_dataset_version_id_fkey" FOREIGN KEY ("dataset_version_id") REFERENCES "dataset_version" ("dataset_version_id");
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "historical_tick_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "historical_tick_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "ingestion_provenance_canonical_instrument_id_fkey" FOREIGN KEY ("canonical_instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "ingestion_provenance_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "ingestion_provenance_supersedes_fkey" FOREIGN KEY ("supersedes_provenance_id") REFERENCES "ingestion_provenance" ("provenance_id");
|
|
ALTER TABLE "provider_instrument" ADD CONSTRAINT "provider_instrument_instrument_id_fkey" FOREIGN KEY ("instrument_id") REFERENCES "instrument" ("instrument_id");
|
|
ALTER TABLE "provider_instrument" ADD CONSTRAINT "provider_instrument_provider_id_fkey" FOREIGN KEY ("provider_id") REFERENCES "provider" ("provider_id");
|
|
|
|
ALTER TABLE "calendar_event" ADD CONSTRAINT "2200_16679_1_not_null" CHECK (event_id IS NOT NULL);
|
|
ALTER TABLE "calendar_event" ADD CONSTRAINT "2200_16679_2_not_null" CHECK (calendar_id IS NOT NULL);
|
|
ALTER TABLE "calendar_event" ADD CONSTRAINT "2200_16679_3_not_null" CHECK (event_date IS NOT NULL);
|
|
ALTER TABLE "calendar_event" ADD CONSTRAINT "2200_16679_4_not_null" CHECK (kind IS NOT NULL);
|
|
ALTER TABLE "calendar_event" ADD CONSTRAINT "2200_16679_9_not_null" CHECK (created_at IS NOT NULL);
|
|
ALTER TABLE "corporate_action" ADD CONSTRAINT "2200_16567_1_not_null" CHECK (action_id IS NOT NULL);
|
|
ALTER TABLE "corporate_action" ADD CONSTRAINT "2200_16567_2_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "corporate_action" ADD CONSTRAINT "2200_16567_3_not_null" CHECK (action_type IS NOT NULL);
|
|
ALTER TABLE "corporate_action" ADD CONSTRAINT "2200_16567_4_not_null" CHECK (ex_date IS NOT NULL);
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "2200_16696_19_not_null" CHECK (status IS NOT NULL);
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "2200_16696_1_not_null" CHECK (report_id IS NOT NULL);
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "2200_16696_23_not_null" CHECK (generated_at IS NOT NULL);
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "2200_16696_2_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "2200_16696_3_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "daily_quality_report" ADD CONSTRAINT "2200_16696_4_not_null" CHECK (report_date IS NOT NULL);
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "2200_16613_1_not_null" CHECK (gap_id IS NOT NULL);
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "2200_16613_2_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "2200_16613_3_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "2200_16613_4_not_null" CHECK (timeframe IS NOT NULL);
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "2200_16613_5_not_null" CHECK (start_utc IS NOT NULL);
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "2200_16613_6_not_null" CHECK (end_utc IS NOT NULL);
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "2200_16613_7_not_null" CHECK (kind IS NOT NULL);
|
|
ALTER TABLE "data_gap" ADD CONSTRAINT "2200_16613_8_not_null" CHECK (backfilled IS NOT NULL);
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "2200_16588_10_not_null" CHECK (started_at IS NOT NULL);
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "2200_16588_1_not_null" CHECK (ingestion_id IS NOT NULL);
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "2200_16588_2_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "2200_16588_3_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "2200_16588_4_not_null" CHECK (timeframe IS NOT NULL);
|
|
ALTER TABLE "data_ingestion_run" ADD CONSTRAINT "2200_16588_9_not_null" CHECK (status IS NOT NULL);
|
|
ALTER TABLE "data_quality_issue" ADD CONSTRAINT "2200_16633_1_not_null" CHECK (issue_id IS NOT NULL);
|
|
ALTER TABLE "data_quality_issue" ADD CONSTRAINT "2200_16633_2_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "data_quality_issue" ADD CONSTRAINT "2200_16633_3_not_null" CHECK (timeframe IS NOT NULL);
|
|
ALTER TABLE "data_quality_issue" ADD CONSTRAINT "2200_16633_5_not_null" CHECK (severity IS NOT NULL);
|
|
ALTER TABLE "data_quality_issue" ADD CONSTRAINT "2200_16633_6_not_null" CHECK (issue_type IS NOT NULL);
|
|
ALTER TABLE "data_quality_issue" ADD CONSTRAINT "2200_16633_8_not_null" CHECK (resolved IS NOT NULL);
|
|
ALTER TABLE "data_quality_issue" ADD CONSTRAINT "2200_16633_9_not_null" CHECK (created_at IS NOT NULL);
|
|
ALTER TABLE "dataset" ADD CONSTRAINT "2200_16430_1_not_null" CHECK (dataset_id IS NOT NULL);
|
|
ALTER TABLE "dataset" ADD CONSTRAINT "2200_16430_2_not_null" CHECK (name IS NOT NULL);
|
|
ALTER TABLE "dataset" ADD CONSTRAINT "2200_16430_3_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "dataset" ADD CONSTRAINT "2200_16430_4_not_null" CHECK (feed_type IS NOT NULL);
|
|
ALTER TABLE "dataset" ADD CONSTRAINT "2200_16430_6_not_null" CHECK (created_at IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_10_not_null" CHECK (raw_source IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_11_not_null" CHECK (normalization_version IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_13_not_null" CHECK (quality_version IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_14_not_null" CHECK (dataset_version_hash IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_15_not_null" CHECK (data_as_of IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_17_not_null" CHECK (created_at IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_1_not_null" CHECK (dataset_version_id IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_23_not_null" CHECK (is_fixture IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_2_not_null" CHECK (dataset_id IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_3_not_null" CHECK (version_label IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_4_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_5_not_null" CHECK (feed_type IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_6_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_7_not_null" CHECK (timeframe IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_8_not_null" CHECK (start_utc IS NOT NULL);
|
|
ALTER TABLE "dataset_version" ADD CONSTRAINT "2200_16447_9_not_null" CHECK (end_utc IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_1_not_null" CHECK (derived_bar_id IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_24_not_null" CHECK (quality_status IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_26_not_null" CHECK (dataset_version_id IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_2_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_3_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_4_not_null" CHECK (feed_type IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_5_not_null" CHECK (price_basis IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_6_not_null" CHECK (timeframe IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_7_not_null" CHECK (ts_utc IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_8_not_null" CHECK (source_timeframe IS NOT NULL);
|
|
ALTER TABLE "derived_bar" ADD CONSTRAINT "2200_16508_9_not_null" CHECK (aggregation_version IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_1_not_null" CHECK (bar_id IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_25_not_null" CHECK (quality_status IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_28_not_null" CHECK (ingested_at IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_29_not_null" CHECK (dataset_version_id IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_2_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_3_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_4_not_null" CHECK (feed_type IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_5_not_null" CHECK (price_basis IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_6_not_null" CHECK (timeframe IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_7_not_null" CHECK (ts_utc IS NOT NULL);
|
|
ALTER TABLE "historical_bar" ADD CONSTRAINT "2200_16474_8_not_null" CHECK (raw_or_derived IS NOT NULL);
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "2200_16539_10_not_null" CHECK (dataset_version_id IS NOT NULL);
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "2200_16539_1_not_null" CHECK (tick_id IS NOT NULL);
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "2200_16539_2_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "2200_16539_3_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "2200_16539_4_not_null" CHECK (feed_type IS NOT NULL);
|
|
ALTER TABLE "historical_tick" ADD CONSTRAINT "2200_16539_5_not_null" CHECK (ts_utc IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_10_not_null" CHECK (asset_class IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_11_not_null" CHECK (request_start IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_12_not_null" CHECK (request_end IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_13_not_null" CHECK (actual_start IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_14_not_null" CHECK (actual_end IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_15_not_null" CHECK (request_timestamp IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_16_not_null" CHECK (response_timestamp IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_17_not_null" CHECK (http_status IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_1_not_null" CHECK (provenance_id IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_20_not_null" CHECK (raw_payload_sha256 IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_21_not_null" CHECK (raw_content_length IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_22_not_null" CHECK (compression IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_24_not_null" CHECK (parser_version IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_25_not_null" CHECK (adapter_version IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_26_not_null" CHECK (normalization_version IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_27_not_null" CHECK (timezone_source IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_28_not_null" CHECK (timezone_target IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_29_not_null" CHECK (timezone_transform_version IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_2_not_null" CHECK (ingestion_run_id IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_30_not_null" CHECK (price_type IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_31_not_null" CHECK (granularity IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_32_not_null" CHECK (correction_status IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_33_not_null" CHECK (license_class IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_34_not_null" CHECK (software_git_commit IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_35_not_null" CHECK (software_image_id IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_37_not_null" CHECK (request_identity_hash IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_3_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_41_not_null" CHECK (created_at IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_4_not_null" CHECK (provider_name_snapshot IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_5_not_null" CHECK (provider_environment_class IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_6_not_null" CHECK (provider_dataset IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_7_not_null" CHECK (provider_feed IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_8_not_null" CHECK (provider_instrument_id IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "2200_16741_9_not_null" CHECK (canonical_instrument_id IS NOT NULL);
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_actual_range" CHECK (((actual_end >= actual_start)));
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_compression" CHECK (((compression = ANY (ARRAY['none'::text, 'lzma'::text, 'gzip'::text, 'zstd'::text, 'deflate'::text, 'unknown'::text]))));
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_content_length" CHECK (((raw_content_length >= 0)));
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_correction" CHECK (((correction_status = ANY (ARRAY['ORIGINAL'::text, 'CORRECTED'::text, 'SUPERSEDED'::text, 'UNKNOWN'::text]))));
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_env_class" CHECK (((provider_environment_class = ANY (ARRAY['PROD'::text, 'SANDBOX'::text, 'TEST'::text, 'UNKNOWN'::text]))));
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_http_status" CHECK ((((http_status >= 100) AND (http_status <= 599))));
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_license" CHECK (((license_class = ANY (ARRAY['UNKNOWN'::text, 'PRIVATE_INTERNAL'::text, 'INTERNAL_DERIVED_ALLOWED'::text, 'STORAGE_RESTRICTED'::text, 'REDISTRIBUTION_RESTRICTED'::text, 'EXPIRED'::text, 'REVOKED'::text]))));
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_price_type" CHECK (((price_type = ANY (ARRAY['bid'::text, 'ask'::text, 'mid'::text, 'bid_ask'::text, 'last'::text, 'unknown'::text]))));
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_sha256" CHECK (((raw_payload_sha256 ~ '^[0-9a-f]{64}$'::text)));
|
|
ALTER TABLE "ingestion_provenance" ADD CONSTRAINT "chk_prov_time_range" CHECK (((request_end >= request_start)));
|
|
ALTER TABLE "instrument" ADD CONSTRAINT "2200_16386_12_not_null" CHECK (active IS NOT NULL);
|
|
ALTER TABLE "instrument" ADD CONSTRAINT "2200_16386_13_not_null" CHECK (created_at IS NOT NULL);
|
|
ALTER TABLE "instrument" ADD CONSTRAINT "2200_16386_1_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "instrument" ADD CONSTRAINT "2200_16386_2_not_null" CHECK (symbol IS NOT NULL);
|
|
ALTER TABLE "instrument" ADD CONSTRAINT "2200_16386_3_not_null" CHECK (asset_class IS NOT NULL);
|
|
ALTER TABLE "market_calendar" ADD CONSTRAINT "2200_16667_12_not_null" CHECK (calendar_version IS NOT NULL);
|
|
ALTER TABLE "market_calendar" ADD CONSTRAINT "2200_16667_13_not_null" CHECK (created_at IS NOT NULL);
|
|
ALTER TABLE "market_calendar" ADD CONSTRAINT "2200_16667_1_not_null" CHECK (calendar_id IS NOT NULL);
|
|
ALTER TABLE "market_calendar" ADD CONSTRAINT "2200_16667_2_not_null" CHECK (calendar_name IS NOT NULL);
|
|
ALTER TABLE "market_calendar" ADD CONSTRAINT "2200_16667_3_not_null" CHECK (asset_class IS NOT NULL);
|
|
ALTER TABLE "market_calendar" ADD CONSTRAINT "2200_16667_5_not_null" CHECK (timezone IS NOT NULL);
|
|
ALTER TABLE "provider" ADD CONSTRAINT "2200_16399_1_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "provider" ADD CONSTRAINT "2200_16399_2_not_null" CHECK (provider_key IS NOT NULL);
|
|
ALTER TABLE "provider" ADD CONSTRAINT "2200_16399_3_not_null" CHECK (name IS NOT NULL);
|
|
ALTER TABLE "provider" ADD CONSTRAINT "2200_16399_4_not_null" CHECK (data_type IS NOT NULL);
|
|
ALTER TABLE "provider_instrument" ADD CONSTRAINT "2200_16409_1_not_null" CHECK (provider_id IS NOT NULL);
|
|
ALTER TABLE "provider_instrument" ADD CONSTRAINT "2200_16409_2_not_null" CHECK (instrument_id IS NOT NULL);
|
|
ALTER TABLE "provider_instrument" ADD CONSTRAINT "2200_16409_3_not_null" CHECK (provider_symbol IS NOT NULL);
|
|
ALTER TABLE "provider_instrument" ADD CONSTRAINT "2200_16409_6_not_null" CHECK (active IS NOT NULL);
|
|
|
|
CREATE INDEX idx_bar_dsver ON public.historical_bar USING btree (dataset_version_id);
|
|
CREATE INDEX idx_bar_elig ON public.historical_bar USING btree (eligibility);
|
|
CREATE INDEX idx_bar_inst_tf_ts ON public.historical_bar USING btree (instrument_id, timeframe, ts_utc);
|
|
CREATE INDEX idx_bar_sess_ts ON public.historical_bar USING btree (session_state, instrument_id, ts_utc);
|
|
CREATE INDEX idx_bar_session ON public.historical_bar USING btree (session_state, session_phase);
|
|
CREATE INDEX idx_bar_techq ON public.historical_bar USING btree (technical_quality);
|
|
CREATE INDEX idx_derived_inst_tf_ts ON public.derived_bar USING btree (instrument_id, timeframe, ts_utc);
|
|
CREATE INDEX idx_historical_bar_market_quality ON public.historical_bar USING btree (instrument_id, market_quality);
|
|
CREATE INDEX idx_historical_bar_session_state ON public.historical_bar USING btree (instrument_id, session_state);
|
|
CREATE INDEX idx_prov_adapter_version ON public.ingestion_provenance USING btree (adapter_version);
|
|
CREATE INDEX idx_prov_instrument ON public.ingestion_provenance USING btree (canonical_instrument_id);
|
|
CREATE INDEX idx_prov_provider_feed ON public.ingestion_provenance USING btree (provider_id, provider_feed);
|
|
CREATE INDEX idx_prov_raw_sha ON public.ingestion_provenance USING btree (raw_payload_sha256);
|
|
CREATE INDEX idx_prov_request_identity ON public.ingestion_provenance USING btree (request_identity_hash);
|
|
CREATE INDEX idx_prov_time_range ON public.ingestion_provenance USING btree (request_start, request_end);
|
|
CREATE INDEX idx_tick_inst_ts ON public.historical_tick USING btree (instrument_id, ts_utc);
|