-- +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;