orez 0.4.41 → 0.4.43
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/dist/pg-proxy-do-backend.d.ts.map +1 -1
- package/dist/pg-proxy-do-backend.js +12 -22
- package/dist/pg-proxy-do-backend.js.map +1 -1
- package/dist/pg-sqlite-compiler/passes/dml-cte.d.ts +22 -0
- package/dist/pg-sqlite-compiler/passes/dml-cte.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/passes/dml-cte.js +161 -0
- package/dist/pg-sqlite-compiler/passes/dml-cte.js.map +1 -0
- package/dist/pg-sqlite-compiler/passes/index.d.ts.map +1 -1
- package/dist/pg-sqlite-compiler/passes/index.js +3 -0
- package/dist/pg-sqlite-compiler/passes/index.js.map +1 -1
- package/dist/replication/handler.d.ts.map +1 -1
- package/dist/replication/handler.js +36 -9
- package/dist/replication/handler.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-proxy-do-backend.d.ts","sourceRoot":"","sources":["../src/pg-proxy-do-backend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pg-proxy-do-backend.d.ts","sourceRoot":"","sources":["../src/pg-proxy-do-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { TX_MANIFEST_DDL, TX_MANIFEST_TABLE } from './cf-do/tx-journal.js';
|
|
|
4
4
|
import { RETURNING_INTERNAL_PREFIX } from './do-sql-tracking.js';
|
|
5
5
|
import { expandDelete, FkCascadeRegistry, recordAlterTableForeignKeys, recordCreateTableForeignKeys, } from './fk-cascade.js';
|
|
6
6
|
import { Mutex } from './mutex.js';
|
|
7
|
+
import { foldCountMarkerResult, transformCountedDeleteCte, } from './pg-sqlite-compiler/passes/dml-cte.js';
|
|
7
8
|
import { signalReplicationChange } from './replication/handler.js';
|
|
8
9
|
import { markSQLiteKeywordIdentifiers, restoreSQLiteKeywordIdentifierMarkers, } from './sqlite-keyword-identifiers.js';
|
|
9
10
|
/**
|
|
@@ -969,20 +970,6 @@ function flattenSQLIdentifier(value) {
|
|
|
969
970
|
return quoteIdentifier(flattenSchemaName(parts[0], parts[1]));
|
|
970
971
|
return quoteIdentifier(parts[0] ?? value);
|
|
971
972
|
}
|
|
972
|
-
function deleteReturningCountCTE(sql) {
|
|
973
|
-
const match = sql.match(/^\s*WITH\s+("[^"]+"|[A-Za-z_][\w]*)\s+AS\s*\(\s*DELETE\s+FROM\s+((?:"[^"]+"|[A-Za-z_][\w/]*)(?:\s*\.\s*(?:"[^"]+"|[A-Za-z_][\w/]*))?)\s+WHERE\s+([\s\S]*?)\s+RETURNING\s+[\s\S]*?\)\s*SELECT\s+COUNT\s*\(\s*\*\s*\)\s*(?:AS\s+("[^"]+"|[A-Za-z_][\w]*))?\s+FROM\s+("[^"]+"|[A-Za-z_][\w]*)\s*;?\s*$/i);
|
|
974
|
-
if (!match)
|
|
975
|
-
return null;
|
|
976
|
-
if (unquoteIdentifier(match[1]) !== unquoteIdentifier(match[5]))
|
|
977
|
-
return null;
|
|
978
|
-
const table = flattenSQLIdentifier(match[2]);
|
|
979
|
-
const where = match[3].trim();
|
|
980
|
-
const countColumn = match[4] ? unquoteIdentifier(match[4]) : 'count';
|
|
981
|
-
return {
|
|
982
|
-
sql: `DELETE FROM ${table} WHERE ${where} RETURNING 1 AS ${quoteIdentifier('__orez_deleted')}`,
|
|
983
|
-
countColumn,
|
|
984
|
-
};
|
|
985
|
-
}
|
|
986
973
|
function publicationTableRefForRangeVar(rangeVar) {
|
|
987
974
|
if (!rangeVar?.relname)
|
|
988
975
|
return null;
|
|
@@ -3404,6 +3391,10 @@ function dropTriggerStatements(node) {
|
|
|
3404
3391
|
}
|
|
3405
3392
|
function rewriteParsedStatement(version, rawStmt, context) {
|
|
3406
3393
|
const stmt = rawStmt.stmt;
|
|
3394
|
+
// counted-delete CTEs (zero's changeLog purge) restructure into a plain
|
|
3395
|
+
// DELETE before dispatch, so flattening/tracking/deparse treat them like
|
|
3396
|
+
// any other delete; doExecResult folds the marker rows back into a count.
|
|
3397
|
+
transformCountedDeleteCte(stmt);
|
|
3407
3398
|
const nodeType = statementNodeType(stmt);
|
|
3408
3399
|
const node = stmt[nodeType];
|
|
3409
3400
|
if (nodeType === 'CreateFunctionStmt') {
|
|
@@ -5916,8 +5907,7 @@ export class DoBackend {
|
|
|
5916
5907
|
async doExecResult(sql, params, track) {
|
|
5917
5908
|
if (!sql.trim())
|
|
5918
5909
|
return { rows: [], columns: [] };
|
|
5919
|
-
const
|
|
5920
|
-
const execSQL = deleteCountCTE?.sql ?? sql;
|
|
5910
|
+
const execSQL = sql;
|
|
5921
5911
|
let lastErr;
|
|
5922
5912
|
for (let attempt = 0; attempt < 2; attempt++) {
|
|
5923
5913
|
try {
|
|
@@ -5933,12 +5923,12 @@ export class DoBackend {
|
|
|
5933
5923
|
: rows.length > 0
|
|
5934
5924
|
? Object.keys(rows[0])
|
|
5935
5925
|
: [];
|
|
5936
|
-
|
|
5937
|
-
|
|
5938
|
-
|
|
5939
|
-
|
|
5940
|
-
|
|
5941
|
-
};
|
|
5926
|
+
// counted-delete CTEs (zero's changeLog purge) rewrite to a DELETE
|
|
5927
|
+
// whose RETURNING alias is a self-describing count marker; fold the
|
|
5928
|
+
// marker rows back into the original single-count-row shape.
|
|
5929
|
+
const counted = track ? null : foldCountMarkerResult(rows.length, execSQL);
|
|
5930
|
+
if (counted) {
|
|
5931
|
+
return { ...counted, affectedRows: rows.length };
|
|
5942
5932
|
}
|
|
5943
5933
|
if (track)
|
|
5944
5934
|
this.signalTrackedWrite();
|