pg-to-sqlite 0.4.73 → 0.5.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/dist/pg-sqlite-compiler/index.d.ts.map +1 -1
- package/dist/pg-sqlite-compiler/index.js +9 -1
- package/dist/pg-sqlite-compiler/index.js.map +1 -1
- package/dist/pg-sqlite-compiler/passes/datetime.d.ts +2 -0
- package/dist/pg-sqlite-compiler/passes/datetime.d.ts.map +1 -1
- package/dist/pg-sqlite-compiler/passes/datetime.js +20 -18
- package/dist/pg-sqlite-compiler/passes/datetime.js.map +1 -1
- package/dist/pg-sqlite-compiler/passes/index.d.ts.map +1 -1
- package/dist/pg-sqlite-compiler/passes/index.js +4 -0
- package/dist/pg-sqlite-compiler/passes/index.js.map +1 -1
- package/dist/pg-sqlite-compiler/passes/row-json.d.ts +3 -0
- package/dist/pg-sqlite-compiler/passes/row-json.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/passes/row-json.js +230 -0
- package/dist/pg-sqlite-compiler/passes/row-json.js.map +1 -0
- package/dist/pg-sqlite-compiler/passes/schema.d.ts.map +1 -1
- package/dist/pg-sqlite-compiler/passes/schema.js +16 -1
- package/dist/pg-sqlite-compiler/passes/schema.js.map +1 -1
- package/dist/pg-sqlite-compiler/passes/string-functions.d.ts +11 -0
- package/dist/pg-sqlite-compiler/passes/string-functions.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/passes/string-functions.js +37 -0
- package/dist/pg-sqlite-compiler/passes/string-functions.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pg-sqlite-compiler/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAc,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pg-sqlite-compiler/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAc,MAAM,YAAY,CAAA;AA4B3E,qBAAa,YAAa,SAAQ,KAAK;IAEnC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM;gBADX,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,EACnC,GAAG,EAAE,MAAM;CAKvB;AAYD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,aAAa,CAqC/E;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,GAAE,cAAmB,GACxB,aAAa,EAAE,CAEjB;AAED,YAAY,EACV,cAAc,EACd,aAAa,EACb,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAA"}
|
|
@@ -24,6 +24,14 @@ function stripTrailingSemicolon(s) {
|
|
|
24
24
|
i--;
|
|
25
25
|
return s.slice(0, i);
|
|
26
26
|
}
|
|
27
|
+
function normalizeEscapeStringLiterals(sql) {
|
|
28
|
+
// pgsql-deparser prefixes any string containing a backslash with PostgreSQL's
|
|
29
|
+
// E syntax and doubles each backslash. SQLite strings keep backslashes
|
|
30
|
+
// literally and reject the E prefix, so restore the AST value before emit.
|
|
31
|
+
return sql.replace(/\bE'((?:''|[^'])*)'/g, (_literal, body) => {
|
|
32
|
+
return `'${body.replaceAll('\\\\', '\\')}'`;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
27
35
|
export class CompileError extends Error {
|
|
28
36
|
warnings;
|
|
29
37
|
sql;
|
|
@@ -71,7 +79,7 @@ export function compile(pgSql, opts = {}) {
|
|
|
71
79
|
}
|
|
72
80
|
throwIfStrict(opts, warnings, trimmed);
|
|
73
81
|
const quotedByMarker = markSQLiteKeywordIdentifiers(stmts);
|
|
74
|
-
const emitted = restoreSQLiteKeywordIdentifierMarkers(deparseSync({ version: parsed.version ?? version, stmts }), quotedByMarker);
|
|
82
|
+
const emitted = normalizeEscapeStringLiterals(restoreSQLiteKeywordIdentifierMarkers(deparseSync({ version: parsed.version ?? version, stmts }), quotedByMarker));
|
|
75
83
|
const sql = stripTrailingSemicolon(emitted.trim());
|
|
76
84
|
throwIfStrict(opts, warnings, sql);
|
|
77
85
|
return { sql, warnings };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pg-sqlite-compiler/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pg-sqlite-compiler/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,5 +17,7 @@
|
|
|
17
17
|
* extend this pass in follow-ups. v1 covers the high-frequency cases.
|
|
18
18
|
*/
|
|
19
19
|
import type { Pass } from '../types.js';
|
|
20
|
+
/** Return the SQLite-compatible value node for one PG datetime call. */
|
|
21
|
+
export declare function rewriteDatetimeFunctionCall(node: any): any | undefined;
|
|
20
22
|
export declare const datetimePass: Pass;
|
|
21
23
|
//# sourceMappingURL=datetime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/datetime.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAuBvC,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/datetime.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAuBvC,wEAAwE;AACxE,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,CAYtE;AAED,eAAO,MAAM,YAAY,EAAE,IAe1B,CAAA"}
|
|
@@ -17,6 +17,23 @@ function svfWrapper(op) {
|
|
|
17
17
|
SQLValueFunction: { op, typmod: -1, location: 0 },
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
+
/** Return the SQLite-compatible value node for one PG datetime call. */
|
|
21
|
+
export function rewriteDatetimeFunctionCall(node) {
|
|
22
|
+
const name = lowerFuncName(node?.funcname);
|
|
23
|
+
if (!name)
|
|
24
|
+
return undefined;
|
|
25
|
+
const argless = !node.args || (Array.isArray(node.args) && node.args.length === 0);
|
|
26
|
+
if (!argless)
|
|
27
|
+
return undefined;
|
|
28
|
+
if (name === 'now' || name === 'current_timestamp' || name === 'clock_timestamp') {
|
|
29
|
+
return svfWrapper('SVFOP_CURRENT_TIMESTAMP');
|
|
30
|
+
}
|
|
31
|
+
if (name === 'current_date')
|
|
32
|
+
return svfWrapper('SVFOP_CURRENT_DATE');
|
|
33
|
+
if (name === 'current_time')
|
|
34
|
+
return svfWrapper('SVFOP_CURRENT_TIME');
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
20
37
|
export const datetimePass = {
|
|
21
38
|
name: 'datetime',
|
|
22
39
|
run(rawStmt, _ctx) {
|
|
@@ -24,28 +41,13 @@ export const datetimePass = {
|
|
|
24
41
|
FuncCall: (node, parent, key) => {
|
|
25
42
|
if (parent == null)
|
|
26
43
|
return; // can't replace a root-positioned FuncCall
|
|
27
|
-
const name = lowerFuncName(node.funcname);
|
|
28
|
-
if (!name)
|
|
29
|
-
return;
|
|
30
|
-
const argless = !node.args || (Array.isArray(node.args) && node.args.length === 0);
|
|
31
|
-
if (!argless)
|
|
32
|
-
return;
|
|
33
44
|
// Map PG datetime function calls → SQL bareword time keywords. The PG
|
|
34
45
|
// AST distinguishes function-form (`now()`) from keyword-form
|
|
35
46
|
// (`CURRENT_TIMESTAMP`) at the parse level; SQLite only accepts the
|
|
36
47
|
// keyword form in DEFAULT clauses and uniformly elsewhere.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
if (name === 'current_date') {
|
|
42
|
-
parent[key] = svfWrapper('SVFOP_CURRENT_DATE');
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
if (name === 'current_time') {
|
|
46
|
-
parent[key] = svfWrapper('SVFOP_CURRENT_TIME');
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
48
|
+
const rewritten = rewriteDatetimeFunctionCall(node);
|
|
49
|
+
if (rewritten)
|
|
50
|
+
parent[key] = rewritten;
|
|
49
51
|
},
|
|
50
52
|
});
|
|
51
53
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/datetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAsBxC,SAAS,aAAa,CAAC,QAA2B;IAChD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,MAAM,GAAG,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,CAAA;IACnD,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAChE,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,EAAU;IAG5B,OAAO;QACL,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;KAClD,CAAA;AACH,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/datetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAsBxC,SAAS,aAAa,CAAC,QAA2B;IAChD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,MAAM,GAAG,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,CAAA;IACnD,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAChE,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,EAAU;IAG5B,OAAO;QACL,gBAAgB,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;KAClD,CAAA;AACH,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,2BAA2B,CAAC,IAAS;IACnD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3B,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;IAClF,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACjF,OAAO,UAAU,CAAC,yBAAyB,CAAC,CAAA;IAC9C,CAAC;IACD,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAA;IACpE,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAA;IACpE,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,IAAI,EAAE,UAAU;IAChB,GAAG,CAAC,OAAO,EAAE,IAAI;QACf,OAAO,CAAC,OAAO,EAAE;YACf,QAAQ,EAAE,CAAC,IAAS,EAAE,MAAW,EAAE,GAAoB,EAAE,EAAE;gBACzD,IAAI,MAAM,IAAI,IAAI;oBAAE,OAAM,CAAC,2CAA2C;gBACtE,sEAAsE;gBACtE,8DAA8D;gBAC9D,oEAAoE;gBACpE,2DAA2D;gBAC3D,MAAM,SAAS,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAA;gBACnD,IAAI,SAAS;oBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;YACxC,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/index.ts"],"names":[],"mappings":"AASA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEpD,eAAO,MAAM,cAAc,EAAE,IAAI,EAehC,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CAc9D"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { catalogPass } from './catalog.js';
|
|
2
2
|
import { datetimePass } from './datetime.js';
|
|
3
3
|
import { dmlCtePass } from './dml-cte.js';
|
|
4
|
+
import { rowJsonPass } from './row-json.js';
|
|
4
5
|
import { schemaPass } from './schema.js';
|
|
6
|
+
import { stringFunctionsPass } from './string-functions.js';
|
|
5
7
|
import { typesPass } from './types.js';
|
|
6
8
|
import { unsupportedPass } from './unsupported.js';
|
|
7
9
|
export const DEFAULT_PASSES = [
|
|
@@ -9,6 +11,8 @@ export const DEFAULT_PASSES = [
|
|
|
9
11
|
dmlCtePass,
|
|
10
12
|
typesPass,
|
|
11
13
|
datetimePass,
|
|
14
|
+
stringFunctionsPass,
|
|
15
|
+
rowJsonPass,
|
|
12
16
|
catalogPass,
|
|
13
17
|
schemaPass,
|
|
14
18
|
unsupportedPass,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAalD,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,0EAA0E;IAC1E,UAAU;IACV,SAAS;IACT,YAAY;IACZ,WAAW;IACX,UAAU;IACV,eAAe;IACf,UAAU;IACV,cAAc;IACd,eAAe;IACf,cAAc;IACd,gBAAgB;CACjB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,OAAY,EAAE,GAAgB;IACtD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,CAAA;IACrC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAM;IAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,cAAc,CAAA;IAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACrB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,QAAQ,IAAI,CAAC,IAAI,WAAW,GAAG,CAAC,OAAO,EAAE;aACnD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAalD,MAAM,CAAC,MAAM,cAAc,GAAW;IACpC,0EAA0E;IAC1E,UAAU;IACV,SAAS;IACT,YAAY;IACZ,mBAAmB;IACnB,WAAW;IACX,WAAW;IACX,UAAU;IACV,eAAe;IACf,UAAU;IACV,cAAc;IACd,eAAe;IACf,cAAc;IACd,gBAAgB;CACjB,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,OAAY,EAAE,GAAgB;IACtD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,OAAO,CAAA;IACrC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAM;IAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,cAAc,CAAA;IAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACrB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAChB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,QAAQ,IAAI,CAAC,IAAI,WAAW,GAAG,CAAC,OAAO,EAAE;aACnD,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-json.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/row-json.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,aAAa,CAAA;AA+MpD,eAAO,MAAM,WAAW,EAAE,IA+CzB,CAAA"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { walkAst } from './ast-utils.js';
|
|
2
|
+
function stringValue(node) {
|
|
3
|
+
return node?.String?.sval ?? node?.String?.str ?? null;
|
|
4
|
+
}
|
|
5
|
+
function functionName(func) {
|
|
6
|
+
const parts = func?.funcname;
|
|
7
|
+
if (!Array.isArray(parts) || parts.length === 0)
|
|
8
|
+
return null;
|
|
9
|
+
return stringValue(parts[parts.length - 1])?.toLowerCase() ?? null;
|
|
10
|
+
}
|
|
11
|
+
/** last name of a ColumnRef (e.g. `s.id` → `id`), or null for `*` / non-columns. */
|
|
12
|
+
function columnName(value) {
|
|
13
|
+
const fields = value?.ColumnRef?.fields;
|
|
14
|
+
if (!Array.isArray(fields) || fields.length === 0)
|
|
15
|
+
return null;
|
|
16
|
+
return stringValue(fields[fields.length - 1]);
|
|
17
|
+
}
|
|
18
|
+
/** true when the ColumnRef ends in `*` (bare `*` or qualified `t.*`). */
|
|
19
|
+
function isStarColumnRef(value) {
|
|
20
|
+
const fields = value?.ColumnRef?.fields;
|
|
21
|
+
if (!Array.isArray(fields) || fields.length === 0)
|
|
22
|
+
return false;
|
|
23
|
+
return fields[fields.length - 1]?.A_Star !== undefined;
|
|
24
|
+
}
|
|
25
|
+
/** qualifier of a `t.*` star (the `t`), or null for a bare `*`. */
|
|
26
|
+
function starQualifier(value) {
|
|
27
|
+
const fields = value?.ColumnRef?.fields;
|
|
28
|
+
if (!Array.isArray(fields) || fields.length < 2)
|
|
29
|
+
return null;
|
|
30
|
+
return stringValue(fields[0]);
|
|
31
|
+
}
|
|
32
|
+
/** gather every RangeVar reachable through a FROM clause, descending JoinExprs. */
|
|
33
|
+
function collectRangeVars(node, out) {
|
|
34
|
+
if (!node || typeof node !== 'object')
|
|
35
|
+
return;
|
|
36
|
+
if (Array.isArray(node)) {
|
|
37
|
+
for (const child of node)
|
|
38
|
+
collectRangeVars(child, out);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (node.RangeVar) {
|
|
42
|
+
out.push(node.RangeVar);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (node.JoinExpr) {
|
|
46
|
+
collectRangeVars(node.JoinExpr.larg, out);
|
|
47
|
+
collectRangeVars(node.JoinExpr.rarg, out);
|
|
48
|
+
}
|
|
49
|
+
// RangeSubselect etc. expose no schema-resolvable columns, so the caller
|
|
50
|
+
// declines when a star can't be expanded from a real table.
|
|
51
|
+
}
|
|
52
|
+
function stringNode(value) {
|
|
53
|
+
return { A_Const: { sval: { sval: value }, location: -1 } };
|
|
54
|
+
}
|
|
55
|
+
function columnNode(alias, column) {
|
|
56
|
+
return {
|
|
57
|
+
ColumnRef: {
|
|
58
|
+
fields: [{ String: { sval: alias } }, { String: { sval: column } }],
|
|
59
|
+
location: -1,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function decline(ctx, message) {
|
|
64
|
+
ctx.warnings.push({ kind: 'row-json-unsupported', message, near: 'row_to_json' });
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Expand a `*` / `t.*` star into the real column names of its source table,
|
|
69
|
+
* using the authoritative schema. Returns null (already warned) when the shape
|
|
70
|
+
* can't be proven, and never invents column names.
|
|
71
|
+
*/
|
|
72
|
+
function expandStar(fromClause, qualifier, ctx) {
|
|
73
|
+
let rv;
|
|
74
|
+
if (qualifier == null) {
|
|
75
|
+
// a bare `*` covers EVERY source in the FROM clause, so it is only
|
|
76
|
+
// resolvable when that clause is exactly one base table. A second table, a
|
|
77
|
+
// sub-select, a function, or a join contributes columns a single table's
|
|
78
|
+
// shape can't account for, and silently expanding just the one table would
|
|
79
|
+
// drop the rest. Decline instead of guessing.
|
|
80
|
+
rv =
|
|
81
|
+
Array.isArray(fromClause) && fromClause.length === 1
|
|
82
|
+
? fromClause[0]?.RangeVar
|
|
83
|
+
: undefined;
|
|
84
|
+
if (!rv) {
|
|
85
|
+
return decline(ctx, 'row_to_json over SELECT * needs the from clause to be a single known table');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// a qualified `t.*` names exactly one table, so it stays resolvable even
|
|
90
|
+
// amid other FROM sources — find that table wherever it sits.
|
|
91
|
+
const rangeVars = [];
|
|
92
|
+
collectRangeVars(fromClause, rangeVars);
|
|
93
|
+
rv = rangeVars.find((v) => (v.alias?.aliasname ?? v.relname) === qualifier);
|
|
94
|
+
if (!rv) {
|
|
95
|
+
return decline(ctx, `row_to_json star qualifier ${qualifier} matches no table`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const columns = ctx.schema.getTableColumns(rv.schemaname ?? 'public', rv.relname);
|
|
99
|
+
if (!columns || columns.length === 0) {
|
|
100
|
+
return decline(ctx, `row_to_json over ${rv.relname}.* needs schema info that is unavailable`);
|
|
101
|
+
}
|
|
102
|
+
return [...columns];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Resolve the output column names a subquery produces, so row_to_json can be
|
|
106
|
+
* rewritten to json_object() referencing real columns. Returns null (already
|
|
107
|
+
* warned) when the shape can't be proven. Any synthetic aliases it needs are
|
|
108
|
+
* applied to the subquery targets only on success, so a declined rewrite leaves
|
|
109
|
+
* the AST untouched.
|
|
110
|
+
*/
|
|
111
|
+
function resolveShape(subselect, ctx) {
|
|
112
|
+
const sub = subselect?.subquery?.SelectStmt;
|
|
113
|
+
const targets = sub?.targetList;
|
|
114
|
+
if (!Array.isArray(targets) || targets.length === 0) {
|
|
115
|
+
return decline(ctx, 'row_to_json subquery has no resolvable target list');
|
|
116
|
+
}
|
|
117
|
+
const resolvedTargets = [];
|
|
118
|
+
for (let i = 0; i < targets.length; i++) {
|
|
119
|
+
const target = targets[i]?.ResTarget;
|
|
120
|
+
if (!target)
|
|
121
|
+
return decline(ctx, 'row_to_json subquery has an unrecognized target');
|
|
122
|
+
// an explicit alias is already the real output column name
|
|
123
|
+
if (target.name) {
|
|
124
|
+
resolvedTargets.push({ target, columns: [target.name], needsAlias: false });
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const val = target.val;
|
|
128
|
+
// `*` / `t.*`: expand from the authoritative table shape or decline
|
|
129
|
+
if (isStarColumnRef(val)) {
|
|
130
|
+
const expanded = expandStar(sub.fromClause, starQualifier(val), ctx);
|
|
131
|
+
if (!expanded)
|
|
132
|
+
return null;
|
|
133
|
+
resolvedTargets.push({ target, columns: expanded, needsAlias: false });
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
// a plain column reference already names its output column (`s.id` → `id`)
|
|
137
|
+
const named = columnName(val);
|
|
138
|
+
if (named) {
|
|
139
|
+
resolvedTargets.push({ target, columns: [named], needsAlias: false });
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
resolvedTargets.push({ target, columns: [], needsAlias: true });
|
|
143
|
+
}
|
|
144
|
+
// The rewrite addresses each subquery column as `alias.<name>`, so the real
|
|
145
|
+
// (non-generated) output names must be unique or that reference is ambiguous:
|
|
146
|
+
// duplicate columns (a.id, b.id), duplicate explicit aliases, and a star that
|
|
147
|
+
// re-expands an explicitly-listed column all make two outputs share a name,
|
|
148
|
+
// and SQLite silently resolves the reference to just one, losing the other.
|
|
149
|
+
// SQLite matches column names case-insensitively, so compare case-folded.
|
|
150
|
+
// Decline before mutating any target so a declined rewrite leaves the AST
|
|
151
|
+
// untouched.
|
|
152
|
+
const usedNames = new Set();
|
|
153
|
+
for (const resolved of resolvedTargets) {
|
|
154
|
+
if (resolved.needsAlias)
|
|
155
|
+
continue;
|
|
156
|
+
for (const column of resolved.columns) {
|
|
157
|
+
const key = column.toLowerCase();
|
|
158
|
+
if (usedNames.has(key)) {
|
|
159
|
+
return decline(ctx, `row_to_json subquery has duplicate output column ${column}; cannot address it unambiguously`);
|
|
160
|
+
}
|
|
161
|
+
usedNames.add(key);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
for (let i = 0; i < resolvedTargets.length; i++) {
|
|
165
|
+
const resolved = resolvedTargets[i];
|
|
166
|
+
if (!resolved.needsAlias)
|
|
167
|
+
continue;
|
|
168
|
+
// an unnamed expression has no stable output name in SQLite. Give it a
|
|
169
|
+
// real alias that cannot collide with another target or expanded star.
|
|
170
|
+
let suffix = i + 1;
|
|
171
|
+
let generated = `_orez_col_${suffix}`;
|
|
172
|
+
while (usedNames.has(generated.toLowerCase()))
|
|
173
|
+
generated = `_orez_col_${++suffix}`;
|
|
174
|
+
resolved.target.name = generated;
|
|
175
|
+
resolved.columns = [generated];
|
|
176
|
+
usedNames.add(generated.toLowerCase());
|
|
177
|
+
}
|
|
178
|
+
return resolvedTargets.flatMap((target) => target.columns);
|
|
179
|
+
}
|
|
180
|
+
export const rowJsonPass = {
|
|
181
|
+
name: 'row-json',
|
|
182
|
+
run(rawStmt, ctx) {
|
|
183
|
+
walkAst(rawStmt, {
|
|
184
|
+
SelectStmt: (select) => {
|
|
185
|
+
const subselects = new Map();
|
|
186
|
+
for (const fromNode of select?.fromClause ?? []) {
|
|
187
|
+
const subselect = fromNode?.RangeSubselect;
|
|
188
|
+
const alias = subselect?.alias?.aliasname;
|
|
189
|
+
if (alias && subselect?.subquery?.SelectStmt) {
|
|
190
|
+
subselects.set(alias, subselect);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (subselects.size === 0)
|
|
194
|
+
return;
|
|
195
|
+
// resolve each referenced subquery shape at most once (and warn once)
|
|
196
|
+
const resolved = new Map();
|
|
197
|
+
const shapeFor = (alias) => {
|
|
198
|
+
if (!resolved.has(alias)) {
|
|
199
|
+
resolved.set(alias, resolveShape(subselects.get(alias), ctx));
|
|
200
|
+
}
|
|
201
|
+
return resolved.get(alias) ?? null;
|
|
202
|
+
};
|
|
203
|
+
walkAst(select.targetList ?? [], {
|
|
204
|
+
FuncCall: (func, parent, key) => {
|
|
205
|
+
if (functionName(func) !== 'row_to_json')
|
|
206
|
+
return;
|
|
207
|
+
const alias = columnName(func.args?.[0]);
|
|
208
|
+
if (!alias || !subselects.has(alias))
|
|
209
|
+
return;
|
|
210
|
+
const columns = shapeFor(alias);
|
|
211
|
+
if (!columns || columns.length === 0)
|
|
212
|
+
return;
|
|
213
|
+
parent[key] = {
|
|
214
|
+
FuncCall: {
|
|
215
|
+
funcname: [{ String: { sval: 'json_object' } }],
|
|
216
|
+
args: columns.flatMap((column) => [
|
|
217
|
+
stringNode(column),
|
|
218
|
+
columnNode(alias, column),
|
|
219
|
+
]),
|
|
220
|
+
funcformat: 'COERCE_EXPLICIT_CALL',
|
|
221
|
+
location: -1,
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
},
|
|
227
|
+
});
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
//# sourceMappingURL=row-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-json.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/row-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAkFvC,eAAO,MAAM,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAkFvC,eAAO,MAAM,UAAU,EAAE,IAsCxB,CAAA"}
|
|
@@ -87,8 +87,23 @@ function flattenWriteTargetQualifiers(stmt) {
|
|
|
87
87
|
}
|
|
88
88
|
export const schemaPass = {
|
|
89
89
|
name: 'schema',
|
|
90
|
-
run(rawStmt) {
|
|
90
|
+
run(rawStmt, ctx) {
|
|
91
91
|
walkAst(rawStmt, {
|
|
92
|
+
AlterTableCmd: (node) => {
|
|
93
|
+
if (node.subtype !== 'AT_DropColumn' || !node.behavior)
|
|
94
|
+
return;
|
|
95
|
+
if (node.behavior === 'DROP_CASCADE') {
|
|
96
|
+
ctx.warnings.push({
|
|
97
|
+
kind: 'unsupported-alter-table-cascade',
|
|
98
|
+
message: 'SQLite DROP COLUMN does not support CASCADE',
|
|
99
|
+
});
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
// PostgreSQL deparses its default DROP_RESTRICT behavior as an
|
|
103
|
+
// explicit RESTRICT clause. SQLite has the same restrictive default
|
|
104
|
+
// but rejects the keyword, so omit it from the emitted statement.
|
|
105
|
+
delete node.behavior;
|
|
106
|
+
},
|
|
92
107
|
SelectStmt: (node) => {
|
|
93
108
|
flattenSelectRangeVarQualifiers(node);
|
|
94
109
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Pass } from '../types.js';
|
|
2
|
+
/** Rewrite one libpg_query FuncCall to SQLite's ordinary trim functions. */
|
|
3
|
+
export declare function rewriteStringFunctionCall(node: any): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* PostgreSQL parses the SQL-standard TRIM forms as pg_catalog btrim/ltrim/rtrim
|
|
6
|
+
* calls with a special deparse format. That format emits `TRIM(BOTH FROM x)`,
|
|
7
|
+
* which SQLite rejects even though its trim functions have equivalent
|
|
8
|
+
* argument ordering. Emit ordinary SQLite function calls instead.
|
|
9
|
+
*/
|
|
10
|
+
export declare const stringFunctionsPass: Pass;
|
|
11
|
+
//# sourceMappingURL=string-functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-functions.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/string-functions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAavC,4EAA4E;AAC5E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,IASjC,CAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { walkAst } from './ast-utils.js';
|
|
2
|
+
function functionName(funcname) {
|
|
3
|
+
if (!funcname || funcname.length === 0)
|
|
4
|
+
return undefined;
|
|
5
|
+
const last = funcname[funcname.length - 1];
|
|
6
|
+
const value = last?.String?.sval ?? last?.String?.str;
|
|
7
|
+
return typeof value === 'string' ? value.toLowerCase() : undefined;
|
|
8
|
+
}
|
|
9
|
+
function stringNode(value) {
|
|
10
|
+
return { String: { sval: value } };
|
|
11
|
+
}
|
|
12
|
+
/** Rewrite one libpg_query FuncCall to SQLite's ordinary trim functions. */
|
|
13
|
+
export function rewriteStringFunctionCall(node) {
|
|
14
|
+
const name = functionName(node?.funcname);
|
|
15
|
+
if (name !== 'btrim' && name !== 'ltrim' && name !== 'rtrim')
|
|
16
|
+
return false;
|
|
17
|
+
node.funcname = [stringNode(name === 'btrim' ? 'trim' : name)];
|
|
18
|
+
node.funcformat = 'COERCE_EXPLICIT_CALL';
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* PostgreSQL parses the SQL-standard TRIM forms as pg_catalog btrim/ltrim/rtrim
|
|
23
|
+
* calls with a special deparse format. That format emits `TRIM(BOTH FROM x)`,
|
|
24
|
+
* which SQLite rejects even though its trim functions have equivalent
|
|
25
|
+
* argument ordering. Emit ordinary SQLite function calls instead.
|
|
26
|
+
*/
|
|
27
|
+
export const stringFunctionsPass = {
|
|
28
|
+
name: 'string-functions',
|
|
29
|
+
run(rawStmt, _ctx) {
|
|
30
|
+
walkAst(rawStmt, {
|
|
31
|
+
FuncCall: (node) => {
|
|
32
|
+
rewriteStringFunctionCall(node);
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=string-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-functions.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/string-functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAIxC,SAAS,YAAY,CAAC,QAA2B;IAC/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,CAAA;IACrD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACpE,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAA;AACpC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,yBAAyB,CAAC,IAAS;IACjD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACzC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IAE1E,IAAI,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,IAAI,CAAC,UAAU,GAAG,sBAAsB,CAAA;IACxC,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACvC,IAAI,EAAE,kBAAkB;IACxB,GAAG,CAAC,OAAO,EAAE,IAAI;QACf,OAAO,CAAC,OAAO,EAAE;YACf,QAAQ,EAAE,CAAC,IAAS,EAAE,EAAE;gBACtB,yBAAyB,CAAC,IAAI,CAAC,CAAA;YACjC,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
|