Skip to content

Instantly share code, notes, and snippets.

@alexesDev
Created August 20, 2018 11:13
Show Gist options
  • Select an option

  • Save alexesDev/bd3df760d866758c462781472ac087a6 to your computer and use it in GitHub Desktop.

Select an option

Save alexesDev/bd3df760d866758c462781472ac087a6 to your computer and use it in GitHub Desktop.
#!/bin/bash
read -r -d '' CHECK_QUERY <<-EOM
create extension if not exists plpgsql_check;
SELECT
(pcf).functionid::regprocedure, (pcf).lineno, (pcf).statement,
(pcf).sqlstate, (pcf).message, (pcf).detail, (pcf).hint, (pcf).level,
(pcf)."position", (pcf).query, (pcf).context
FROM
(
SELECT
plpgsql_check_function_tb(pg_proc.oid, COALESCE(pg_trigger.tgrelid, 0)) AS pcf
FROM pg_proc
LEFT JOIN pg_trigger
ON (pg_trigger.tgfoid = pg_proc.oid)
WHERE
prolang = (SELECT lang.oid FROM pg_language lang WHERE lang.lanname = 'plpgsql') AND
pronamespace <> (SELECT nsp.oid FROM pg_namespace nsp WHERE nsp.nspname = 'pg_catalog') AND
(pg_proc.prorettype <> (SELECT typ.oid FROM pg_type typ WHERE typ.typname = 'trigger') OR
pg_trigger.tgfoid IS NOT NULL)
OFFSET 0
) ss
ORDER BY (pcf).functionid::regprocedure::text, (pcf).lineno
EOM
OUTPUT=$(echo $CHECK_QUERY | docker-compose exec -T postgres psql -U stock -h localhost -p 5432 stock)
echo "$OUTPUT"
if echo "$OUTPUT" | grep -q 'error\|warning'; then
exit 1;
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment