134 lines
5.6 KiB
SQL
134 lines
5.6 KiB
SQL
CREATE TABLE ksp_store_identity (
|
|
singleton SMALLINT PRIMARY KEY,
|
|
network TEXT NOT NULL,
|
|
CONSTRAINT ck_ksp_store_identity_singleton CHECK (singleton = 1),
|
|
CONSTRAINT ck_ksp_store_identity_network CHECK (
|
|
octet_length(network) BETWEEN 1 AND 128
|
|
AND network ~ '^[A-Za-z0-9_.:-]+$'
|
|
)
|
|
);
|
|
|
|
CREATE TABLE ksp_raw_transactions (
|
|
signature BYTEA PRIMARY KEY,
|
|
slot NUMERIC(20, 0) NOT NULL,
|
|
block_time_unix_millis BIGINT NULL,
|
|
format_id TEXT NOT NULL,
|
|
format_version BIGINT NOT NULL,
|
|
content_hash BYTEA NOT NULL,
|
|
payload BYTEA NULL,
|
|
retention_state TEXT NOT NULL,
|
|
CONSTRAINT ck_ksp_raw_transactions_signature CHECK (octet_length(signature) = 64),
|
|
CONSTRAINT ck_ksp_raw_transactions_slot CHECK (slot BETWEEN 0 AND 18446744073709551615),
|
|
CONSTRAINT ck_ksp_raw_transactions_block_time CHECK (
|
|
block_time_unix_millis IS NULL
|
|
OR block_time_unix_millis BETWEEN 0 AND 253402300799999
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transactions_format_id CHECK (
|
|
octet_length(format_id) BETWEEN 1 AND 128
|
|
AND format_id ~ '^[A-Za-z0-9_.:-]+$'
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transactions_format_version CHECK (format_version BETWEEN 1 AND 4294967295),
|
|
CONSTRAINT ck_ksp_raw_transactions_content_hash CHECK (octet_length(content_hash) = 32),
|
|
CONSTRAINT ck_ksp_raw_transactions_payload CHECK (
|
|
payload IS NULL
|
|
OR octet_length(payload) BETWEEN 1 AND 16777216
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transactions_retention_state CHECK (retention_state IN ('full', 'archived', 'purged')),
|
|
CONSTRAINT ck_ksp_raw_transactions_payload_state CHECK (
|
|
(retention_state = 'full' AND payload IS NOT NULL)
|
|
OR (retention_state IN ('archived', 'purged') AND payload IS NULL)
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transactions_purged_block_time CHECK (
|
|
retention_state <> 'purged'
|
|
OR block_time_unix_millis IS NULL
|
|
)
|
|
);
|
|
|
|
CREATE TABLE ksp_raw_transaction_observations (
|
|
observation_key BYTEA PRIMARY KEY,
|
|
transaction_signature BYTEA NOT NULL REFERENCES ksp_raw_transactions(signature) ON DELETE RESTRICT,
|
|
provider TEXT NOT NULL,
|
|
protocol TEXT NOT NULL,
|
|
acquisition_method TEXT NOT NULL,
|
|
origin TEXT NOT NULL,
|
|
received_at_unix_millis BIGINT NOT NULL,
|
|
capture_session_id TEXT NULL,
|
|
commitment TEXT NULL,
|
|
endpoint_id TEXT NULL,
|
|
filter_id TEXT NULL,
|
|
observed_at_unix_millis BIGINT NULL,
|
|
source_payload_hash BYTEA NULL,
|
|
source_payload_size_bytes BIGINT NULL,
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_key CHECK (octet_length(observation_key) = 32),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_signature CHECK (octet_length(transaction_signature) = 64),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_provider CHECK (
|
|
octet_length(provider) BETWEEN 1 AND 128
|
|
AND provider ~ '^[A-Za-z0-9_.:-]+$'
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_protocol CHECK (
|
|
octet_length(protocol) BETWEEN 1 AND 128
|
|
AND protocol ~ '^[A-Za-z0-9_.:-]+$'
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_method CHECK (
|
|
octet_length(acquisition_method) BETWEEN 1 AND 128
|
|
AND acquisition_method ~ '^[A-Za-z0-9_.:-]+$'
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_origin CHECK (origin IN ('backfill', 'import', 'live', 'repair', 'replay')),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_received_at CHECK (received_at_unix_millis BETWEEN 0 AND 253402300799999),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_capture_session CHECK (
|
|
capture_session_id IS NULL
|
|
OR (
|
|
octet_length(capture_session_id) BETWEEN 1 AND 128
|
|
AND capture_session_id ~ '^[A-Za-z0-9_.:-]+$'
|
|
)
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_commitment CHECK (
|
|
commitment IS NULL
|
|
OR (
|
|
octet_length(commitment) BETWEEN 1 AND 128
|
|
AND commitment ~ '^[A-Za-z0-9_.:-]+$'
|
|
)
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_endpoint CHECK (
|
|
endpoint_id IS NULL
|
|
OR (
|
|
octet_length(endpoint_id) BETWEEN 1 AND 128
|
|
AND endpoint_id ~ '^[A-Za-z0-9_.:-]+$'
|
|
)
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_filter CHECK (
|
|
filter_id IS NULL
|
|
OR (
|
|
octet_length(filter_id) BETWEEN 1 AND 128
|
|
AND filter_id ~ '^[A-Za-z0-9_.:-]+$'
|
|
)
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_observed_at CHECK (
|
|
observed_at_unix_millis IS NULL
|
|
OR observed_at_unix_millis BETWEEN 0 AND 253402300799999
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_time_order CHECK (
|
|
observed_at_unix_millis IS NULL
|
|
OR observed_at_unix_millis <= received_at_unix_millis
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_source_hash CHECK (
|
|
source_payload_hash IS NULL
|
|
OR octet_length(source_payload_hash) = 32
|
|
),
|
|
CONSTRAINT ck_ksp_raw_transaction_observations_source_size CHECK (
|
|
source_payload_size_bytes IS NULL
|
|
OR source_payload_size_bytes BETWEEN 0 AND 67108864
|
|
)
|
|
);
|
|
|
|
CREATE TABLE ksp_raw_transaction_archive_payloads (
|
|
signature BYTEA PRIMARY KEY REFERENCES ksp_raw_transactions(signature) ON DELETE RESTRICT,
|
|
payload BYTEA NOT NULL,
|
|
CONSTRAINT ck_ksp_raw_transaction_archive_payloads_signature CHECK (octet_length(signature) = 64),
|
|
CONSTRAINT ck_ksp_raw_transaction_archive_payloads_payload CHECK (octet_length(payload) BETWEEN 1 AND 16777216)
|
|
);
|
|
|
|
CREATE INDEX ix_ksp_raw_transactions_slot_signature
|
|
ON ksp_raw_transactions (slot, signature)
|
|
WHERE retention_state <> 'purged';
|