orez 0.4.13 → 0.4.15
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.
|
@@ -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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"}
|
|
@@ -1661,6 +1661,45 @@ function rowNumberTarget(partitionClause, orderClause) {
|
|
|
1661
1661
|
},
|
|
1662
1662
|
};
|
|
1663
1663
|
}
|
|
1664
|
+
// maps an explicit select-list alias to the expression that defines it, but
|
|
1665
|
+
// only when the alias is NOT just that same base column under its own name
|
|
1666
|
+
// (e.g. `p.id AS id` stays a real column for sqlite to resolve). computed
|
|
1667
|
+
// targets (`CASE … END AS match_rank`) and renames (`u.name AS authorName`)
|
|
1668
|
+
// produce a name that exists ONLY as an output column.
|
|
1669
|
+
function selectListAliasExpressions(targetList) {
|
|
1670
|
+
const aliases = new Map();
|
|
1671
|
+
for (const targetNode of targetList) {
|
|
1672
|
+
const target = targetNode?.ResTarget;
|
|
1673
|
+
const name = target?.name;
|
|
1674
|
+
if (!name || target.val == null)
|
|
1675
|
+
continue;
|
|
1676
|
+
if (columnRefTailName(target.val) === name)
|
|
1677
|
+
continue;
|
|
1678
|
+
aliases.set(name, target.val);
|
|
1679
|
+
}
|
|
1680
|
+
return aliases;
|
|
1681
|
+
}
|
|
1682
|
+
// postgres lets DISTINCT ON / ORDER BY reference select-list aliases; sqlite
|
|
1683
|
+
// cannot resolve a select-list alias inside that same select's window-function
|
|
1684
|
+
// ORDER BY/PARTITION BY (the alias isn't a real column there). so before the
|
|
1685
|
+
// window clauses move into the inner select, replace any single-field ColumnRef
|
|
1686
|
+
// that names an alias with the alias's underlying expression.
|
|
1687
|
+
function substituteSelectAliasesInClause(node, aliases) {
|
|
1688
|
+
if (!node || typeof node !== 'object')
|
|
1689
|
+
return node;
|
|
1690
|
+
if (Array.isArray(node))
|
|
1691
|
+
return node.map((item) => substituteSelectAliasesInClause(item, aliases));
|
|
1692
|
+
const fields = node.ColumnRef?.fields;
|
|
1693
|
+
if (Array.isArray(fields) && fields.length === 1) {
|
|
1694
|
+
const name = stringValue(fields[0]);
|
|
1695
|
+
if (name && aliases.has(name))
|
|
1696
|
+
return cloneAst(aliases.get(name));
|
|
1697
|
+
}
|
|
1698
|
+
for (const key of Object.keys(node)) {
|
|
1699
|
+
node[key] = substituteSelectAliasesInClause(node[key], aliases);
|
|
1700
|
+
}
|
|
1701
|
+
return node;
|
|
1702
|
+
}
|
|
1664
1703
|
function rewriteDistinctOnSelect(stmt) {
|
|
1665
1704
|
if (!isDistinctOnClause(stmt?.distinctClause))
|
|
1666
1705
|
return stmt;
|
|
@@ -1670,10 +1709,11 @@ function rewriteDistinctOnSelect(stmt) {
|
|
|
1670
1709
|
innerTargets.forEach((targetNode, index) => {
|
|
1671
1710
|
targetNode.ResTarget.name ??= outputNames[index];
|
|
1672
1711
|
});
|
|
1673
|
-
const
|
|
1674
|
-
const
|
|
1712
|
+
const aliasExpressions = selectListAliasExpressions(innerTargets);
|
|
1713
|
+
const partitionClause = substituteSelectAliasesInClause(cloneAst(stmt.distinctClause), aliasExpressions);
|
|
1714
|
+
const orderClause = substituteSelectAliasesInClause(stmt.sortClause
|
|
1675
1715
|
? cloneAst(stmt.sortClause)
|
|
1676
|
-
: partitionClause.map((node) => sortByDefault(cloneAst(node)));
|
|
1716
|
+
: partitionClause.map((node) => sortByDefault(cloneAst(node))), aliasExpressions);
|
|
1677
1717
|
const inner = {
|
|
1678
1718
|
...cloneAst(stmt),
|
|
1679
1719
|
distinctClause: undefined,
|
|
@@ -1927,6 +1967,20 @@ function rewriteNode(value, context) {
|
|
|
1927
1967
|
return currentTimestampNode();
|
|
1928
1968
|
if (name === 'nextval')
|
|
1929
1969
|
return intConst(1);
|
|
1970
|
+
if (name === '_drop_zero_slot' || name === 'pg_drop_replication_slot') {
|
|
1971
|
+
// DO SQLite can't host orez's `_orez._drop_zero_slot` plpgsql stub (no
|
|
1972
|
+
// schema-qualified functions, no CREATE FUNCTION), so a call left intact
|
|
1973
|
+
// makes sqlite throw `near "(": syntax error`. zero-cache AWAITS this
|
|
1974
|
+
// orphan-slot cleanup on the initial-sync path (createReplicaAndSlot), so
|
|
1975
|
+
// the throw wedges the embed before it can signal `ready` (120s timeout →
|
|
1976
|
+
// every /sync dies). neutralize the call to its slot-name arg so the
|
|
1977
|
+
// cleanup SELECT parses; leftover orphan slot rows are harmless (a fresh
|
|
1978
|
+
// active slot is created separately; the pglite/node paths still run the
|
|
1979
|
+
// real DELETE the schema-qualified stub performs). this mirrors the
|
|
1980
|
+
// now/nextval neutralization above. see soot incident 2026-06-14.
|
|
1981
|
+
const slotArg = value.FuncCall.args?.[0];
|
|
1982
|
+
return slotArg ? rewriteNode(slotArg, context) : intConst(0);
|
|
1983
|
+
}
|
|
1930
1984
|
}
|
|
1931
1985
|
if (value.A_Const && Object.hasOwn(value.A_Const, 'boolval')) {
|
|
1932
1986
|
return intConst(value.A_Const.boolval?.boolval ? 1 : 0);
|