pipework 0.290.0 → 0.292.0
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 +8 -0
- package/REFERENCE.md +81 -1
- package/dist/auth/tenant/scoped-db.d.ts +9 -0
- package/dist/auth/tenant/scoped-db.d.ts.map +1 -1
- package/dist/auth/tenant/scoped-db.js +14 -0
- package/dist/auth/tenant/scoped-db.js.map +1 -1
- package/dist/data/db/function-definition.d.ts +46 -0
- package/dist/data/db/function-definition.d.ts.map +1 -0
- package/dist/data/db/function-definition.js +84 -0
- package/dist/data/db/function-definition.js.map +1 -0
- package/dist/data/db/function-source.d.ts +33 -2
- package/dist/data/db/function-source.d.ts.map +1 -1
- package/dist/data/db/function-source.js +47 -19
- package/dist/data/db/function-source.js.map +1 -1
- package/dist/data/db/namespace.d.ts +5 -3
- package/dist/data/db/namespace.d.ts.map +1 -1
- package/dist/data/db/namespace.js +5 -3
- package/dist/data/db/namespace.js.map +1 -1
- package/dist/data/db/rows.d.ts +1 -0
- package/dist/data/db/rows.d.ts.map +1 -1
- package/dist/data/db/rows.js +1 -1
- package/dist/data/db/rows.js.map +1 -1
- package/dist/data/migrate/diff.d.ts +7 -0
- package/dist/data/migrate/diff.d.ts.map +1 -1
- package/dist/data/migrate/diff.js +37 -0
- package/dist/data/migrate/diff.js.map +1 -1
- package/dist/data/migrate/history.d.ts +2 -0
- package/dist/data/migrate/history.d.ts.map +1 -1
- package/dist/data/migrate/history.js +8 -0
- package/dist/data/migrate/history.js.map +1 -1
- package/dist/data/migrate/snapshot.d.ts +3 -0
- package/dist/data/migrate/snapshot.d.ts.map +1 -1
- package/dist/data/migrate/snapshot.js +13 -0
- package/dist/data/migrate/snapshot.js.map +1 -1
- package/dist/data/migrate/sql-emit.d.ts.map +1 -1
- package/dist/data/migrate/sql-emit.js +30 -2
- package/dist/data/migrate/sql-emit.js.map +1 -1
- package/dist/data/write/audit/verb-insert.d.ts.map +1 -1
- package/dist/data/write/audit/verb-insert.js +4 -1
- package/dist/data/write/audit/verb-insert.js.map +1 -1
- package/dist/data/write/audit/verb-update.d.ts.map +1 -1
- package/dist/data/write/audit/verb-update.js +14 -3
- package/dist/data/write/audit/verb-update.js.map +1 -1
- package/dist/data/write/batch-insert.d.ts +35 -0
- package/dist/data/write/batch-insert.d.ts.map +1 -0
- package/dist/data/write/batch-insert.js +171 -0
- package/dist/data/write/batch-insert.js.map +1 -0
- package/dist/data/write/execute.d.ts +1 -1
- package/dist/data/write/execute.d.ts.map +1 -1
- package/dist/data/write/execute.js +89 -2
- package/dist/data/write/execute.js.map +1 -1
- package/dist/data/write/index.d.ts +2 -0
- package/dist/data/write/index.d.ts.map +1 -1
- package/dist/data/write/index.js +1 -0
- package/dist/data/write/index.js.map +1 -1
- package/dist/data/write/insert.d.ts +8 -0
- package/dist/data/write/insert.d.ts.map +1 -1
- package/dist/data/write/insert.js +14 -0
- package/dist/data/write/insert.js.map +1 -1
- package/dist/data/write/state.d.ts +10 -0
- package/dist/data/write/state.d.ts.map +1 -1
- package/dist/data/write/update-each.d.ts +28 -0
- package/dist/data/write/update-each.d.ts.map +1 -0
- package/dist/data/write/update-each.js +104 -0
- package/dist/data/write/update-each.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/test/function-reads.d.ts +97 -0
- package/dist/test/function-reads.d.ts.map +1 -0
- package/dist/test/function-reads.js +202 -0
- package/dist/test/function-reads.js.map +1 -0
- package/dist/test/index.d.ts +1 -0
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +1 -0
- package/dist/test/index.js.map +1 -1
- package/package.json +2 -2
- package/src/auth/tenant/scoped-db.ts +13 -0
- package/src/data/db/function-definition.ts +172 -0
- package/src/data/db/function-source.ts +86 -14
- package/src/data/db/namespace.ts +5 -3
- package/src/data/db/rows.ts +1 -1
- package/src/data/migrate/diff.ts +45 -0
- package/src/data/migrate/history.ts +9 -0
- package/src/data/migrate/snapshot.ts +17 -0
- package/src/data/migrate/sql-emit.ts +33 -3
- package/src/data/write/audit/verb-insert.ts +4 -1
- package/src/data/write/audit/verb-update.ts +13 -3
- package/src/data/write/batch-insert.ts +179 -0
- package/src/data/write/execute.ts +77 -2
- package/src/data/write/index.ts +2 -0
- package/src/data/write/insert.ts +15 -0
- package/src/data/write/state.ts +6 -0
- package/src/data/write/update-each.ts +120 -0
- package/src/index.ts +2 -1
- package/src/test/function-reads.ts +290 -0
- package/src/test/index.ts +1 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bodyQuote } from '../db/function-definition.js';
|
|
1
2
|
function q(name) {
|
|
2
3
|
return `"${name.replace(/"/g, '""')}"`;
|
|
3
4
|
}
|
|
@@ -14,8 +15,17 @@ export function emitSQL(ops) {
|
|
|
14
15
|
// tables in place before any constraint is added. Issue #312.
|
|
15
16
|
const tables = [];
|
|
16
17
|
const foreignKeys = [];
|
|
18
|
+
// Function drops lead and function creates trail, whatever order the ops come in; see diffSnapshots.
|
|
19
|
+
const functionDrops = [];
|
|
20
|
+
const functionCreates = [];
|
|
17
21
|
for (const op of ops) {
|
|
18
|
-
if (op.type === '
|
|
22
|
+
if (op.type === 'drop_function') {
|
|
23
|
+
functionDrops.push(emitDropFunction(op.fn));
|
|
24
|
+
}
|
|
25
|
+
else if (op.type === 'create_function') {
|
|
26
|
+
functionCreates.push(emitCreateFunction(op.fn));
|
|
27
|
+
}
|
|
28
|
+
else if (op.type === 'create_table') {
|
|
19
29
|
tables.push(...emitCreateTable(op.table));
|
|
20
30
|
const partitioned = op.table.partitionBy !== undefined;
|
|
21
31
|
for (const fk of Object.values(op.table.foreignKeys)) {
|
|
@@ -29,7 +39,7 @@ export function emitSQL(ops) {
|
|
|
29
39
|
tables.push(...emitOp(op));
|
|
30
40
|
}
|
|
31
41
|
}
|
|
32
|
-
return [...tables, ...foreignKeys];
|
|
42
|
+
return [...functionDrops, ...tables, ...foreignKeys, ...functionCreates];
|
|
33
43
|
}
|
|
34
44
|
function emitOp(op) {
|
|
35
45
|
switch (op.type) {
|
|
@@ -325,4 +335,22 @@ function emitAddCompositePK(tableName, tableSchema, pk, partitioned) {
|
|
|
325
335
|
function emitReplaceCompositePK(tableName, tableSchema, from, to, partitioned) {
|
|
326
336
|
return emitKeyConstraint(tableName, tableSchema, 'PRIMARY KEY', to, partitioned, from.name);
|
|
327
337
|
}
|
|
338
|
+
function qualifiedFunction(fn) {
|
|
339
|
+
return `${q(fn.schema)}.${q(fn.name)}`;
|
|
340
|
+
}
|
|
341
|
+
function emitDropFunction(fn) {
|
|
342
|
+
return `DROP FUNCTION ${qualifiedFunction(fn)}(${fn.args.join(', ')})`;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* `CREATE OR REPLACE FUNCTION`, always `LANGUAGE sql`, STABLE or IMMUTABLE, no SET clause, not SECURITY DEFINER, not STRICT:
|
|
346
|
+
* the form Postgres inlines into the calling query. The body is dollar-quoted so the statement scanner keeps it whole.
|
|
347
|
+
*/
|
|
348
|
+
function emitCreateFunction(fn) {
|
|
349
|
+
const returns = fn.returns.kind === 'scalar'
|
|
350
|
+
? fn.returns.type
|
|
351
|
+
: `TABLE(${fn.returns.columns.map(c => `${q(c.name)} ${c.type}`).join(', ')})`;
|
|
352
|
+
const rows = fn.returns.kind === 'table' ? ` ROWS ${fn.returns.rows}` : '';
|
|
353
|
+
const tag = bodyQuote(fn.body);
|
|
354
|
+
return `CREATE OR REPLACE FUNCTION ${qualifiedFunction(fn)}(${fn.args.join(', ')}) RETURNS ${returns} LANGUAGE sql ${fn.volatility.toUpperCase()}${rows} AS ${tag}${fn.body}${tag}`;
|
|
355
|
+
}
|
|
328
356
|
//# sourceMappingURL=sql-emit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-emit.js","sourceRoot":"","sources":["../../../src/data/migrate/sql-emit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sql-emit.js","sourceRoot":"","sources":["../../../src/data/migrate/sql-emit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verb-insert.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-insert.ts"],"names":[],"mappings":"AAOA,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"verb-insert.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-insert.ts"],"names":[],"mappings":"AAOA,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAKjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CAoB7F"}
|
|
@@ -8,11 +8,14 @@ import { buildAuditInserts, buildEntityIdExpr } from './audit-select.js';
|
|
|
8
8
|
import { AUDIT_COLUMNS_SQL } from './audit-columns.js';
|
|
9
9
|
import { buildFinalSelect } from './final-select.js';
|
|
10
10
|
import { applyOnConflict } from '../conflict.js';
|
|
11
|
+
import { batchInsertSql } from '../batch-insert.js';
|
|
11
12
|
export function compileInsertAudit(db, state, ctx) {
|
|
12
13
|
// `.getSQL()` strips the auto-paren drizzle adds around SQLWrapper builders
|
|
13
14
|
// when they are templated — we add explicit parens at the CTE boundary so
|
|
14
15
|
// the WITH clause keeps a uniform shape across verbs.
|
|
15
|
-
const inner =
|
|
16
|
+
const inner = state.batch === true
|
|
17
|
+
? sql `${batchInsertSql(state)} RETURNING *`
|
|
18
|
+
: applyOnConflict(db.insert(state.table).values(state.values ?? []), state).returning().getSQL();
|
|
16
19
|
const after = buildTraceSafeProjection(state.table, 'inserted') ?? sql `NULL::jsonb`;
|
|
17
20
|
const auditSelect = buildAuditInserts(ctx, sql `FROM inserted`, buildEntityIdExpr(state.table, 'inserted'), sql `NULL::jsonb`, after);
|
|
18
21
|
const finalSelect = buildFinalSelect(state, 'inserted');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verb-insert.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-insert.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yEAAyE;AACzE,sEAAsE;AACtE,qBAAqB;AAErB,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"verb-insert.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-insert.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,yEAAyE;AACzE,sEAAsE;AACtE,qBAAqB;AAErB,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAOnD,MAAM,UAAU,kBAAkB,CAAC,EAAS,EAAE,KAAiB,EAAE,GAAuB;IACtF,4EAA4E;IAC5E,0EAA0E;IAC1E,sDAAsD;IACtD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI;QAChC,CAAC,CAAC,GAAG,CAAA,GAAG,cAAc,CAAC,KAAK,CAAC,cAAc;QAC3C,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAA;IAClG,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,GAAG,CAAA,aAAa,CAAA;IACnF,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAA,eAAe,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,GAAG,CAAA,aAAa,EAAE,KAAK,CAAC,CAAA;IACnI,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;IAEvD,OAAO,GAAG,CAAA;wBACY,KAAK;;oCAEO,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACtD,WAAW;;;MAGb,WAAW;GACd,CAAA;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verb-update.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verb-update.d.ts","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-update.ts"],"names":[],"mappings":"AAaA,OAAO,EAAwC,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAIjG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAG7C,KAAK,KAAK,GAAG,GAAG,CAAA;AAEhB,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,kBAAkB,GAAG,GAAG,CA8C7F"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// CTE conflicts with the sibling UPDATE on the same row and silently yields
|
|
7
7
|
// zero rows from `before`, suppressing the audit insert.
|
|
8
8
|
import { sql } from '../../db/sql.js';
|
|
9
|
+
import { getTableColumns } from '../../query/index.js';
|
|
9
10
|
import { quoteIdentifier } from '../../db/identifiers.js';
|
|
10
11
|
import { camelToSnake } from '../../domain/naming.js';
|
|
11
12
|
import { buildTraceSafeProjection } from './projection.js';
|
|
@@ -19,11 +20,21 @@ export function compileUpdateAudit(db, state, ctx) {
|
|
|
19
20
|
// `.getSQL()` strips the auto-paren drizzle adds around SQLWrapper builders
|
|
20
21
|
// when they are templated — we add explicit parens at the CTE boundary so
|
|
21
22
|
// the WITH clause keeps a uniform shape across verbs.
|
|
23
|
+
const each = state.each;
|
|
22
24
|
let updateChain = db.update(state.table).set(set);
|
|
25
|
+
if (each !== undefined)
|
|
26
|
+
updateChain = updateChain.from(each.source);
|
|
23
27
|
if (state.where !== undefined)
|
|
24
28
|
updateChain = updateChain.where(state.where);
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
// An update for many keys also returns the index of the key each row matched, to count rows per key.
|
|
30
|
+
const updateInner = (each === undefined
|
|
31
|
+
? updateChain.returning()
|
|
32
|
+
: updateChain.returning({ ...getTableColumns(state.table), __i: each.ordinal.as('__i') })).getSQL();
|
|
33
|
+
// Over many keys a row can match several of them; it is snapshotted once, as the update changes it once.
|
|
34
|
+
let beforeChain = each === undefined
|
|
35
|
+
? db.select().from(state.table)
|
|
36
|
+
: db.selectDistinctOn(pk.map(k => state.table[k]), getTableColumns(state.table))
|
|
37
|
+
.from(state.table).crossJoin(each.source);
|
|
27
38
|
if (state.where !== undefined)
|
|
28
39
|
beforeChain = beforeChain.where(state.where);
|
|
29
40
|
const beforeInner = beforeChain.getSQL();
|
|
@@ -37,7 +48,7 @@ export function compileUpdateAudit(db, state, ctx) {
|
|
|
37
48
|
const after = buildTraceSafeProjection(state.table, 'updated') ?? sql `NULL::jsonb`;
|
|
38
49
|
const fromClause = sql.raw(`FROM updated JOIN before ON ${joinOn}`);
|
|
39
50
|
const auditSelect = buildAuditInserts(ctx, fromClause, buildEntityIdExpr(state.table, 'updated'), before, after);
|
|
40
|
-
const finalSelect = buildFinalSelect(state, 'updated');
|
|
51
|
+
const finalSelect = each === undefined ? buildFinalSelect(state, 'updated') : sql.raw('SELECT "__i" FROM updated');
|
|
41
52
|
return sql `
|
|
42
53
|
WITH before AS (${beforeInner}),
|
|
43
54
|
updated AS (${updateInner}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verb-update.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-update.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,0EAA0E;AAC1E,0EAA0E;AAC1E,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,yDAAyD;AAEzD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAA2B,MAAM,mBAAmB,CAAA;AACjG,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAOpD,MAAM,UAAU,kBAAkB,CAAC,EAAS,EAAE,KAAiB,EAAE,GAAuB;IACtF,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,EAAE,CAAA;IAC3B,4EAA4E;IAC5E,0EAA0E;IAC1E,sDAAsD;IACtD,IAAI,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"verb-update.js","sourceRoot":"","sources":["../../../../src/data/write/audit/verb-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PgTable } from '../query/pg-core/index.js';
|
|
2
|
+
import type { SQL } from '../db/types.js';
|
|
3
|
+
import type { WriteState } from './state.js';
|
|
4
|
+
/** The table's name as SQL: schema-qualified when it has a schema. */
|
|
5
|
+
export declare function qualifiedName(table: PgTable): string;
|
|
6
|
+
/**
|
|
7
|
+
* The state with the tenant column set on every row when the connection is tenant-scoped (a row naming another
|
|
8
|
+
* tenant throws, as `values()` does). Also runs the connection's insert policy, so a guard refuses a tenant table.
|
|
9
|
+
*/
|
|
10
|
+
export declare function scopeBatchRows(state: WriteState, db: unknown): WriteState;
|
|
11
|
+
/**
|
|
12
|
+
* When a batch is split: the library sends at most this many rows, and at most this many bytes of parameter
|
|
13
|
+
* text, per statement, several in order in one transaction. Measured on the test cluster, 139,000 rows of a
|
|
14
|
+
* uuid, a text, an int and a text[] were one statement of 19 MB of parameters in 2.4 s; the bounds sit well
|
|
15
|
+
* above that and well under Postgres's 1 GB cap on a single parameter. Mutable so tests can shrink them.
|
|
16
|
+
*/
|
|
17
|
+
export declare const batchLimits: {
|
|
18
|
+
rows: number;
|
|
19
|
+
bytes: number;
|
|
20
|
+
};
|
|
21
|
+
export interface BatchColumn {
|
|
22
|
+
readonly key: string;
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly type: string;
|
|
25
|
+
readonly cells: (string | null)[];
|
|
26
|
+
}
|
|
27
|
+
export declare function encode(state: WriteState): BatchColumn[];
|
|
28
|
+
/**
|
|
29
|
+
* The statements a batch is sent as: the whole list in one when it fits `batchLimits`, otherwise consecutive
|
|
30
|
+
* slices (each slice's rows, in input order) that each fit. Every slice carries its already-encoded columns.
|
|
31
|
+
*/
|
|
32
|
+
export declare function planBatch(state: WriteState): WriteState[];
|
|
33
|
+
/** Row i of the result is row i of `state.values`; the statement is `INSERT ... SELECT FROM unnest(...)` with the state's `ON CONFLICT` clause, no RETURNING. */
|
|
34
|
+
export declare function batchInsertSql(state: WriteState): SQL;
|
|
35
|
+
//# sourceMappingURL=batch-insert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-insert.d.ts","sourceRoot":"","sources":["../../../src/data/write/batch-insert.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAgB5C,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGpD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,GAAG,UAAU,CAiBzE;AAgBD;;;;;GAKG;AACH,eAAO,MAAM,WAAW;;;CAA8C,CAAA;AAEtE,MAAM,WAAW,WAAW;IAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;CAAE;AAEtI,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,EAAE,CAoCvD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,CAuBzD;AAED,iKAAiK;AACjK,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAuBrD"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// `pipe.insert(table).batch(rows)`: many rows as ONE statement, whatever the row count.
|
|
2
|
+
//
|
|
3
|
+
// INSERT INTO "t" ("a", "b") SELECT "batch"."a"::uuid, "batch"."b"::text[] FROM unnest($1::text[], $2::text[]) AS "batch"("a", "b")
|
|
4
|
+
//
|
|
5
|
+
// Each column travels as one text-array parameter holding the cells exactly as the column's own driver
|
|
6
|
+
// encoding (`mapToDriverValue`) would send them for a single-row insert, and is cast back to the column's SQL
|
|
7
|
+
// type in the SELECT. Two parameters per two columns, not one per cell, so the row count never reaches
|
|
8
|
+
// Postgres's parameter limit; and because the cast happens per cell, an array column (any dimension) needs no
|
|
9
|
+
// `unnest` of its own, which would flatten it. It is plain INSERT ... SELECT, so RLS insert policies, `ON CONFLICT`,
|
|
10
|
+
// `RETURNING` and the audit CTE all apply as they do to a `values()` insert (`COPY FROM` does none of these: see REFERENCE.md).
|
|
11
|
+
import { getTableColumns, is, SQL as SQLClass } from '../query/index.js';
|
|
12
|
+
import { getTableConfig } from '../query/pg-core/index.js';
|
|
13
|
+
import { sql } from '../db/sql.js';
|
|
14
|
+
import { arrayLiteral } from '../db/rows.js';
|
|
15
|
+
import { insertTenant } from '../../auth/tenant/scoped-db.js';
|
|
16
|
+
const SQL_TYPE = /^[A-Za-z_"][A-Za-z0-9_". ]*(\([0-9, ]+\))?(\[[0-9]*\])*$/;
|
|
17
|
+
const SERIAL_AS = { serial: 'integer', bigserial: 'bigint', smallserial: 'smallint' };
|
|
18
|
+
function fail(problem, fix) {
|
|
19
|
+
throw new Error(`[pipework] pipe.insert().batch(): ${problem}\n\n Fix: ${fix}\n`);
|
|
20
|
+
}
|
|
21
|
+
function quote(name) {
|
|
22
|
+
return `"${name.replace(/"/g, '""')}"`;
|
|
23
|
+
}
|
|
24
|
+
/** The table's name as SQL: schema-qualified when it has a schema. */
|
|
25
|
+
export function qualifiedName(table) {
|
|
26
|
+
const config = getTableConfig(table);
|
|
27
|
+
return config.schema === undefined ? quote(config.name) : `${quote(config.schema)}.${quote(config.name)}`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The state with the tenant column set on every row when the connection is tenant-scoped (a row naming another
|
|
31
|
+
* tenant throws, as `values()` does). Also runs the connection's insert policy, so a guard refuses a tenant table.
|
|
32
|
+
*/
|
|
33
|
+
export function scopeBatchRows(state, db) {
|
|
34
|
+
const tenant = insertTenant(db, state.table);
|
|
35
|
+
if (tenant === null || state.values === undefined)
|
|
36
|
+
return state;
|
|
37
|
+
const { columnKey, tenantId } = tenant;
|
|
38
|
+
const values = state.values.map(row => {
|
|
39
|
+
const existing = row[columnKey];
|
|
40
|
+
if (existing !== undefined && existing !== tenantId) {
|
|
41
|
+
throw new Error(`[pipework] Tenant-scoped insert: value has ${columnKey} "${String(existing)}" ` +
|
|
42
|
+
`but the current context tenant is "${tenantId}".\n\n` +
|
|
43
|
+
` Remove the explicit ${columnKey} from your insert values — it's set automatically.\n` +
|
|
44
|
+
' If you need cross-tenant writes, file an issue on the pipework repo.\n');
|
|
45
|
+
}
|
|
46
|
+
return { ...row, [columnKey]: tenantId };
|
|
47
|
+
});
|
|
48
|
+
return { ...state, values };
|
|
49
|
+
}
|
|
50
|
+
function cellText(column, key, index, value) {
|
|
51
|
+
if (value === null)
|
|
52
|
+
return null;
|
|
53
|
+
if (is(value, SQLClass)) {
|
|
54
|
+
fail(`row ${String(index)} sets "${key}" to a sql expression.`, 'a batch carries values only; use pipe.insert().values() for a row that needs an expression.');
|
|
55
|
+
}
|
|
56
|
+
const driver = column.mapToDriverValue(value);
|
|
57
|
+
if (driver === null || driver === undefined)
|
|
58
|
+
return null;
|
|
59
|
+
if (typeof driver === 'string')
|
|
60
|
+
return driver;
|
|
61
|
+
if (typeof driver === 'number' || typeof driver === 'bigint' || typeof driver === 'boolean')
|
|
62
|
+
return String(driver);
|
|
63
|
+
if (driver instanceof Date)
|
|
64
|
+
return driver.toISOString();
|
|
65
|
+
if (driver instanceof Uint8Array)
|
|
66
|
+
return `\\x${Buffer.from(driver).toString('hex')}`;
|
|
67
|
+
return JSON.stringify(driver);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* When a batch is split: the library sends at most this many rows, and at most this many bytes of parameter
|
|
71
|
+
* text, per statement, several in order in one transaction. Measured on the test cluster, 139,000 rows of a
|
|
72
|
+
* uuid, a text, an int and a text[] were one statement of 19 MB of parameters in 2.4 s; the bounds sit well
|
|
73
|
+
* above that and well under Postgres's 1 GB cap on a single parameter. Mutable so tests can shrink them.
|
|
74
|
+
*/
|
|
75
|
+
export const batchLimits = { rows: 250_000, bytes: 256 * 1024 * 1024 };
|
|
76
|
+
export function encode(state) {
|
|
77
|
+
const rows = state.values ?? [];
|
|
78
|
+
const columns = getTableColumns(state.table);
|
|
79
|
+
for (let i = 0; i < rows.length; i++) {
|
|
80
|
+
for (const key of Object.keys(rows[i])) {
|
|
81
|
+
if (columns[key] === undefined) {
|
|
82
|
+
fail(`row ${String(i)} has "${key}", which is not a field of "${state.table.$name}".`, `use the table's field keys: ${Object.keys(columns).join(', ')}.`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const out = [];
|
|
87
|
+
for (const [key, column] of Object.entries(columns)) {
|
|
88
|
+
if (column.shouldDisableInsert() === true)
|
|
89
|
+
continue;
|
|
90
|
+
const given = rows.map(row => row[key]);
|
|
91
|
+
const supplied = given.filter(v => v !== undefined).length;
|
|
92
|
+
// A JS-side default (`$defaultFn`, `$onUpdateFn`) fills an omitted cell as `values()` does.
|
|
93
|
+
const jsDefault = column.defaultFn ?? (column.default === undefined || column.default === null ? column.onUpdateFn : undefined);
|
|
94
|
+
if (supplied === 0 && jsDefault === undefined)
|
|
95
|
+
continue;
|
|
96
|
+
if (supplied > 0 && supplied < rows.length && jsDefault === undefined) {
|
|
97
|
+
const missing = given.findIndex(v => v === undefined);
|
|
98
|
+
fail(`row ${String(missing)} omits "${key}" while ${String(supplied)} of ${String(rows.length)} rows set it.`, `a batch is one statement, so every row names the same columns: pass null for NULL, a value for each row, or omit "${key}" from all of them (its column default applies).`);
|
|
99
|
+
}
|
|
100
|
+
const cells = given.map((v, i) => {
|
|
101
|
+
if (v !== undefined)
|
|
102
|
+
return cellText(column, key, i, v);
|
|
103
|
+
return cellText(column, key, i, jsDefault());
|
|
104
|
+
});
|
|
105
|
+
const raw = String(column.getSQLType());
|
|
106
|
+
const type = SERIAL_AS[raw] ?? raw;
|
|
107
|
+
if (!SQL_TYPE.test(type))
|
|
108
|
+
fail(`column "${key}" has the SQL type "${type}", which a batch cannot cast to.`, 'use pipe.insert().values() for this table.');
|
|
109
|
+
out.push({ key, name: String(column.name), type, cells });
|
|
110
|
+
}
|
|
111
|
+
if (out.length === 0)
|
|
112
|
+
fail('no row sets a column.', 'give at least one column a value in some row, or a column with a JS-side default.');
|
|
113
|
+
return out;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The statements a batch is sent as: the whole list in one when it fits `batchLimits`, otherwise consecutive
|
|
117
|
+
* slices (each slice's rows, in input order) that each fit. Every slice carries its already-encoded columns.
|
|
118
|
+
*/
|
|
119
|
+
export function planBatch(state) {
|
|
120
|
+
const rows = state.values ?? [];
|
|
121
|
+
const columns = encode(state);
|
|
122
|
+
const slices = [];
|
|
123
|
+
let from = 0;
|
|
124
|
+
let bytes = 0;
|
|
125
|
+
for (let i = 0; i < rows.length; i++) {
|
|
126
|
+
let rowBytes = 0;
|
|
127
|
+
for (const c of columns)
|
|
128
|
+
rowBytes += c.cells[i] === null ? 0 : Buffer.byteLength(c.cells[i]);
|
|
129
|
+
if (i > from && (i - from >= batchLimits.rows || bytes + rowBytes > batchLimits.bytes)) {
|
|
130
|
+
slices.push([from, i]);
|
|
131
|
+
from = i;
|
|
132
|
+
bytes = 0;
|
|
133
|
+
}
|
|
134
|
+
bytes += rowBytes;
|
|
135
|
+
}
|
|
136
|
+
slices.push([from, rows.length]);
|
|
137
|
+
if (slices.length === 1)
|
|
138
|
+
return [{ ...state, encoded: columns }];
|
|
139
|
+
return slices.map(([a, b]) => ({
|
|
140
|
+
...state,
|
|
141
|
+
values: rows.slice(a, b),
|
|
142
|
+
encoded: columns.map(c => ({ ...c, cells: c.cells.slice(a, b) })),
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
/** Row i of the result is row i of `state.values`; the statement is `INSERT ... SELECT FROM unnest(...)` with the state's `ON CONFLICT` clause, no RETURNING. */
|
|
146
|
+
export function batchInsertSql(state) {
|
|
147
|
+
const columns = state.encoded ?? encode(state);
|
|
148
|
+
const table = state.table;
|
|
149
|
+
const names = columns.map(c => quote(c.name));
|
|
150
|
+
const arrays = columns.map(c => sql `${sql.param(arrayLiteral(c.cells))}::text[]`);
|
|
151
|
+
const picked = columns.map(c => `"batch".${quote(c.name)}::${c.type}`);
|
|
152
|
+
let conflict = sql.raw('');
|
|
153
|
+
if (state.onConflict !== undefined) {
|
|
154
|
+
const target = state.onConflict.target;
|
|
155
|
+
if (target === undefined) {
|
|
156
|
+
conflict = sql ` ON CONFLICT DO NOTHING`;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
const cols = getTableColumns(table);
|
|
160
|
+
const list = target.map(k => {
|
|
161
|
+
if (cols[k] === undefined) {
|
|
162
|
+
throw new Error(`pipe.insert: onConflictDoNothing target "${k}" is not a field of "${state.table.$name}". Use a field key declared on the table.`);
|
|
163
|
+
}
|
|
164
|
+
return quote(String(cols[k].name));
|
|
165
|
+
});
|
|
166
|
+
conflict = sql ` ON CONFLICT (${sql.raw(list.join(', '))}) DO NOTHING`;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return sql `INSERT INTO ${sql.raw(qualifiedName(table))} (${sql.raw(names.join(', '))}) SELECT ${sql.raw(picked.join(', '))} FROM unnest(${sql.join(arrays, sql `, `)}) AS "batch"(${sql.raw(names.join(', '))})${conflict}`;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=batch-insert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-insert.js","sourceRoot":"","sources":["../../../src/data/write/batch-insert.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/data/write/execute.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/data/write/execute.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAgB5C,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAuDtE"}
|
|
@@ -22,8 +22,16 @@ import { decodeReturning } from './audit/decode-returning.js';
|
|
|
22
22
|
import { resolveActorId } from './audit/actor.js';
|
|
23
23
|
import { rowsPerStatement } from '../db/insert-split.js';
|
|
24
24
|
import { applyOnConflict, reportSkipped } from './conflict.js';
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
import { batchInsertSql, planBatch, scopeBatchRows } from './batch-insert.js';
|
|
26
|
+
import { buildFinalSelect } from './audit/final-select.js';
|
|
27
|
+
import { sql } from '../db/sql.js';
|
|
28
|
+
export async function executeWrite(input) {
|
|
29
|
+
const db = pipe(input.table.$options.database);
|
|
30
|
+
// A batch carries the tenant on its rows before the audit and vanilla paths read them.
|
|
31
|
+
const state = input.batch === true ? scopeBatchRows(input, db) : input;
|
|
32
|
+
if (state.batch === true && (state.values === undefined || state.values.length === 0)) {
|
|
33
|
+
return state.returning === undefined || state.returning === null ? undefined : [];
|
|
34
|
+
}
|
|
27
35
|
const flow = getContext();
|
|
28
36
|
if (flow !== undefined && flow.trace !== null) {
|
|
29
37
|
const stepCtx = flow.trace.buffer.currentStep();
|
|
@@ -46,6 +54,8 @@ export async function executeWrite(state) {
|
|
|
46
54
|
if (chunkValueSize !== null) {
|
|
47
55
|
return executeChunkedAuditWrite(state, auditCtx, chunkValueSize);
|
|
48
56
|
}
|
|
57
|
+
if (state.batch === true)
|
|
58
|
+
return executeBatchAudit(state, auditCtx);
|
|
49
59
|
const stmt = compileAuditWrite(db, state, auditCtx);
|
|
50
60
|
// The compiled CTE is already tenant-scoped at compile time (the user
|
|
51
61
|
// write inside the CTE was built against the scoped `pipe()` DB, so it
|
|
@@ -56,11 +66,15 @@ export async function executeWrite(state) {
|
|
|
56
66
|
const rows = await rawDb.execute(stmt);
|
|
57
67
|
for (const touch of selection.written)
|
|
58
68
|
stepCtx.markWrote(touch);
|
|
69
|
+
if (state.each !== undefined)
|
|
70
|
+
return tally(state.each.count, rows, '__i');
|
|
59
71
|
if (state.onConflict !== undefined)
|
|
60
72
|
reportSkipped(state, Array.isArray(rows) ? rows.length : 0);
|
|
61
73
|
return decodeReturning(state, rows);
|
|
62
74
|
}
|
|
63
75
|
}
|
|
76
|
+
if (state.batch === true)
|
|
77
|
+
return executeBatchInsert(state);
|
|
64
78
|
if ((state.verb === 'insert' || state.verb === 'upsert') && state.values !== undefined) {
|
|
65
79
|
const size = rowsPerStatement(state.table);
|
|
66
80
|
if (state.values.length > size)
|
|
@@ -85,6 +99,9 @@ function computeChunkValueSize(flow, state, touches, parameterSize) {
|
|
|
85
99
|
return null;
|
|
86
100
|
if (touches === 0)
|
|
87
101
|
return null;
|
|
102
|
+
// A batch is one statement by contract: its audit rows come from one INSERT ... SELECT, with no parameter per row.
|
|
103
|
+
if (state.batch === true)
|
|
104
|
+
return null;
|
|
88
105
|
const limit = flow.instance.config.trace.auditChunkSize;
|
|
89
106
|
const projectedAuditRows = state.values.length * touches;
|
|
90
107
|
// Floor by touches so the per-chunk audit row count never exceeds `limit`;
|
|
@@ -170,8 +187,78 @@ async function executeChunkedAuditWrite(state, ctx, chunkValueSize) {
|
|
|
170
187
|
reportSkipped(state, written);
|
|
171
188
|
return collectsRows ? decodeReturning(state, collected) : undefined;
|
|
172
189
|
}
|
|
190
|
+
/** Rows per input index of a keys rowset: how many table rows each key updated. */
|
|
191
|
+
function tally(count, rows, column) {
|
|
192
|
+
const counts = new Array(count).fill(0);
|
|
193
|
+
if (Array.isArray(rows))
|
|
194
|
+
for (const row of rows)
|
|
195
|
+
counts[Number(row[column])] += 1;
|
|
196
|
+
return counts;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Runs the statements of a batch plan in order. A batch over `batchLimits` is several statements, so they run in
|
|
200
|
+
* one transaction (a savepoint when nested): all of it lands or none, and each statement reads the one before.
|
|
201
|
+
*/
|
|
202
|
+
async function inBatches(state, one) {
|
|
203
|
+
const plan = planBatch(state);
|
|
204
|
+
if (plan.length === 1)
|
|
205
|
+
return one(plan[0]);
|
|
206
|
+
const out = [];
|
|
207
|
+
const run = async () => {
|
|
208
|
+
for (const chunk of plan)
|
|
209
|
+
for (const row of await one(chunk))
|
|
210
|
+
out.push(row);
|
|
211
|
+
};
|
|
212
|
+
const dbName = state.table.$options.database;
|
|
213
|
+
if (dbName === undefined)
|
|
214
|
+
await pipe.transaction(run);
|
|
215
|
+
else
|
|
216
|
+
await pipe.transaction(dbName, run);
|
|
217
|
+
return out;
|
|
218
|
+
}
|
|
219
|
+
/** `INSERT ... SELECT FROM unnest(...)`, one statement per plan slice; rows come back as `values()` returns them, in input order. */
|
|
220
|
+
async function executeBatchInsert(state) {
|
|
221
|
+
const dbName = state.table.$options.database;
|
|
222
|
+
const returns = state.returning !== undefined && state.returning !== null;
|
|
223
|
+
const rows = await inBatches(state, async (chunk) => {
|
|
224
|
+
const rawDb = pipeRaw(dbName);
|
|
225
|
+
const insertSql = batchInsertSql(chunk);
|
|
226
|
+
if (!returns && state.onConflict === undefined) {
|
|
227
|
+
await rawDb.execute(insertSql);
|
|
228
|
+
return [];
|
|
229
|
+
}
|
|
230
|
+
// Under onConflictDoNothing the rows written are the rows returned, so they are asked for even when the caller did not.
|
|
231
|
+
const out = await rawDb.execute(sql `WITH inserted AS (${insertSql} RETURNING *) ${buildFinalSelect(state, 'inserted')}`);
|
|
232
|
+
return Array.isArray(out) ? [...out] : [];
|
|
233
|
+
});
|
|
234
|
+
if (state.onConflict !== undefined)
|
|
235
|
+
reportSkipped(state, rows.length);
|
|
236
|
+
if (!returns)
|
|
237
|
+
return state.onConflict === undefined ? undefined : [];
|
|
238
|
+
return decodeReturning(state, rows);
|
|
239
|
+
}
|
|
240
|
+
/** The write-and-audit statement, one per plan slice, in one transaction when there are several; each slice's audit rows land with its rows. */
|
|
241
|
+
async function executeBatchAudit(state, ctx) {
|
|
242
|
+
const dbName = state.table.$options.database;
|
|
243
|
+
const rows = await inBatches(state, async (chunk) => {
|
|
244
|
+
const stmt = compileAuditWrite(pipe(dbName), chunk, ctx);
|
|
245
|
+
const out = await pipeRaw(dbName).execute(stmt);
|
|
246
|
+
return Array.isArray(out) ? [...out] : [];
|
|
247
|
+
});
|
|
248
|
+
for (const touch of ctx.written)
|
|
249
|
+
ctx.step.markWrote(touch);
|
|
250
|
+
if (state.onConflict !== undefined)
|
|
251
|
+
reportSkipped(state, rows.length);
|
|
252
|
+
return decodeReturning(state, rows);
|
|
253
|
+
}
|
|
173
254
|
async function executeUpdate(db, state) {
|
|
174
255
|
let q = db.update(state.table).set(state.set ?? {});
|
|
256
|
+
if (state.each !== undefined) {
|
|
257
|
+
q = q.from(state.each.source);
|
|
258
|
+
if (state.where !== undefined)
|
|
259
|
+
q = q.where(state.where);
|
|
260
|
+
return tally(state.each.count, await q.returning({ i: state.each.ordinal }), 'i');
|
|
261
|
+
}
|
|
175
262
|
if (state.where !== undefined)
|
|
176
263
|
q = q.where(state.where);
|
|
177
264
|
return runWithReturning(q, state.returning);
|