b59505eab2
* Add block hash to primary keys in transactions, receipts and logs tables * Add block hash in postgraphile triggers for transactions, receipts and logs tables * Make indexes on transaction cid and mh_key non-unique
119 lines
3.7 KiB
PL/PgSQL
119 lines
3.7 KiB
PL/PgSQL
-- +goose Up
|
|
-- Name: graphql_subscription(); Type: FUNCTION; Schema: eth; Owner: -
|
|
|
|
-- +goose StatementBegin
|
|
CREATE FUNCTION eth.graphql_subscription() RETURNS TRIGGER AS $$
|
|
DECLARE
|
|
obj jsonb;
|
|
BEGIN
|
|
IF (TG_TABLE_NAME = 'state_cids') OR (TG_TABLE_NAME = 'state_accounts') THEN
|
|
obj := json_build_array(
|
|
TG_TABLE_NAME,
|
|
NEW.header_id,
|
|
NEW.state_path
|
|
);
|
|
ELSIF (TG_TABLE_NAME = 'storage_cids') THEN
|
|
obj := json_build_array(
|
|
TG_TABLE_NAME,
|
|
NEW.header_id,
|
|
NEW.state_path,
|
|
NEW.storage_path
|
|
);
|
|
ELSIF (TG_TABLE_NAME = 'log_cids') THEN
|
|
obj := json_build_array(
|
|
TG_TABLE_NAME,
|
|
NEW.header_id,
|
|
NEW.rct_id,
|
|
NEW.index
|
|
);
|
|
ELSIF (TG_TABLE_NAME = 'receipt_cids') THEN
|
|
obj := json_build_array(
|
|
TG_TABLE_NAME,
|
|
NEW.header_id,
|
|
NEW.tx_id
|
|
);
|
|
ELSIF (TG_TABLE_NAME = 'transaction_cids') THEN
|
|
obj := json_build_array(
|
|
TG_TABLE_NAME,
|
|
NEW.header_id,
|
|
NEW.tx_hash
|
|
);
|
|
ELSIF (TG_TABLE_NAME = 'access_list_elements') THEN
|
|
obj := json_build_array(
|
|
TG_TABLE_NAME,
|
|
NEW.tx_id,
|
|
NEW.index
|
|
);
|
|
ELSIF (TG_TABLE_NAME = 'uncle_cids') OR (TG_TABLE_NAME = 'header_cids') THEN
|
|
obj := json_build_array(
|
|
TG_TABLE_NAME,
|
|
NEW.block_hash
|
|
);
|
|
END IF;
|
|
|
|
perform pg_notify('postgraphile:' || TG_RELNAME , json_build_object(
|
|
'__node__', obj
|
|
)::text
|
|
);
|
|
RETURN NEW;
|
|
END;
|
|
$$ language plpgsql;
|
|
-- +goose StatementEnd
|
|
|
|
CREATE TRIGGER trg_eth_header_cids
|
|
AFTER INSERT ON eth.header_cids
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE eth.graphql_subscription();
|
|
|
|
CREATE TRIGGER trg_eth_uncle_cids
|
|
AFTER INSERT ON eth.uncle_cids
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE eth.graphql_subscription();
|
|
|
|
CREATE TRIGGER trg_eth_transaction_cids
|
|
AFTER INSERT ON eth.transaction_cids
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE eth.graphql_subscription();
|
|
|
|
CREATE TRIGGER trg_eth_receipt_cids
|
|
AFTER INSERT ON eth.receipt_cids
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE eth.graphql_subscription();
|
|
|
|
CREATE TRIGGER trg_eth_state_cids
|
|
AFTER INSERT ON eth.state_cids
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE eth.graphql_subscription();
|
|
|
|
CREATE TRIGGER trg_eth_log_cids
|
|
AFTER INSERT ON eth.log_cids
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE eth.graphql_subscription();
|
|
|
|
CREATE TRIGGER trg_eth_storage_cids
|
|
AFTER INSERT ON eth.storage_cids
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE eth.graphql_subscription();
|
|
|
|
CREATE TRIGGER trg_eth_state_accounts
|
|
AFTER INSERT ON eth.state_accounts
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE eth.graphql_subscription();
|
|
|
|
CREATE TRIGGER trg_eth_access_list_elements
|
|
AFTER INSERT ON eth.access_list_elements
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE eth.graphql_subscription();
|
|
|
|
-- +goose Down
|
|
DROP TRIGGER trg_eth_uncle_cids ON eth.uncle_cids;
|
|
DROP TRIGGER trg_eth_transaction_cids ON eth.transaction_cids;
|
|
DROP TRIGGER trg_eth_storage_cids ON eth.storage_cids;
|
|
DROP TRIGGER trg_eth_state_cids ON eth.state_cids;
|
|
DROP TRIGGER trg_eth_state_accounts ON eth.state_accounts;
|
|
DROP TRIGGER trg_eth_receipt_cids ON eth.receipt_cids;
|
|
DROP TRIGGER trg_eth_header_cids ON eth.header_cids;
|
|
DROP TRIGGER trg_eth_log_cids ON eth.log_cids;
|
|
DROP TRIGGER trg_eth_access_list_elements ON eth.access_list_elements;
|
|
|
|
DROP FUNCTION eth.graphql_subscription(); |