Skip to content

Instantly share code, notes, and snippets.

@zilder
Created July 2, 2018 14:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zilder/4a347dba255f2f584362f78d67ae1f15 to your computer and use it in GitHub Desktop.
Save zilder/4a347dba255f2f584362f78d67ae1f15 to your computer and use it in GitHub Desktop.
EXPLAIN (SUMMARY OFF) for older PostgreSQL versions
CREATE OR REPLACE FUNCTION explain(query TEXT) RETURNS SETOF RECORD AS $$
DECLARE
rec RECORD;
BEGIN
FOR rec IN EXECUTE 'EXPLAIN (COSTS OFF, TIMING OFF, ANALYZE) ' || query
LOOP
RETURN NEXT rec;
END LOOP;
END
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION explain_invariant(query TEXT)
RETURNS SETOF text AS $$
DECLARE
rec RECORD;
BEGIN
FOR rec IN SELECT * FROM explain(query) as e(t text)
LOOP
IF position('Planning time' in rec.t) > 0 OR
position('Execution time' in rec.t) > 0
THEN
CONTINUE;
END IF;
RETURN NEXT rec.t;
END LOOP;
END
$$ LANGUAGE plpgsql;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment