forked from cerc-io/ipld-eth-server
39 lines
1.5 KiB
PL/PgSQL
39 lines
1.5 KiB
PL/PgSQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
-- returns if a storage node at the provided path was removed in the range > the provided height and <= the provided block hash
|
|
CREATE OR REPLACE FUNCTION was_storage_removed(path BYTEA, height BIGINT, hash VARCHAR(66)) RETURNS BOOLEAN
|
|
AS $$
|
|
SELECT exists(SELECT 1
|
|
FROM eth.storage_cids
|
|
INNER JOIN eth.state_cids ON (storage_cids.state_id = state_cids.id)
|
|
INNER JOIN eth.header_cids ON (state_cids.header_id = header_cids.id)
|
|
WHERE storage_path = path
|
|
AND block_number > height
|
|
AND block_number <= (SELECT block_number
|
|
FROM eth.header_cids
|
|
WHERE block_hash = hash)
|
|
AND storage_cids.node_type = 3
|
|
LIMIT 1);
|
|
$$ LANGUAGE SQL;
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose StatementBegin
|
|
-- returns if a state node at the provided path was removed in the range > the provided height and <= the provided block hash
|
|
CREATE OR REPLACE FUNCTION was_state_removed(path BYTEA, height BIGINT, hash VARCHAR(66)) RETURNS BOOLEAN
|
|
AS $$
|
|
SELECT exists(SELECT 1
|
|
FROM eth.state_cids
|
|
INNER JOIN eth.header_cids ON (state_cids.header_id = header_cids.id)
|
|
WHERE state_path = path
|
|
AND block_number > height
|
|
AND block_number <= (SELECT block_number
|
|
FROM eth.header_cids
|
|
WHERE block_hash = hash)
|
|
AND state_cids.node_type = 3
|
|
LIMIT 1);
|
|
$$ LANGUAGE SQL;
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
DROP FUNCTION was_storage_removed;
|
|
DROP FUNCTION was_state_removed; |