@typesql/pg 0.1.5 → 0.2.1
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 +24 -0
- package/README.md +21 -59
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -3
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/introspect/cli.d.ts.map +1 -1
- package/dist/introspect/cli.js +26 -18
- package/dist/introspect/cli.js.map +1 -1
- package/dist/introspect/emit.d.ts.map +1 -1
- package/dist/introspect/emit.js +48 -11
- package/dist/introspect/emit.js.map +1 -1
- package/dist/introspect/index.d.ts +3 -4
- package/dist/introspect/index.d.ts.map +1 -1
- package/dist/introspect/index.js +1 -3
- package/dist/introspect/index.js.map +1 -1
- package/dist/introspect/introspect.d.ts.map +1 -1
- package/dist/introspect/introspect.js +40 -8
- package/dist/introspect/introspect.js.map +1 -1
- package/dist/introspect/nullability.d.ts +2 -1
- package/dist/introspect/nullability.d.ts.map +1 -1
- package/dist/introspect/nullability.js +101 -29
- package/dist/introspect/nullability.js.map +1 -1
- package/dist/type-map.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/client.ts +63 -39
- package/src/index.ts +32 -15
- package/src/introspect/cli.ts +124 -100
- package/src/introspect/emit.ts +224 -139
- package/src/introspect/index.ts +9 -10
- package/src/introspect/introspect.ts +239 -155
- package/src/introspect/nullability.ts +399 -257
- package/src/type-map.ts +25 -24
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { ViewNullability } from "./nullability.js";
|
|
2
|
-
const globToRegExp = (glob) => new RegExp(`^${glob
|
|
2
|
+
const globToRegExp = (glob) => new RegExp(`^${glob
|
|
3
|
+
.split("*")
|
|
4
|
+
.map((part) => part.replace(/[.+?^${}()|[\]\\]/g, "\\$&"))
|
|
5
|
+
.join(".*")}$`);
|
|
3
6
|
const KINDS = {
|
|
4
7
|
r: "table",
|
|
5
8
|
p: "partitioned table",
|
|
@@ -16,14 +19,28 @@ function resolver(types) {
|
|
|
16
19
|
return { type: "unknown", notnull: false, enumOid: null, domain: null };
|
|
17
20
|
if (t.typtype === "d") {
|
|
18
21
|
const base = resolve(t.basetype);
|
|
19
|
-
return {
|
|
22
|
+
return {
|
|
23
|
+
...base,
|
|
24
|
+
notnull: base.notnull || t.notnull,
|
|
25
|
+
domain: `${t.schema}.${t.name}`,
|
|
26
|
+
};
|
|
20
27
|
}
|
|
21
28
|
const elem = t.elem !== "0" ? types.get(t.elem) : undefined;
|
|
22
29
|
if (elem && elem.array === t.oid) {
|
|
23
30
|
const inner = resolve(elem.oid);
|
|
24
|
-
return {
|
|
31
|
+
return {
|
|
32
|
+
type: inner.type.endsWith("[]") ? inner.type : `${inner.type}[]`,
|
|
33
|
+
notnull: false,
|
|
34
|
+
enumOid: inner.enumOid,
|
|
35
|
+
domain: null,
|
|
36
|
+
};
|
|
25
37
|
}
|
|
26
|
-
return {
|
|
38
|
+
return {
|
|
39
|
+
type: TYPE_ALIASES[t.name] ?? t.name,
|
|
40
|
+
notnull: false,
|
|
41
|
+
enumOid: t.typtype === "e" ? t.oid : null,
|
|
42
|
+
domain: null,
|
|
43
|
+
};
|
|
27
44
|
};
|
|
28
45
|
return resolve;
|
|
29
46
|
}
|
|
@@ -81,21 +98,32 @@ export async function introspect(client, options = {}) {
|
|
|
81
98
|
if (t.enumOid)
|
|
82
99
|
usedEnums.add(t.enumOid);
|
|
83
100
|
const generated = c.generated !== "" ? c.default : null;
|
|
84
|
-
const identity = c.identity === "a"
|
|
101
|
+
const identity = c.identity === "a"
|
|
102
|
+
? "always"
|
|
103
|
+
: c.identity === "d"
|
|
104
|
+
? "by default"
|
|
105
|
+
: null;
|
|
85
106
|
return {
|
|
86
107
|
name: c.name,
|
|
87
108
|
type: t.type,
|
|
88
109
|
declaredType: c.declared,
|
|
89
110
|
domain: t.domain,
|
|
90
111
|
nullable: isView ? !viewNotNull[i] : !(c.notnull || t.notnull),
|
|
91
|
-
hasDefault: !isView &&
|
|
112
|
+
hasDefault: !isView &&
|
|
113
|
+
(c.default !== null || identity !== null || generated !== null),
|
|
92
114
|
identity,
|
|
93
115
|
generated,
|
|
94
116
|
default: generated === null ? c.default : null,
|
|
95
117
|
comment: c.comment,
|
|
96
118
|
};
|
|
97
119
|
});
|
|
98
|
-
relations.push({
|
|
120
|
+
relations.push({
|
|
121
|
+
schema: rel.schema,
|
|
122
|
+
name: rel.name,
|
|
123
|
+
kind,
|
|
124
|
+
comment: rel.comment,
|
|
125
|
+
columns,
|
|
126
|
+
});
|
|
99
127
|
}
|
|
100
128
|
const enumRows = await q(`SELECT t.oid::int8::text AS oid, n.nspname AS schema, t.typname AS name,
|
|
101
129
|
array_agg(e.enumlabel::text ORDER BY e.enumsortorder) AS values
|
|
@@ -103,7 +131,11 @@ export async function introspect(client, options = {}) {
|
|
|
103
131
|
WHERE n.nspname = ANY($1::text[]) OR t.oid = ANY($2::oid[])
|
|
104
132
|
GROUP BY t.oid, n.nspname, t.typname
|
|
105
133
|
ORDER BY t.typname, n.nspname`, [schemas, [...usedEnums]]);
|
|
106
|
-
const enums = enumRows.map(({ schema, name, values }) => ({
|
|
134
|
+
const enums = enumRows.map(({ schema, name, values }) => ({
|
|
135
|
+
schema,
|
|
136
|
+
name,
|
|
137
|
+
values,
|
|
138
|
+
}));
|
|
107
139
|
return { version, schemas, relations, enums };
|
|
108
140
|
}
|
|
109
141
|
//# sourceMappingURL=introspect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"introspect.js","sources":["../../src/introspect/introspect.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"introspect.js","sources":["../../src/introspect/introspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* else (function calls outside a short list, scalar subqueries, set-returning function columns)
|
|
11
11
|
* is nullable. On PostgreSQL 15 and older every column reference counts as nullable.
|
|
12
12
|
*
|
|
13
|
-
* This module has no imports so that scripts/pg-catalog-from-pg.
|
|
13
|
+
* This module has no imports so that scripts/pg-catalog-from-pg.ts can load it with Node's
|
|
14
14
|
* type stripping.
|
|
15
15
|
*/
|
|
16
16
|
/** Runs a query: node-postgres' `client.query(text, values)` fits. */
|
|
@@ -37,6 +37,7 @@ export declare class ViewNullability {
|
|
|
37
37
|
private readonly query;
|
|
38
38
|
private readonly options;
|
|
39
39
|
private readonly views;
|
|
40
|
+
private readonly analyzing;
|
|
40
41
|
private readonly atts;
|
|
41
42
|
private procs;
|
|
42
43
|
private operators;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullability.d.ts","sources":["../../src/introspect/nullability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,MAAM,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"nullability.d.ts","sources":["../../src/introspect/nullability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,sEAAsE;AACtE,MAAM,MAAM,OAAO,GAAG,CACrB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,EAAE,KACd,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,CAAC,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IAClC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7D;AAED,wEAAwE;AACxE,MAAM,WAAW,IAAI;IACpB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AACD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,SAAS,SAAS,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AA8CpE,4FAA4F;AAC5F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CA+BrD;AAyHD,iFAAiF;AACjF,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqB;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqC;IAC1D,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,SAAS,CAA2C;IAE5D,YAAY,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,kBAAuB,EAG3D;IAED,mGAAmG;IACnG,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAYlD;YAEa,OAAO;IAuBrB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,aAAa;IAWrB,sEAAsE;YACxD,cAAc;IAK5B,OAAO,CAAC,OAAO;IAsBf,mEAAmE;YACrD,WAAW;YAsBX,QAAQ;IAmCtB,6GAA6G;YAC/F,cAAc;YAed,GAAG;YAQH,IAAI;CA8ElB"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* else (function calls outside a short list, scalar subqueries, set-returning function columns)
|
|
11
11
|
* is nullable. On PostgreSQL 15 and older every column reference counts as nullable.
|
|
12
12
|
*
|
|
13
|
-
* This module has no imports so that scripts/pg-catalog-from-pg.
|
|
13
|
+
* This module has no imports so that scripts/pg-catalog-from-pg.ts can load it with Node's
|
|
14
14
|
* type stripping.
|
|
15
15
|
*/
|
|
16
16
|
/** Tokens of the text form of a node tree (`outfuncs.c`). `[ … ]` datum bytes are skipped. */
|
|
@@ -89,29 +89,75 @@ export function parseNodeTree(text) {
|
|
|
89
89
|
};
|
|
90
90
|
return value();
|
|
91
91
|
}
|
|
92
|
-
const list = (x) =>
|
|
93
|
-
const node = (x) =>
|
|
94
|
-
const str = (x) =>
|
|
92
|
+
const list = (x) => Array.isArray(x) ? x : [];
|
|
93
|
+
const node = (x) => x !== null && typeof x === "object" && !Array.isArray(x) ? x : null;
|
|
94
|
+
const str = (x) => typeof x === "string" ? x : null;
|
|
95
95
|
// ───────────────────────────── function knowledge ─────────────────────────────
|
|
96
96
|
/** `pg_catalog` functions that return a non-NULL value for non-NULL arguments. */
|
|
97
97
|
const NON_NULL_FUNCTIONS = new Set([
|
|
98
|
-
"current_database",
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
98
|
+
"current_database",
|
|
99
|
+
"current_user",
|
|
100
|
+
"session_user",
|
|
101
|
+
"current_schema",
|
|
102
|
+
"pg_get_userbyid",
|
|
103
|
+
"pg_my_temp_schema",
|
|
104
|
+
"nameconcatoid",
|
|
105
|
+
"pg_has_role",
|
|
106
|
+
"has_table_privilege",
|
|
107
|
+
"has_column_privilege",
|
|
108
|
+
"has_any_column_privilege",
|
|
109
|
+
"has_function_privilege",
|
|
110
|
+
"has_schema_privilege",
|
|
111
|
+
"has_sequence_privilege",
|
|
112
|
+
"has_type_privilege",
|
|
113
|
+
"pg_relation_is_updatable",
|
|
114
|
+
"pg_column_is_updatable",
|
|
115
|
+
"pg_is_other_temp_schema",
|
|
116
|
+
"now",
|
|
117
|
+
"statement_timestamp",
|
|
118
|
+
"transaction_timestamp",
|
|
119
|
+
"clock_timestamp",
|
|
120
|
+
"lower",
|
|
121
|
+
"upper",
|
|
122
|
+
"length",
|
|
123
|
+
"char_length",
|
|
124
|
+
"octet_length",
|
|
125
|
+
"concat",
|
|
126
|
+
"concat_ws",
|
|
127
|
+
"md5",
|
|
128
|
+
"btrim",
|
|
129
|
+
"ltrim",
|
|
130
|
+
"rtrim",
|
|
131
|
+
"abs",
|
|
132
|
+
"round",
|
|
133
|
+
"trunc",
|
|
134
|
+
"floor",
|
|
135
|
+
"ceil",
|
|
136
|
+
"ceiling",
|
|
137
|
+
"date_trunc",
|
|
138
|
+
"age",
|
|
105
139
|
]);
|
|
106
140
|
/** `pg_stat_get_*` accessors returning a number report 0 when no statistics exist, except these. */
|
|
107
141
|
const NULLABLE_STAT_FUNCTIONS = new Set([
|
|
108
|
-
"pg_stat_get_db_checksum_failures",
|
|
142
|
+
"pg_stat_get_db_checksum_failures",
|
|
143
|
+
"pg_stat_get_backend_pid",
|
|
144
|
+
"pg_stat_get_backend_dbid",
|
|
145
|
+
"pg_stat_get_backend_userid",
|
|
109
146
|
]);
|
|
110
|
-
const isNonNullStatFunction = (name, ret) => name.startsWith("pg_stat_get_") &&
|
|
147
|
+
const isNonNullStatFunction = (name, ret) => name.startsWith("pg_stat_get_") &&
|
|
148
|
+
(ret === "int8" || ret === "int4" || ret === "float8") &&
|
|
149
|
+
!NULLABLE_STAT_FUNCTIONS.has(name);
|
|
111
150
|
/** Aggregates that never return NULL. */
|
|
112
151
|
const NON_NULL_AGGREGATES = new Set(["count"]);
|
|
113
152
|
/** Window functions that never return NULL. */
|
|
114
|
-
const NON_NULL_WINDOW_FUNCTIONS = new Set([
|
|
153
|
+
const NON_NULL_WINDOW_FUNCTIONS = new Set([
|
|
154
|
+
"count",
|
|
155
|
+
"row_number",
|
|
156
|
+
"rank",
|
|
157
|
+
"dense_rank",
|
|
158
|
+
"percent_rank",
|
|
159
|
+
"cume_dist",
|
|
160
|
+
]);
|
|
115
161
|
/**
|
|
116
162
|
* Set-returning functions in FROM and their output columns (1-based) that are never NULL. A
|
|
117
163
|
* strict set-returning function returns no rows for NULL arguments, so the arguments do not
|
|
@@ -119,10 +165,18 @@ const NON_NULL_WINDOW_FUNCTIONS = new Set(["count", "row_number", "rank", "dense
|
|
|
119
165
|
* the `_text` variants turn a JSON null into SQL NULL.
|
|
120
166
|
*/
|
|
121
167
|
const NON_NULL_SRF_COLUMNS = {
|
|
122
|
-
generate_series: [1],
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
168
|
+
generate_series: [1],
|
|
169
|
+
generate_subscripts: [1],
|
|
170
|
+
jsonb_each: [1, 2],
|
|
171
|
+
json_each: [1, 2],
|
|
172
|
+
jsonb_each_text: [1],
|
|
173
|
+
json_each_text: [1],
|
|
174
|
+
jsonb_object_keys: [1],
|
|
175
|
+
json_object_keys: [1],
|
|
176
|
+
jsonb_array_elements: [1],
|
|
177
|
+
json_array_elements: [1],
|
|
178
|
+
regexp_matches: [1],
|
|
179
|
+
regexp_split_to_table: [1],
|
|
126
180
|
};
|
|
127
181
|
/**
|
|
128
182
|
* `pg_catalog` operators that can return NULL for non-NULL operands: JSON field and path access
|
|
@@ -136,6 +190,7 @@ export class ViewNullability {
|
|
|
136
190
|
query;
|
|
137
191
|
options;
|
|
138
192
|
views = new Map();
|
|
193
|
+
analyzing = new Set();
|
|
139
194
|
atts = new Map();
|
|
140
195
|
procs = null;
|
|
141
196
|
operators = null;
|
|
@@ -146,9 +201,14 @@ export class ViewNullability {
|
|
|
146
201
|
/** NOT NULL flags of the view's columns, in column order. `relid` is the view's `pg_class.oid`. */
|
|
147
202
|
notNull(relid) {
|
|
148
203
|
const key = String(relid);
|
|
204
|
+
// CREATE OR REPLACE VIEW allows a view that reads itself through others: waiting for its own
|
|
205
|
+
// analysis would never end
|
|
206
|
+
if (this.analyzing.has(key))
|
|
207
|
+
return Promise.resolve([]);
|
|
149
208
|
let cached = this.views.get(key);
|
|
150
209
|
if (!cached) {
|
|
151
|
-
|
|
210
|
+
this.analyzing.add(key);
|
|
211
|
+
cached = this.analyze(key).finally(() => this.analyzing.delete(key));
|
|
152
212
|
this.views.set(key, cached);
|
|
153
213
|
}
|
|
154
214
|
return cached;
|
|
@@ -168,7 +228,8 @@ export class ViewNullability {
|
|
|
168
228
|
if (!entry || entry["resjunk"] === "true")
|
|
169
229
|
continue;
|
|
170
230
|
const name = str(entry["resname"]) ?? "";
|
|
171
|
-
out.push((await this.expr(entry["expr"], query)) ||
|
|
231
|
+
out.push((await this.expr(entry["expr"], query)) ||
|
|
232
|
+
(this.options.notNull?.(row.relname, name) ?? false));
|
|
172
233
|
}
|
|
173
234
|
return out;
|
|
174
235
|
}
|
|
@@ -213,12 +274,16 @@ export class ViewNullability {
|
|
|
213
274
|
for (const r of list(query["rtable"])) {
|
|
214
275
|
const rte = node(r);
|
|
215
276
|
const sub = node(rte?.["subquery"]);
|
|
216
|
-
if (rte?.["rtekind"] === "1" &&
|
|
277
|
+
if (rte?.["rtekind"] === "1" &&
|
|
278
|
+
sub &&
|
|
279
|
+
!(await this.queryColumn(sub, attno)))
|
|
217
280
|
return false;
|
|
218
281
|
}
|
|
219
282
|
return true;
|
|
220
283
|
}
|
|
221
|
-
const entries = list(query["targetList"])
|
|
284
|
+
const entries = list(query["targetList"])
|
|
285
|
+
.map(node)
|
|
286
|
+
.filter((t) => t !== null && t["resjunk"] !== "true");
|
|
222
287
|
const te = entries[attno - 1];
|
|
223
288
|
return te ? this.expr(te["expr"], query) : false;
|
|
224
289
|
}
|
|
@@ -236,7 +301,8 @@ export class ViewNullability {
|
|
|
236
301
|
if (!rte || !(attno > 0))
|
|
237
302
|
return false;
|
|
238
303
|
switch (rte["rtekind"]) {
|
|
239
|
-
case "0": {
|
|
304
|
+
case "0": {
|
|
305
|
+
// relation
|
|
240
306
|
const relid = str(rte["relid"]);
|
|
241
307
|
const att = (await this.columns(relid)).find((a) => a.attnum === attno);
|
|
242
308
|
if (!att)
|
|
@@ -245,7 +311,8 @@ export class ViewNullability {
|
|
|
245
311
|
return (await this.notNull(relid))[attno - 1] ?? false;
|
|
246
312
|
return att.notnull;
|
|
247
313
|
}
|
|
248
|
-
case "1": {
|
|
314
|
+
case "1": {
|
|
315
|
+
// subquery
|
|
249
316
|
const sub = node(rte["subquery"]);
|
|
250
317
|
return sub ? this.queryColumn(sub, attno) : false;
|
|
251
318
|
}
|
|
@@ -272,7 +339,8 @@ export class ViewNullability {
|
|
|
272
339
|
if (call?._ !== "FUNCEXPR")
|
|
273
340
|
return false;
|
|
274
341
|
const proc = (await this.loadProcs()).get(str(call["funcid"]) ?? "");
|
|
275
|
-
return proc?.system === true &&
|
|
342
|
+
return (proc?.system === true &&
|
|
343
|
+
(NON_NULL_SRF_COLUMNS[proc.name]?.includes(attno) ?? false));
|
|
276
344
|
}
|
|
277
345
|
async all(args, query) {
|
|
278
346
|
for (const a of list(args))
|
|
@@ -304,7 +372,9 @@ export class ViewNullability {
|
|
|
304
372
|
return this.expr(list(e["args"])[0] ?? null, query);
|
|
305
373
|
// Explicit and implicit casts (funcformat 1, 2) keep a non-NULL input non-NULL.
|
|
306
374
|
const castLike = e["funcformat"] === "1" || e["funcformat"] === "2";
|
|
307
|
-
const known = proc?.system === true &&
|
|
375
|
+
const known = proc?.system === true &&
|
|
376
|
+
(NON_NULL_FUNCTIONS.has(proc.name) ||
|
|
377
|
+
isNonNullStatFunction(proc.name, proc.ret));
|
|
308
378
|
return (castLike || known) && this.all(e["args"], query);
|
|
309
379
|
}
|
|
310
380
|
case "BOOLEXPR":
|
|
@@ -316,8 +386,10 @@ export class ViewNullability {
|
|
|
316
386
|
// `ARRAY[…]` of NOT NULL elements is safe.
|
|
317
387
|
const [left, right] = list(e["args"]);
|
|
318
388
|
const array = node(right);
|
|
319
|
-
return (await this.strictOperator(e)) &&
|
|
320
|
-
|
|
389
|
+
return ((await this.strictOperator(e)) &&
|
|
390
|
+
array?._ === "ARRAYEXPR" &&
|
|
391
|
+
(await this.expr(left ?? null, query)) &&
|
|
392
|
+
this.all(array["elements"], query));
|
|
321
393
|
}
|
|
322
394
|
case "DISTINCTEXPR":
|
|
323
395
|
case "NULLTEST":
|
|
@@ -344,7 +416,7 @@ export class ViewNullability {
|
|
|
344
416
|
}
|
|
345
417
|
case "WINDOWFUNC": {
|
|
346
418
|
const proc = (await this.loadProcs()).get(str(e["winfnoid"]) ?? "");
|
|
347
|
-
return proc?.system === true && NON_NULL_WINDOW_FUNCTIONS.has(proc.name);
|
|
419
|
+
return (proc?.system === true && NON_NULL_WINDOW_FUNCTIONS.has(proc.name));
|
|
348
420
|
}
|
|
349
421
|
default:
|
|
350
422
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullability.js","sources":["../../src/introspect/nullability.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nullability.js","sources":["../../src/introspect/nullability.ts"],"names":[],"mappings":"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"}
|
package/dist/type-map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-map.d.ts","sources":["../src/type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"type-map.d.ts","sources":["../src/type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,SAChB,SAAQ,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtE,sDAAsD;IACtD,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,IAAI,MAAM,CAAC;QACrB,KAAK,IAAI,MAAM,CAAC;QAChB,WAAW,IAAI,MAAM,CAAC;KACtB,CAAC;IACF,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,cAAe,SAAQ,mBAAmB;CAAG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@typesql/pg",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "node-postgres (pg) adapter for TypeSQL, with `typesql introspect` to generate a schema from a live database.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@typesql/core": "0.
|
|
38
|
+
"@typesql/core": "0.6.0"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"pg": ">=8"
|
package/src/client.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Executor } from "@typesql/core";
|
|
2
|
+
import { runTransaction, type SqlDriver } from "@typesql/core/adapter";
|
|
2
3
|
|
|
3
4
|
/** The subset of a `pg` query result the adapter relies on. */
|
|
4
5
|
export interface PgResult {
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
readonly rows: unknown[];
|
|
7
|
+
readonly rowCount: number | null;
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -11,17 +12,19 @@ export interface PgResult {
|
|
|
11
12
|
* or a fake in tests. Only the `(text, values?) → Promise<{ rows, rowCount }>` form is used.
|
|
12
13
|
*/
|
|
13
14
|
export interface PgQueryable {
|
|
14
|
-
|
|
15
|
+
query(text: string, values?: unknown[]): Promise<PgResult>;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
/** A client checked out of a pool (`pg.PoolClient`): queryable and releasable. */
|
|
18
19
|
export interface PgTransactionClient extends PgQueryable {
|
|
19
|
-
|
|
20
|
+
release(err?: Error | boolean): void;
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
/** Anything with `pg.Pool`'s `connect()`. */
|
|
23
|
-
export interface PgPoolLike<
|
|
24
|
-
|
|
24
|
+
export interface PgPoolLike<
|
|
25
|
+
C extends PgTransactionClient = PgTransactionClient,
|
|
26
|
+
> {
|
|
27
|
+
connect(): Promise<C>;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
/**
|
|
@@ -29,20 +32,24 @@ export interface PgPoolLike<C extends PgTransactionClient = PgTransactionClient>
|
|
|
29
32
|
* `{ rows, rowCount }` (pg's `rowCount`, so `q.executeCount()` works).
|
|
30
33
|
*/
|
|
31
34
|
export function executor(client: PgQueryable): Executor {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
return async (text, values) => {
|
|
36
|
+
// `pg` requires a mutable array (`QueryConfigValues<I>` matches `Array<U>` only).
|
|
37
|
+
const { rows, rowCount } = await client.query(text, Array.from(values));
|
|
38
|
+
return { rows, rowCount };
|
|
39
|
+
};
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
function isPool(client: PgQueryable): client is PgQueryable & PgPoolLike {
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
// `pg.Client` has `connect()` too (it opens the socket), and `processID`; a `PoolClient` has `release()`.
|
|
44
|
+
return (
|
|
45
|
+
typeof (client as Partial<PgPoolLike>).connect === "function" &&
|
|
46
|
+
!("release" in client) &&
|
|
47
|
+
!("processID" in client)
|
|
48
|
+
);
|
|
42
49
|
}
|
|
43
50
|
|
|
44
51
|
function isConnection(client: PgQueryable): boolean {
|
|
45
|
-
|
|
52
|
+
return "release" in client || "processID" in client;
|
|
46
53
|
}
|
|
47
54
|
|
|
48
55
|
const on = (c: PgQueryable) => (statement: string) => c.query(statement);
|
|
@@ -51,18 +58,21 @@ const on = (c: PgQueryable) => (statement: string) => c.query(statement);
|
|
|
51
58
|
* Check out a client, run `fn` with it between `BEGIN` and `COMMIT`, and release it, with the
|
|
52
59
|
* error when `ROLLBACK` fails so the pool discards the connection instead of reusing it.
|
|
53
60
|
*/
|
|
54
|
-
async function inPoolTransaction<C extends PgTransactionClient, T>(
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
async function inPoolTransaction<C extends PgTransactionClient, T>(
|
|
62
|
+
pool: PgPoolLike<C>,
|
|
63
|
+
fn: (conn: C) => Promise<T>,
|
|
64
|
+
): Promise<T> {
|
|
65
|
+
const conn = await pool.connect();
|
|
66
|
+
let releaseWith: Error | undefined;
|
|
67
|
+
try {
|
|
68
|
+
return await runTransaction(on(conn), () => fn(conn), {
|
|
69
|
+
onRollbackError: (err) => {
|
|
70
|
+
releaseWith = err instanceof Error ? err : new Error(String(err));
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
} finally {
|
|
74
|
+
conn.release(releaseWith);
|
|
75
|
+
}
|
|
66
76
|
}
|
|
67
77
|
|
|
68
78
|
/**
|
|
@@ -70,13 +80,24 @@ async function inPoolTransaction<C extends PgTransactionClient, T>(pool: PgPoolL
|
|
|
70
80
|
* `PoolClient`, on that connection. With `depth > 0` the client is already in a transaction,
|
|
71
81
|
* and `fn` runs in a savepoint.
|
|
72
82
|
*/
|
|
73
|
-
function transaction<T>(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
83
|
+
function transaction<T>(
|
|
84
|
+
client: PgQueryable,
|
|
85
|
+
depth: number,
|
|
86
|
+
fn: (tx: PgQueryable) => Promise<T>,
|
|
87
|
+
): Promise<T> {
|
|
88
|
+
if (depth > 0)
|
|
89
|
+
return runTransaction(on(client), () => fn(client), {
|
|
90
|
+
savepoint: `typesql_${depth}`,
|
|
91
|
+
});
|
|
92
|
+
if (isPool(client)) return inPoolTransaction(client, fn);
|
|
93
|
+
if (!isConnection(client)) {
|
|
94
|
+
return Promise.reject(
|
|
95
|
+
new Error(
|
|
96
|
+
"typesql: sql.transaction() needs a pg Pool, Client or PoolClient, so that BEGIN and COMMIT reach one connection",
|
|
97
|
+
),
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
return runTransaction(on(client), () => fn(client));
|
|
80
101
|
}
|
|
81
102
|
|
|
82
103
|
/** How `createSql(client)` runs queries and transactions. */
|
|
@@ -84,7 +105,7 @@ export const driver: SqlDriver<PgQueryable> = { executor, transaction };
|
|
|
84
105
|
|
|
85
106
|
/** Anything carrying an ordered list of DDL statements, e.g. a `migrations()` builder from core. */
|
|
86
107
|
export interface MigrationSource {
|
|
87
|
-
|
|
108
|
+
readonly statements: readonly string[];
|
|
88
109
|
}
|
|
89
110
|
|
|
90
111
|
/**
|
|
@@ -92,8 +113,11 @@ export interface MigrationSource {
|
|
|
92
113
|
* (all or nothing). Statements are sent as simple queries without parameters, so scripts
|
|
93
114
|
* with `$$`-quoted function bodies work.
|
|
94
115
|
*/
|
|
95
|
-
export async function migrate<C extends PgTransactionClient>(
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
116
|
+
export async function migrate<C extends PgTransactionClient>(
|
|
117
|
+
pool: PgPoolLike<C>,
|
|
118
|
+
m: MigrationSource,
|
|
119
|
+
): Promise<void> {
|
|
120
|
+
await inPoolTransaction(pool, async (client) => {
|
|
121
|
+
for (const statement of m.statements) await client.query(statement);
|
|
122
|
+
});
|
|
99
123
|
}
|