Loading src/main/sql/exonerator2.sql +19 −22 Original line number Diff line number Diff line Loading @@ -298,19 +298,19 @@ $$ LANGUAGE 'plpgsql'; CREATE MATERIALIZED VIEW search_data_materialized AS SELECT d.date AS date, f.fingerprint_base64 AS fingerprint_base64, eea.scanned AS scanned, eea.exitaddress AS exitaddress, sea.validafter AS validafter, n.nickname AS nickname, sea.exit AS exit, sea.oraddress AS oraddress, d.address24 AS address24 -- Including address24 for filtering in the function FROM date_address24 d LEFT JOIN fingerprint f ON d.fingerprint_id = f.fingerprint_id LEFT JOIN exitlistentry_exitaddress eea ON d.fingerprint_id = eea.fingerprint_id LEFT JOIN statusentry_oraddress sea ON d.fingerprint_id = sea.fingerprint_id da.date, f.fingerprint_base64, eea.scanned, eea.exitaddress, sea.validafter, n.nickname, sea.exit, sea.oraddress, da.address24 FROM date_address24 da LEFT JOIN fingerprint f ON da.fingerprint_id = f.fingerprint_id LEFT JOIN exitlistentry_exitaddress eea ON da.fingerprint_id = eea.fingerprint_id LEFT JOIN statusentry_oraddress sea ON da.fingerprint_id = sea.fingerprint_id LEFT JOIN nickname n ON sea.nickname_id = n.nickname_id; CREATE OR REPLACE FUNCTION search_by_date_address24 ( Loading @@ -321,7 +321,7 @@ CREATE OR REPLACE FUNCTION search_by_date_address24 ( scanned TIMESTAMP WITHOUT TIME ZONE, exitaddress INET, validafter TIMESTAMP WITHOUT TIME ZONE, nickname CHARACTER VARYING, nickname CHARACTER VARYING(19), exit BOOLEAN, oraddress INET) AS $$ BEGIN Loading @@ -335,15 +335,12 @@ BEGIN exit, oraddress FROM search_data_materialized WHERE (address24 = search_address24 AND date BETWEEN search_date - INTERVAL '2 days' AND search_date + INTERVAL '1 day') OR (scanned IS NOT NULL AND scanned::DATE BETWEEN search_date - INTERVAL '2 days' AND search_date + INTERVAL '1 day') OR (validafter IS NOT NULL AND validafter::DATE BETWEEN search_date - INTERVAL '1 day' AND search_date + INTERVAL '1 day'); WHERE address24 = search_address24 AND (date BETWEEN search_date - 2 AND search_date + 1 OR scanned::DATE BETWEEN search_date - 2 AND search_date + 1 OR validafter::DATE BETWEEN search_date - 1 AND search_date + 1); END; $$ LANGUAGE plpgsql; $$ LANGUAGE 'plpgsql'; -- Migrate from the earlier schema in exonerator.sql to this schema. This -- migration happens in two big loops, one over statusentry and one over Loading Loading
src/main/sql/exonerator2.sql +19 −22 Original line number Diff line number Diff line Loading @@ -298,19 +298,19 @@ $$ LANGUAGE 'plpgsql'; CREATE MATERIALIZED VIEW search_data_materialized AS SELECT d.date AS date, f.fingerprint_base64 AS fingerprint_base64, eea.scanned AS scanned, eea.exitaddress AS exitaddress, sea.validafter AS validafter, n.nickname AS nickname, sea.exit AS exit, sea.oraddress AS oraddress, d.address24 AS address24 -- Including address24 for filtering in the function FROM date_address24 d LEFT JOIN fingerprint f ON d.fingerprint_id = f.fingerprint_id LEFT JOIN exitlistentry_exitaddress eea ON d.fingerprint_id = eea.fingerprint_id LEFT JOIN statusentry_oraddress sea ON d.fingerprint_id = sea.fingerprint_id da.date, f.fingerprint_base64, eea.scanned, eea.exitaddress, sea.validafter, n.nickname, sea.exit, sea.oraddress, da.address24 FROM date_address24 da LEFT JOIN fingerprint f ON da.fingerprint_id = f.fingerprint_id LEFT JOIN exitlistentry_exitaddress eea ON da.fingerprint_id = eea.fingerprint_id LEFT JOIN statusentry_oraddress sea ON da.fingerprint_id = sea.fingerprint_id LEFT JOIN nickname n ON sea.nickname_id = n.nickname_id; CREATE OR REPLACE FUNCTION search_by_date_address24 ( Loading @@ -321,7 +321,7 @@ CREATE OR REPLACE FUNCTION search_by_date_address24 ( scanned TIMESTAMP WITHOUT TIME ZONE, exitaddress INET, validafter TIMESTAMP WITHOUT TIME ZONE, nickname CHARACTER VARYING, nickname CHARACTER VARYING(19), exit BOOLEAN, oraddress INET) AS $$ BEGIN Loading @@ -335,15 +335,12 @@ BEGIN exit, oraddress FROM search_data_materialized WHERE (address24 = search_address24 AND date BETWEEN search_date - INTERVAL '2 days' AND search_date + INTERVAL '1 day') OR (scanned IS NOT NULL AND scanned::DATE BETWEEN search_date - INTERVAL '2 days' AND search_date + INTERVAL '1 day') OR (validafter IS NOT NULL AND validafter::DATE BETWEEN search_date - INTERVAL '1 day' AND search_date + INTERVAL '1 day'); WHERE address24 = search_address24 AND (date BETWEEN search_date - 2 AND search_date + 1 OR scanned::DATE BETWEEN search_date - 2 AND search_date + 1 OR validafter::DATE BETWEEN search_date - 1 AND search_date + 1); END; $$ LANGUAGE plpgsql; $$ LANGUAGE 'plpgsql'; -- Migrate from the earlier schema in exonerator.sql to this schema. This -- migration happens in two big loops, one over statusentry and one over Loading