Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@pgpm/verify

Package Overview
Dependencies
Maintainers
2
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pgpm/verify - npm Package Compare versions

Comparing version
0.14.0
to
0.15.0
pgpm-verify.control

Sorry, the diff of this file is not supported yet

+358
\echo Use "CREATE EXTENSION pgpm-verify" to load this file. \quit
CREATE FUNCTION get_entity_from_str(qualified_name text) RETURNS text AS $EOFCODE$
DECLARE
parts text[];
BEGIN
SELECT
parse_ident(qualified_name) INTO parts;
IF cardinality(parts) > 1 THEN
RETURN parts[2];
ELSE
RETURN parts[1];
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql STRICT;
CREATE FUNCTION get_schema_from_str(qualified_name text) RETURNS text AS $EOFCODE$
DECLARE
parts text[];
BEGIN
SELECT
parse_ident(qualified_name) INTO parts;
IF cardinality(parts) > 1 THEN
RETURN parts[1];
ELSE
RETURN 'public';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql STRICT;
CREATE FUNCTION list_indexes(_table text, _index text) RETURNS TABLE ( schema_name text, table_name text, index_name text ) AS $EOFCODE$
SELECT
n.nspname::text AS schema_name,
t.relname::text AS table_name,
i.relname::text AS index_name
FROM
pg_class t,
pg_class i,
pg_index ix,
pg_catalog.pg_namespace n
WHERE
t.oid = ix.indrelid
AND i.oid = ix.indexrelid
AND n.oid = i.relnamespace
AND n.nspname = get_schema_from_str(_table)
AND i.relname = _index
AND t.relname = get_entity_from_str(_table);
$EOFCODE$ LANGUAGE sql IMMUTABLE;
CREATE FUNCTION list_memberships(_user text) RETURNS TABLE ( rolname text ) AS $EOFCODE$ WITH RECURSIVE cte AS (
SELECT
oid
FROM
pg_roles
WHERE
rolname = _user
UNION ALL
SELECT
m.roleid
FROM
cte
JOIN pg_auth_members m ON m.member = cte.oid
)
SELECT
pg_roles.rolname::text AS rolname
FROM
cte c,
pg_roles
WHERE
pg_roles.oid = c.oid;
$EOFCODE$ LANGUAGE sql IMMUTABLE;
CREATE FUNCTION verify_constraint(_table text, _name text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
c.conname,
pg_get_constraintdef(c.oid)
FROM
pg_constraint c
WHERE
conname = _name
AND c.conrelid = _table::regclass) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent constraint --> %', _name
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_domain(_type text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
pg_type.typname,
n.nspname
FROM
pg_type,
pg_catalog.pg_namespace n
WHERE
typtype = 'd'
AND typname = get_entity_from_str (_type)
AND nspname = get_schema_from_str (_type)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent type --> %', _type
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_extension(_extname text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
pg_available_extensions
WHERE
name = _extname) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent extension --> %', _extname
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_function(_name text, _user text DEFAULT NULL) RETURNS boolean AS $EOFCODE$
DECLARE
check_user text;
BEGIN
IF (_user IS NOT NULL) THEN
check_user = _user;
ELSE
check_user = CURRENT_USER;
END IF;
IF EXISTS (
SELECT
has_function_privilege(check_user, p.oid, 'execute')
FROM
pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE
n.nspname = get_schema_from_str (_name)
AND p.proname = get_entity_from_str (_name)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent function --> %', _name
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_index(_table text, _index text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
list_indexes (_table, _index)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent index --> %', _index
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_membership(_user text, _role text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
list_memberships (_user)
WHERE
rolname = _role) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent member --> %', _user
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_policy(_policy text, _table text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
pg_class p
JOIN pg_catalog.pg_namespace n ON n.oid = p.relnamespace
JOIN pg_policy pol ON pol.polrelid = p.relfilenode
WHERE
pol.polname = _policy
AND relrowsecurity = 'true'
AND relname = get_entity_from_str (_table)
AND nspname = get_schema_from_str (_table)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent policy or missing relrowsecurity --> %', _policy
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_role(_user text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
pg_roles
WHERE
rolname = _user) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent user --> %', _user
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_schema(_schema text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
*
FROM
pg_catalog.pg_namespace
WHERE
nspname = _schema) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent schema --> %', _schema
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_security(_table text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
n.oid,
relname,
n.nspname
FROM
pg_class p
JOIN pg_catalog.pg_namespace n ON n.oid = p.relnamespace
WHERE
relrowsecurity = 'true'
AND relname = get_entity_from_str (_table)
AND nspname = get_schema_from_str (_table)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent security --> %', _name
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_table_grant(_table text, _privilege text, _role text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
grantee,
privilege_type
FROM
information_schema.role_table_grants
WHERE
table_schema = get_schema_from_str (_table)
AND table_name = get_entity_from_str (_table)
AND privilege_type = _privilege
AND grantee = _role) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent table grant --> %', _privilege
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_table(_table text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
*
FROM
information_schema.tables
WHERE
table_schema = get_schema_from_str (_table)
AND table_name = get_entity_from_str (_table)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent table --> %', _table
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_trigger(_trigger text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
pg_trigger.tgname,
n.nspname
FROM
pg_trigger,
pg_catalog.pg_namespace n
WHERE
tgname = get_entity_from_str (_trigger)
AND nspname = get_schema_from_str (_trigger)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent trigger --> %', _trigger
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_type(_type text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
pg_type.typname,
n.nspname
FROM
pg_type,
pg_catalog.pg_namespace n
WHERE
typname = get_entity_from_str (_type)
AND nspname = get_schema_from_str (_type)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent type --> %', _type
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_view(_view text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
*
FROM
information_schema.views
WHERE
table_schema = get_schema_from_str (_view)
AND table_name = get_entity_from_str (_view)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent view --> %', _view
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
+2
-2

@@ -1,3 +0,3 @@

EXTENSION = launchql-verify
DATA = sql/launchql-verify--0.9.0.sql
EXTENSION = pgpm-verify
DATA = sql/pgpm-verify--0.14.0.sql

@@ -4,0 +4,0 @@ PG_CONFIG = pg_config

{
"name": "@pgpm/verify",
"version": "0.14.0",
"version": "0.15.0",
"description": "Verification utilities for PGPM deploy/verify/revert workflow",

@@ -34,3 +34,3 @@ "author": "Dan Lynch <pyramation@gmail.com>",

},
"gitHead": "7369638ab084da95b0cb00ec63ad236637f6ebe5"
"gitHead": "118ac6f810720378fa954e9620abf2516293c148"
}

@@ -1,2 +0,2 @@

-- Revert launchql-verify:procedures/get_entity_from_str from pg
-- Revert pgpm-verify:procedures/get_entity_from_str from pg

@@ -3,0 +3,0 @@ BEGIN;

@@ -1,2 +0,2 @@

-- Revert launchql-verify:procedures/get_schema_from_str from pg
-- Revert pgpm-verify:procedures/get_schema_from_str from pg

@@ -3,0 +3,0 @@ BEGIN;

@@ -1,2 +0,2 @@

-- Revert launchql-verify:procedures/list_indexes from pg
-- Revert pgpm-verify:procedures/list_indexes from pg

@@ -3,0 +3,0 @@ BEGIN;

@@ -1,2 +0,2 @@

-- Revert launchql-verify:procedures/list_memberships from pg
-- Revert pgpm-verify:procedures/list_memberships from pg

@@ -3,0 +3,0 @@ BEGIN;

@@ -1,2 +0,2 @@

-- Verify launchql-verify:procedures/get_entity_from_str on pg
-- Verify pgpm-verify:procedures/get_entity_from_str on pg

@@ -3,0 +3,0 @@ BEGIN;

@@ -1,2 +0,2 @@

-- Verify launchql-verify:procedures/get_schema_from_str on pg
-- Verify pgpm-verify:procedures/get_schema_from_str on pg

@@ -3,0 +3,0 @@ BEGIN;

@@ -1,2 +0,2 @@

-- Verify launchql-verify:procedures/list_indexes on pg
-- Verify pgpm-verify:procedures/list_indexes on pg

@@ -3,0 +3,0 @@ BEGIN;

@@ -1,2 +0,2 @@

-- Verify launchql-verify:procedures/list_memberships on pg
-- Verify pgpm-verify:procedures/list_memberships on pg

@@ -3,0 +3,0 @@ BEGIN;

Sorry, the diff of this file is not supported yet

\echo Use "CREATE EXTENSION launchql-verify" to load this file. \quit
CREATE FUNCTION get_entity_from_str(qualified_name text) RETURNS text AS $EOFCODE$
DECLARE
parts text[];
BEGIN
SELECT
parse_ident(qualified_name) INTO parts;
IF cardinality(parts) > 1 THEN
RETURN parts[2];
ELSE
RETURN parts[1];
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql STRICT;
CREATE FUNCTION get_schema_from_str(qualified_name text) RETURNS text AS $EOFCODE$
DECLARE
parts text[];
BEGIN
SELECT
parse_ident(qualified_name) INTO parts;
IF cardinality(parts) > 1 THEN
RETURN parts[1];
ELSE
RETURN 'public';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql STRICT;
CREATE FUNCTION list_indexes(_table text, _index text) RETURNS TABLE ( schema_name text, table_name text, index_name text ) AS $EOFCODE$
SELECT
n.nspname::text AS schema_name,
t.relname::text AS table_name,
i.relname::text AS index_name
FROM
pg_class t,
pg_class i,
pg_index ix,
pg_catalog.pg_namespace n
WHERE
t.oid = ix.indrelid
AND i.oid = ix.indexrelid
AND n.oid = i.relnamespace
AND n.nspname = get_schema_from_str(_table)
AND i.relname = _index
AND t.relname = get_entity_from_str(_table);
$EOFCODE$ LANGUAGE sql IMMUTABLE;
CREATE FUNCTION list_memberships(_user text) RETURNS TABLE ( rolname text ) AS $EOFCODE$ WITH RECURSIVE cte AS (
SELECT
oid
FROM
pg_roles
WHERE
rolname = _user
UNION ALL
SELECT
m.roleid
FROM
cte
JOIN pg_auth_members m ON m.member = cte.oid
)
SELECT
pg_roles.rolname::text AS rolname
FROM
cte c,
pg_roles
WHERE
pg_roles.oid = c.oid;
$EOFCODE$ LANGUAGE sql IMMUTABLE;
CREATE FUNCTION verify_constraint(_table text, _name text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
c.conname,
pg_get_constraintdef(c.oid)
FROM
pg_constraint c
WHERE
conname = _name
AND c.conrelid = _table::regclass) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent constraint --> %', _name
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_domain(_type text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
pg_type.typname,
n.nspname
FROM
pg_type,
pg_catalog.pg_namespace n
WHERE
typtype = 'd'
AND typname = get_entity_from_str (_type)
AND nspname = get_schema_from_str (_type)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent type --> %', _type
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_extension(_extname text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
pg_available_extensions
WHERE
name = _extname) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent extension --> %', _extname
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_function(_name text, _user text DEFAULT NULL) RETURNS boolean AS $EOFCODE$
DECLARE
check_user text;
BEGIN
IF (_user IS NOT NULL) THEN
check_user = _user;
ELSE
check_user = CURRENT_USER;
END IF;
IF EXISTS (
SELECT
has_function_privilege(check_user, p.oid, 'execute')
FROM
pg_catalog.pg_proc p
JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE
n.nspname = get_schema_from_str (_name)
AND p.proname = get_entity_from_str (_name)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent function --> %', _name
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_index(_table text, _index text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
list_indexes (_table, _index)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent index --> %', _index
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_membership(_user text, _role text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
list_memberships (_user)
WHERE
rolname = _role) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent member --> %', _user
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_policy(_policy text, _table text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
pg_class p
JOIN pg_catalog.pg_namespace n ON n.oid = p.relnamespace
JOIN pg_policy pol ON pol.polrelid = p.relfilenode
WHERE
pol.polname = _policy
AND relrowsecurity = 'true'
AND relname = get_entity_from_str (_table)
AND nspname = get_schema_from_str (_table)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent policy or missing relrowsecurity --> %', _policy
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_role(_user text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
1
FROM
pg_roles
WHERE
rolname = _user) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent user --> %', _user
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_schema(_schema text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
*
FROM
pg_catalog.pg_namespace
WHERE
nspname = _schema) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent schema --> %', _schema
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_security(_table text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
n.oid,
relname,
n.nspname
FROM
pg_class p
JOIN pg_catalog.pg_namespace n ON n.oid = p.relnamespace
WHERE
relrowsecurity = 'true'
AND relname = get_entity_from_str (_table)
AND nspname = get_schema_from_str (_table)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent security --> %', _name
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_table_grant(_table text, _privilege text, _role text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
grantee,
privilege_type
FROM
information_schema.role_table_grants
WHERE
table_schema = get_schema_from_str (_table)
AND table_name = get_entity_from_str (_table)
AND privilege_type = _privilege
AND grantee = _role) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent table grant --> %', _privilege
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_table(_table text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
*
FROM
information_schema.tables
WHERE
table_schema = get_schema_from_str (_table)
AND table_name = get_entity_from_str (_table)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent table --> %', _table
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_trigger(_trigger text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
pg_trigger.tgname,
n.nspname
FROM
pg_trigger,
pg_catalog.pg_namespace n
WHERE
tgname = get_entity_from_str (_trigger)
AND nspname = get_schema_from_str (_trigger)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent trigger --> %', _trigger
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_type(_type text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
pg_type.typname,
n.nspname
FROM
pg_type,
pg_catalog.pg_namespace n
WHERE
typname = get_entity_from_str (_type)
AND nspname = get_schema_from_str (_type)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent type --> %', _type
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;
CREATE FUNCTION verify_view(_view text) RETURNS boolean AS $EOFCODE$
BEGIN
IF EXISTS (
SELECT
*
FROM
information_schema.views
WHERE
table_schema = get_schema_from_str (_view)
AND table_name = get_entity_from_str (_view)) THEN
RETURN TRUE;
ELSE
RAISE EXCEPTION 'Nonexistent view --> %', _view
USING HINT = 'Please check';
END IF;
END;
$EOFCODE$ LANGUAGE plpgsql IMMUTABLE;

Sorry, the diff of this file is not supported yet