pipework 0.264.1 → 0.264.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.264.2
4
+
5
+ - **Fixed: a per-file clone's app role holds the anchor app role's grants on schemas other than `public`** (#932). Since 0.264.1 a `beforeAll` app-role pool reaches the clone, whose app role was granted on `public` only, so a query into another schema the anchor's configured app role (`appTestUrl`) could use failed with `permission denied for schema`. When a template is built, the anchor role's own grants on every non-system schema but `public` (schema USAGE/CREATE, tables, views, sequences, routines and default privileges) are read from the anchor and made to the template's app role, for the schemas and objects the template carries; every clone inherits them. Each grant is made by the object's owner (the test login or the migration owner); one neither owns fails setup with a message naming it. A schema that exists only on the anchor, and not in the migrated template, is still absent from the clone. Column-level grants and privileges held through role membership are not copied, and a cached template does not see later changes to the anchor's grants. Templates are rebuilt once (format version 3).
6
+
3
7
  ## 0.264.1
4
8
 
5
9
  - **Fixed: in a test fork, `pool.getOrCreate(config.database(name))` outside test isolation connects to the fork's clone** (#930). Opened in `beforeAll` or at module scope, it connected to the database's `testUrl`, which every fork of the run shares and templates are built from, so its writes committed there and concurrent forks saw each other's rows. Once `setupTestDatabases` has run, every role routes to the clone: the owner and app roles on the clone's logins, the system role on its configured login against the clone's database. A pool opened before setup is closed and reopened on the clone at the next `getOrCreate`, and teardown closes routed pools before the clone is dropped. `migrateOne`'s apply step still opens its own connection on the configured URL.
@@ -13,7 +13,7 @@ import { VERSION } from '../core/runtime/broker.js';
13
13
  // fresh process, and a per-process key (pid, run nonce) meant every one of them
14
14
  // replayed the whole migration stack. Issue #340.
15
15
  /** Bump when pipework changes the SHAPE of what it puts in a template. */
16
- const TEMPLATE_FORMAT_VERSION = 2;
16
+ const TEMPLATE_FORMAT_VERSION = 3;
17
17
  /**
18
18
  * Hash a migrations folder's contents: every file's path relative to the folder
19
19
  * and its bytes, in a stable order. Path names are included so a rename is a
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
@@ -560,6 +560,9 @@ async function buildTemplate(instance, plan, tracker) {
560
560
  const grantBeat = (detail) => tracker.reached('template-grants', plan.name, detail);
561
561
  grantBeat('role');
562
562
  await provisionTemplateRole(adminClient, templateUrlStr, plan.appRole, migrateUrlStr, grantBeat);
563
+ if ('appUrl' in dbConfig) {
564
+ await grantAnchorSchemas(dbConfig.url, new URL(dbConfig.appUrl).username, plan.appRole, templateUrlStr, migrateUrlStr, grantBeat);
565
+ }
563
566
  if (dbConfig.rls !== undefined)
564
567
  await provisionTestSystemPolicy(templateUrlStr, migrateUrlStr, grantBeat);
565
568
  // The marker is written last, and its presence is what makes this template
@@ -845,6 +848,135 @@ async function provisionTemplateRole(client, templateUrl, roleName, migrateUrl,
845
848
  }
846
849
  await templateClient.end();
847
850
  }
851
+ // Every schema but `public` and the system ones.
852
+ const ANCHOR_SCHEMA = `n.nspname <> 'public' AND n.nspname <> 'information_schema' AND n.nspname NOT LIKE 'pg\_%'`;
853
+ const ACL_GRANTEE = `a.grantee = (SELECT oid FROM pg_roles WHERE rolname = $1)`;
854
+ const ACL_PRIVILEGE = /^[A-Z]+$/;
855
+ const DEFAULT_ACL_TARGET = { r: 'TABLES', S: 'SEQUENCES', f: 'ROUTINES', T: 'TYPES' };
856
+ const splitPrivs = (list) => list.split(',');
857
+ const objectKey = (...parts) => parts.join('\x1f');
858
+ // What the anchor's configured app role holds on the anchor's non-public
859
+ // schemas: its own ACL entries on each schema, relation and routine, and its
860
+ // default privileges. Column-level and inherited (role membership) grants are
861
+ // not read.
862
+ async function readAnchorAcl(anchorUrl, anchorRole) {
863
+ const client = postgres(anchorUrl, { max: 1, fetch_types: false, onnotice: () => { } });
864
+ try {
865
+ const grants = async (query, keyOf) => (await client.unsafe(query, [anchorRole]))
866
+ .map(r => ({ key: keyOf(r), privs: splitPrivs(r['privs']).filter(p => ACL_PRIVILEGE.test(p)) }));
867
+ return {
868
+ schemas: await grants(`SELECT n.nspname, string_agg(DISTINCT a.privilege_type, ',') AS privs
869
+ FROM pg_namespace n, aclexplode(n.nspacl) a
870
+ WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE} GROUP BY n.nspname`, r => objectKey(r['nspname'])),
871
+ relations: await grants(`SELECT n.nspname, c.relname, string_agg(DISTINCT a.privilege_type, ',') AS privs
872
+ FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace, aclexplode(c.relacl) a
873
+ WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE}
874
+ GROUP BY n.nspname, c.relname`, r => objectKey(r['nspname'], r['relname'])),
875
+ routines: await grants(`SELECT n.nspname, p.proname, pg_get_function_identity_arguments(p.oid) AS args, string_agg(DISTINCT a.privilege_type, ',') AS privs
876
+ FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace, aclexplode(p.proacl) a
877
+ WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE}
878
+ GROUP BY n.nspname, p.oid, p.proname`, r => objectKey(r['nspname'], r['proname'], r['args'])),
879
+ defaults: (await client.unsafe(`SELECT n.nspname, d.defaclobjtype AS objtype, string_agg(DISTINCT a.privilege_type, ',') AS privs
880
+ FROM pg_default_acl d JOIN pg_namespace n ON n.oid = d.defaclnamespace, aclexplode(d.defaclacl) a
881
+ WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE} GROUP BY n.nspname, d.defaclobjtype`, [anchorRole]))
882
+ .flatMap(r => DEFAULT_ACL_TARGET[r.objtype] === undefined ? [] : [{
883
+ schema: r.nspname, target: DEFAULT_ACL_TARGET[r.objtype], privs: splitPrivs(r.privs).filter(p => ACL_PRIVILEGE.test(p)),
884
+ }]),
885
+ };
886
+ }
887
+ finally {
888
+ await client.end();
889
+ }
890
+ }
891
+ /**
892
+ * A clone's app role is a different role from the anchor's configured app role,
893
+ * so what the anchor role was granted on other schemas (`public` is handled by
894
+ * `provisionTemplateRole`) does not reach it. Read those grants from the anchor
895
+ * and make them on the template, which every clone inherits. Only schemas and
896
+ * objects the template carries are granted; each grantor grants what it owns, and
897
+ * a grant nobody could make is an error naming the object.
898
+ */
899
+ async function grantAnchorSchemas(anchorUrl, anchorRole, roleName, templateUrl, migrateUrl, beat) {
900
+ const acl = await readAnchorAcl(anchorUrl, anchorRole);
901
+ if (acl.schemas.length + acl.relations.length + acl.routines.length + acl.defaults.length === 0)
902
+ return;
903
+ beat('anchor schemas');
904
+ const roleIdent = quoteIdentifier(roleName, 'role');
905
+ const wanted = (list, key) => list.find(g => g.key === key)?.privs;
906
+ const missing = [];
907
+ for (const url of migrateUrl === undefined ? [templateUrl] : [templateUrl, migrateUrl]) {
908
+ const client = postgres(url, { max: 1, fetch_types: false, onnotice: () => { } });
909
+ try {
910
+ for (const r of await client `
911
+ SELECT n.nspname, quote_ident(n.nspname) AS ident FROM pg_namespace n WHERE pg_get_userbyid(n.nspowner) = current_user`) {
912
+ const privs = wanted(acl.schemas, objectKey(r.nspname));
913
+ if (privs !== undefined)
914
+ await client.unsafe(`GRANT ${privs.join(', ')} ON SCHEMA ${r.ident} TO ${roleIdent}`);
915
+ }
916
+ for (const r of await client `
917
+ SELECT n.nspname, c.relname, c.relkind AS kind, c.oid::regclass::text AS ident
918
+ FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
919
+ WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND pg_get_userbyid(c.relowner) = current_user`) {
920
+ const privs = wanted(acl.relations, objectKey(r.nspname, r.relname));
921
+ if (privs === undefined)
922
+ continue;
923
+ await client.unsafe(`GRANT ${privs.join(', ')} ON ${r.kind === 'S' ? 'SEQUENCE' : 'TABLE'} ${r.ident} TO ${roleIdent}`);
924
+ }
925
+ for (const r of await client `
926
+ SELECT n.nspname, p.proname, pg_get_function_identity_arguments(p.oid) AS args, p.oid::regprocedure::text AS ident
927
+ FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE pg_get_userbyid(p.proowner) = current_user`) {
928
+ const privs = wanted(acl.routines, objectKey(r.nspname, r.proname, r.args));
929
+ if (privs !== undefined)
930
+ await client.unsafe(`GRANT ${privs.join(', ')} ON ROUTINE ${r.ident} TO ${roleIdent}`);
931
+ }
932
+ const present = new Set((await client `SELECT nspname FROM pg_namespace`).map(r => r.nspname));
933
+ for (const d of acl.defaults.filter(d => present.has(d.schema))) {
934
+ await client.unsafe(`ALTER DEFAULT PRIVILEGES IN SCHEMA ${quoteIdentifier(d.schema, 'schema')} GRANT ${d.privs.join(', ')} ON ${d.target} TO ${roleIdent}`);
935
+ }
936
+ }
937
+ finally {
938
+ await client.end();
939
+ }
940
+ }
941
+ // Whatever the template carries that the anchor role holds and the clone role
942
+ // now lacks was owned by neither grantor.
943
+ const check = postgres(templateUrl, { max: 1, fetch_types: false, onnotice: () => { } });
944
+ try {
945
+ const lacking = async (rows, test) => {
946
+ if (rows.length === 0)
947
+ return;
948
+ const found = await check `
949
+ SELECT t.ident, t.priv FROM jsonb_to_recordset(${JSON.stringify(rows)}::text::jsonb) AS t(ident text, priv text)
950
+ WHERE NOT ${check.unsafe(test)}`;
951
+ for (const f of found)
952
+ missing.push(`${f.priv} on ${f.ident}`);
953
+ };
954
+ const flat = (list, toIdent) => list.flatMap(g => g.privs.map(priv => ({ ident: toIdent(g.key), priv })));
955
+ const role = `'${roleName.replace(/'/g, "''")}'`;
956
+ const exists = async (query, idents) => new Set((await check.unsafe(query, [JSON.stringify(idents)])).map(r => r.ident));
957
+ const schemaNames = [...new Set(acl.schemas.map(g => g.key))];
958
+ const inTemplate = await exists(`SELECT nspname AS ident FROM pg_namespace WHERE nspname IN (SELECT jsonb_array_elements_text($1::text::jsonb))`, schemaNames);
959
+ await lacking(flat(acl.schemas.filter(g => inTemplate.has(g.key)), k => k), `has_schema_privilege(${role}, t.ident, t.priv)`);
960
+ const relIdents = await check.unsafe(`SELECT n.nspname || E'\\x1f' || c.relname AS key, c.oid::regclass::text AS ident, c.relkind = 'S' AS seq
961
+ FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
962
+ WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND ${ANCHOR_SCHEMA}`);
963
+ for (const seq of [false, true]) {
964
+ const relByKey = new Map(relIdents.filter(r => r.seq === seq).map(r => [r.key, r.ident]));
965
+ await lacking(flat(acl.relations.filter(g => relByKey.has(g.key)), k => relByKey.get(k)), `has_${seq ? 'sequence' : 'table'}_privilege(${role}, t.ident::regclass, t.priv)`);
966
+ }
967
+ const procIdents = await check.unsafe(`SELECT n.nspname || E'\\x1f' || p.proname || E'\\x1f' || pg_get_function_identity_arguments(p.oid) AS key, p.oid::regprocedure::text AS ident
968
+ FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE ${ANCHOR_SCHEMA}`);
969
+ const procByKey = new Map(procIdents.map(r => [r.key, r.ident]));
970
+ await lacking(flat(acl.routines.filter(g => procByKey.has(g.key)), k => procByKey.get(k)), `has_function_privilege(${role}, t.ident::regprocedure, t.priv)`);
971
+ }
972
+ finally {
973
+ await check.end();
974
+ }
975
+ if (missing.length > 0) {
976
+ throw new Error(`[pipework] The anchor's app role "${anchorRole}" holds privileges the clone app role "${roleName}" could not be given, ` +
977
+ `because neither the test login nor the migration owner owns the object: ${missing.join('; ')}.`);
978
+ }
979
+ }
848
980
  const APP_ROLE_GRANTS = {
849
981
  tables: 'SELECT, INSERT, UPDATE, DELETE',
850
982
  sequences: 'USAGE, SELECT',
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/test/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipework",
3
- "version": "0.264.1",
3
+ "version": "0.264.2",
4
4
  "description": "TypeScript framework for multi-tenant SaaS applications. PostgreSQL-only.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -17,7 +17,7 @@ import { VERSION } from '../core/runtime/broker.js'
17
17
  // replayed the whole migration stack. Issue #340.
18
18
 
19
19
  /** Bump when pipework changes the SHAPE of what it puts in a template. */
20
- const TEMPLATE_FORMAT_VERSION = 2
20
+ const TEMPLATE_FORMAT_VERSION = 3
21
21
 
22
22
  /**
23
23
  * Everything that determines a template's contents. Serialized and hashed;
package/src/test/setup.ts CHANGED
@@ -726,6 +726,9 @@ async function buildTemplate(instance: Manifold, plan: TemplatePlan, tracker: Ph
726
726
  const grantBeat = (detail: string): void => tracker.reached('template-grants', plan.name, detail)
727
727
  grantBeat('role')
728
728
  await provisionTemplateRole(adminClient!, templateUrlStr, plan.appRole, migrateUrlStr, grantBeat)
729
+ if ('appUrl' in dbConfig) {
730
+ await grantAnchorSchemas(dbConfig.url, new URL(dbConfig.appUrl).username, plan.appRole, templateUrlStr, migrateUrlStr, grantBeat)
731
+ }
729
732
  if (dbConfig.rls !== undefined) await provisionTestSystemPolicy(templateUrlStr, migrateUrlStr, grantBeat)
730
733
 
731
734
  // The marker is written last, and its presence is what makes this template
@@ -1109,6 +1112,162 @@ async function provisionTemplateRole(
1109
1112
  await templateClient.end()
1110
1113
  }
1111
1114
 
1115
+ // Every schema but `public` and the system ones.
1116
+ const ANCHOR_SCHEMA = `n.nspname <> 'public' AND n.nspname <> 'information_schema' AND n.nspname NOT LIKE 'pg\_%'`
1117
+ const ACL_GRANTEE = `a.grantee = (SELECT oid FROM pg_roles WHERE rolname = $1)`
1118
+ const ACL_PRIVILEGE = /^[A-Z]+$/
1119
+ const DEFAULT_ACL_TARGET: Readonly<Record<string, string>> = { r: 'TABLES', S: 'SEQUENCES', f: 'ROUTINES', T: 'TYPES' }
1120
+
1121
+ interface AnchorGrant { readonly key: string; readonly privs: string[] }
1122
+ interface AnchorAcl {
1123
+ readonly schemas: AnchorGrant[]
1124
+ readonly relations: AnchorGrant[]
1125
+ readonly routines: AnchorGrant[]
1126
+ readonly defaults: { readonly schema: string; readonly target: string; readonly privs: string[] }[]
1127
+ }
1128
+
1129
+ const splitPrivs = (list: string): string[] => list.split(',')
1130
+ const objectKey = (...parts: string[]): string => parts.join('\x1f')
1131
+
1132
+ // What the anchor's configured app role holds on the anchor's non-public
1133
+ // schemas: its own ACL entries on each schema, relation and routine, and its
1134
+ // default privileges. Column-level and inherited (role membership) grants are
1135
+ // not read.
1136
+ async function readAnchorAcl(anchorUrl: string, anchorRole: string): Promise<AnchorAcl> {
1137
+ const client = postgres(anchorUrl, { max: 1, fetch_types: false, onnotice: () => {} })
1138
+ try {
1139
+ const grants = async (query: string, keyOf: (r: Record<string, string>) => string): Promise<AnchorGrant[]> =>
1140
+ (await client.unsafe<Record<string, string>[]>(query, [anchorRole]))
1141
+ .map(r => ({ key: keyOf(r), privs: splitPrivs(r['privs']!).filter(p => ACL_PRIVILEGE.test(p)) }))
1142
+ return {
1143
+ schemas: await grants(
1144
+ `SELECT n.nspname, string_agg(DISTINCT a.privilege_type, ',') AS privs
1145
+ FROM pg_namespace n, aclexplode(n.nspacl) a
1146
+ WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE} GROUP BY n.nspname`,
1147
+ r => objectKey(r['nspname']!)),
1148
+ relations: await grants(
1149
+ `SELECT n.nspname, c.relname, string_agg(DISTINCT a.privilege_type, ',') AS privs
1150
+ FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace, aclexplode(c.relacl) a
1151
+ WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE}
1152
+ GROUP BY n.nspname, c.relname`,
1153
+ r => objectKey(r['nspname']!, r['relname']!)),
1154
+ routines: await grants(
1155
+ `SELECT n.nspname, p.proname, pg_get_function_identity_arguments(p.oid) AS args, string_agg(DISTINCT a.privilege_type, ',') AS privs
1156
+ FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace, aclexplode(p.proacl) a
1157
+ WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE}
1158
+ GROUP BY n.nspname, p.oid, p.proname`,
1159
+ r => objectKey(r['nspname']!, r['proname']!, r['args']!)),
1160
+ defaults: (await client.unsafe<{ nspname: string; objtype: string; privs: string }[]>(
1161
+ `SELECT n.nspname, d.defaclobjtype AS objtype, string_agg(DISTINCT a.privilege_type, ',') AS privs
1162
+ FROM pg_default_acl d JOIN pg_namespace n ON n.oid = d.defaclnamespace, aclexplode(d.defaclacl) a
1163
+ WHERE ${ANCHOR_SCHEMA} AND ${ACL_GRANTEE} GROUP BY n.nspname, d.defaclobjtype`, [anchorRole]))
1164
+ .flatMap(r => DEFAULT_ACL_TARGET[r.objtype] === undefined ? [] : [{
1165
+ schema: r.nspname, target: DEFAULT_ACL_TARGET[r.objtype]!, privs: splitPrivs(r.privs).filter(p => ACL_PRIVILEGE.test(p)),
1166
+ }]),
1167
+ }
1168
+ } finally {
1169
+ await client.end()
1170
+ }
1171
+ }
1172
+
1173
+ /**
1174
+ * A clone's app role is a different role from the anchor's configured app role,
1175
+ * so what the anchor role was granted on other schemas (`public` is handled by
1176
+ * `provisionTemplateRole`) does not reach it. Read those grants from the anchor
1177
+ * and make them on the template, which every clone inherits. Only schemas and
1178
+ * objects the template carries are granted; each grantor grants what it owns, and
1179
+ * a grant nobody could make is an error naming the object.
1180
+ */
1181
+ async function grantAnchorSchemas(
1182
+ anchorUrl: string,
1183
+ anchorRole: string,
1184
+ roleName: string,
1185
+ templateUrl: string,
1186
+ migrateUrl: string | undefined,
1187
+ beat: (detail: string) => void,
1188
+ ): Promise<void> {
1189
+ const acl = await readAnchorAcl(anchorUrl, anchorRole)
1190
+ if (acl.schemas.length + acl.relations.length + acl.routines.length + acl.defaults.length === 0) return
1191
+ beat('anchor schemas')
1192
+ const roleIdent = quoteIdentifier(roleName, 'role')
1193
+ const wanted = (list: AnchorGrant[], key: string): string[] | undefined => list.find(g => g.key === key)?.privs
1194
+
1195
+ const missing: string[] = []
1196
+ for (const url of migrateUrl === undefined ? [templateUrl] : [templateUrl, migrateUrl]) {
1197
+ const client = postgres(url, { max: 1, fetch_types: false, onnotice: () => {} })
1198
+ try {
1199
+ for (const r of await client<{ nspname: string; ident: string }[]>`
1200
+ SELECT n.nspname, quote_ident(n.nspname) AS ident FROM pg_namespace n WHERE pg_get_userbyid(n.nspowner) = current_user`) {
1201
+ const privs = wanted(acl.schemas, objectKey(r.nspname))
1202
+ if (privs !== undefined) await client.unsafe(`GRANT ${privs.join(', ')} ON SCHEMA ${r.ident} TO ${roleIdent}`)
1203
+ }
1204
+ for (const r of await client<{ nspname: string; relname: string; kind: string; ident: string }[]>`
1205
+ SELECT n.nspname, c.relname, c.relkind AS kind, c.oid::regclass::text AS ident
1206
+ FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
1207
+ WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND pg_get_userbyid(c.relowner) = current_user`) {
1208
+ const privs = wanted(acl.relations, objectKey(r.nspname, r.relname))
1209
+ if (privs === undefined) continue
1210
+ await client.unsafe(`GRANT ${privs.join(', ')} ON ${r.kind === 'S' ? 'SEQUENCE' : 'TABLE'} ${r.ident} TO ${roleIdent}`)
1211
+ }
1212
+ for (const r of await client<{ nspname: string; proname: string; args: string; ident: string }[]>`
1213
+ SELECT n.nspname, p.proname, pg_get_function_identity_arguments(p.oid) AS args, p.oid::regprocedure::text AS ident
1214
+ FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE pg_get_userbyid(p.proowner) = current_user`) {
1215
+ const privs = wanted(acl.routines, objectKey(r.nspname, r.proname, r.args))
1216
+ if (privs !== undefined) await client.unsafe(`GRANT ${privs.join(', ')} ON ROUTINE ${r.ident} TO ${roleIdent}`)
1217
+ }
1218
+ const present = new Set((await client<{ nspname: string }[]>`SELECT nspname FROM pg_namespace`).map(r => r.nspname))
1219
+ for (const d of acl.defaults.filter(d => present.has(d.schema))) {
1220
+ await client.unsafe(`ALTER DEFAULT PRIVILEGES IN SCHEMA ${quoteIdentifier(d.schema, 'schema')} GRANT ${d.privs.join(', ')} ON ${d.target} TO ${roleIdent}`)
1221
+ }
1222
+ } finally {
1223
+ await client.end()
1224
+ }
1225
+ }
1226
+
1227
+ // Whatever the template carries that the anchor role holds and the clone role
1228
+ // now lacks was owned by neither grantor.
1229
+ const check = postgres(templateUrl, { max: 1, fetch_types: false, onnotice: () => {} })
1230
+ try {
1231
+ const lacking = async (rows: { ident: string; priv: string }[], test: string): Promise<void> => {
1232
+ if (rows.length === 0) return
1233
+ const found = await check<{ ident: string; priv: string }[]>`
1234
+ SELECT t.ident, t.priv FROM jsonb_to_recordset(${JSON.stringify(rows)}::text::jsonb) AS t(ident text, priv text)
1235
+ WHERE NOT ${check.unsafe(test)}`
1236
+ for (const f of found) missing.push(`${f.priv} on ${f.ident}`)
1237
+ }
1238
+ const flat = (list: AnchorGrant[], toIdent: (key: string) => string): { ident: string; priv: string }[] =>
1239
+ list.flatMap(g => g.privs.map(priv => ({ ident: toIdent(g.key), priv })))
1240
+ const role = `'${roleName.replace(/'/g, "''")}'`
1241
+ const exists = async (query: string, idents: string[]): Promise<Set<string>> =>
1242
+ new Set((await check.unsafe<{ ident: string }[]>(query, [JSON.stringify(idents)])).map(r => r.ident))
1243
+ const schemaNames = [...new Set(acl.schemas.map(g => g.key))]
1244
+ const inTemplate = await exists(`SELECT nspname AS ident FROM pg_namespace WHERE nspname IN (SELECT jsonb_array_elements_text($1::text::jsonb))`, schemaNames)
1245
+ await lacking(flat(acl.schemas.filter(g => inTemplate.has(g.key)), k => k), `has_schema_privilege(${role}, t.ident, t.priv)`)
1246
+ const relIdents = await check.unsafe<{ key: string; ident: string; seq: boolean }[]>(
1247
+ `SELECT n.nspname || E'\\x1f' || c.relname AS key, c.oid::regclass::text AS ident, c.relkind = 'S' AS seq
1248
+ FROM pg_class c JOIN pg_namespace n ON n.oid = c.relnamespace
1249
+ WHERE c.relkind IN ('r', 'p', 'v', 'm', 'f', 'S') AND ${ANCHOR_SCHEMA}`)
1250
+ for (const seq of [false, true]) {
1251
+ const relByKey = new Map(relIdents.filter(r => r.seq === seq).map(r => [r.key, r.ident]))
1252
+ await lacking(flat(acl.relations.filter(g => relByKey.has(g.key)), k => relByKey.get(k)!),
1253
+ `has_${seq ? 'sequence' : 'table'}_privilege(${role}, t.ident::regclass, t.priv)`)
1254
+ }
1255
+ const procIdents = await check.unsafe<{ key: string; ident: string }[]>(
1256
+ `SELECT n.nspname || E'\\x1f' || p.proname || E'\\x1f' || pg_get_function_identity_arguments(p.oid) AS key, p.oid::regprocedure::text AS ident
1257
+ FROM pg_proc p JOIN pg_namespace n ON n.oid = p.pronamespace WHERE ${ANCHOR_SCHEMA}`)
1258
+ const procByKey = new Map(procIdents.map(r => [r.key, r.ident]))
1259
+ await lacking(flat(acl.routines.filter(g => procByKey.has(g.key)), k => procByKey.get(k)!), `has_function_privilege(${role}, t.ident::regprocedure, t.priv)`)
1260
+ } finally {
1261
+ await check.end()
1262
+ }
1263
+ if (missing.length > 0) {
1264
+ throw new Error(
1265
+ `[pipework] The anchor's app role "${anchorRole}" holds privileges the clone app role "${roleName}" could not be given, ` +
1266
+ `because neither the test login nor the migration owner owns the object: ${missing.join('; ')}.`,
1267
+ )
1268
+ }
1269
+ }
1270
+
1112
1271
  /** The privileges one grantor hands one role, by object kind. */
1113
1272
  interface GrantSet {
1114
1273
  readonly tables: string