@typed-sql/postgres 1.0.0 → 2.0.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 +113 -0
- package/README.md +29 -4
- package/dist/packages/postgres/src/bulk.d.ts +30 -0
- package/dist/packages/postgres/src/bulk.d.ts.map +1 -0
- package/dist/packages/postgres/src/bulk.js +228 -0
- package/dist/packages/postgres/src/bulk.js.map +1 -0
- package/dist/packages/postgres/src/index.d.ts +5 -1
- package/dist/packages/postgres/src/index.d.ts.map +1 -1
- package/dist/packages/postgres/src/index.js +17 -4
- package/dist/packages/postgres/src/index.js.map +1 -1
- package/dist/packages/postgres/src/pg.d.ts +57 -2
- package/dist/packages/postgres/src/pg.d.ts.map +1 -1
- package/dist/packages/postgres/src/pg.js +346 -2
- package/dist/packages/postgres/src/pg.js.map +1 -1
- package/dist/packages/postgres/src/provider.d.ts +2 -1
- package/dist/packages/postgres/src/provider.d.ts.map +1 -1
- package/dist/packages/postgres/src/provider.js +3 -1
- package/dist/packages/postgres/src/provider.js.map +1 -1
- package/dist/packages/postgres/src/resolver.d.ts.map +1 -1
- package/dist/packages/postgres/src/resolver.js +11 -1
- package/dist/packages/postgres/src/resolver.js.map +1 -1
- package/dist/packages/postgres/src/routing.d.ts +22 -0
- package/dist/packages/postgres/src/routing.d.ts.map +1 -0
- package/dist/packages/postgres/src/routing.js +70 -0
- package/dist/packages/postgres/src/routing.js.map +1 -0
- package/dist/packages/postgres/src/runtime.d.ts +14 -1
- package/dist/packages/postgres/src/runtime.d.ts.map +1 -1
- package/dist/packages/postgres/src/runtime.js +440 -28
- package/dist/packages/postgres/src/runtime.js.map +1 -1
- package/dist/packages/postgres/src/semantics.d.ts +5 -0
- package/dist/packages/postgres/src/semantics.d.ts.map +1 -0
- package/dist/packages/postgres/src/semantics.js +211 -0
- package/dist/packages/postgres/src/semantics.js.map +1 -0
- package/dist/packages/postgres/src/stream.d.ts +7 -7
- package/dist/packages/postgres/src/stream.d.ts.map +1 -1
- package/dist/packages/postgres/src/stream.js.map +1 -1
- package/dist/packages/postgres/src/version.d.ts +2 -0
- package/dist/packages/postgres/src/version.d.ts.map +1 -0
- package/dist/packages/postgres/src/version.js +2 -0
- package/dist/packages/postgres/src/version.js.map +1 -0
- package/package.json +4 -4
|
@@ -1,14 +1,22 @@
|
|
|
1
|
+
import type { DatabaseObserver, LiveQueryVerifier, QueryPlanInspector } from "@typed-sql/core";
|
|
1
2
|
import type { Pool as PgPool, PoolConfig } from "pg";
|
|
2
|
-
import type { PostgresSchemaSnapshot
|
|
3
|
+
import type { PostgresSchemaSnapshot } from "./index.js";
|
|
3
4
|
import { type PostgresQueryable } from "./provider.js";
|
|
4
5
|
import { type PostgresDatabase, type PostgresPoolLike, type PostgresQueryConfig } from "./runtime.js";
|
|
6
|
+
import { type PostgresTypePolicy } from "./type-policy.js";
|
|
5
7
|
export interface PgCursorConstructor {
|
|
6
8
|
new (text: string, values?: readonly unknown[], config?: {
|
|
7
9
|
readonly types?: PostgresQueryConfig["types"];
|
|
8
10
|
}): unknown;
|
|
9
11
|
}
|
|
10
12
|
export type PgCursorImporter = () => Promise<unknown>;
|
|
13
|
+
export interface PgCopyStreamsModule {
|
|
14
|
+
readonly from: (statement: string) => unknown;
|
|
15
|
+
readonly to: (statement: string) => unknown;
|
|
16
|
+
}
|
|
17
|
+
export type PgCopyStreamsImporter = () => Promise<unknown>;
|
|
11
18
|
export declare function loadPgCursorDriver(importer?: PgCursorImporter): Promise<PgCursorConstructor>;
|
|
19
|
+
export declare function loadPgCopyStreams(importer?: PgCopyStreamsImporter): Promise<PgCopyStreamsModule>;
|
|
12
20
|
export interface PgOptions {
|
|
13
21
|
readonly connectionString: string | (() => string | Promise<string>);
|
|
14
22
|
readonly poolConfig?: Omit<PoolConfig, "connectionString" | "query_timeout" | "types">;
|
|
@@ -16,6 +24,9 @@ export interface PgOptions {
|
|
|
16
24
|
readonly decimal?: (value: string) => unknown;
|
|
17
25
|
/** Host-injected loader for workspaces or runtimes with nonstandard package resolution. */
|
|
18
26
|
readonly cursorImporter?: PgCursorImporter;
|
|
27
|
+
/** Host-injected loader for the optional pg-copy-streams bulk protocol package. */
|
|
28
|
+
readonly copyStreamsImporter?: PgCopyStreamsImporter;
|
|
29
|
+
readonly observer?: DatabaseObserver;
|
|
19
30
|
}
|
|
20
31
|
export interface PgSchemaProviderOptions {
|
|
21
32
|
readonly connectionString?: string | (() => string | Promise<string>);
|
|
@@ -23,8 +34,52 @@ export interface PgSchemaProviderOptions {
|
|
|
23
34
|
readonly schemas?: readonly string[];
|
|
24
35
|
readonly typePolicy?: PostgresTypePolicy;
|
|
25
36
|
}
|
|
37
|
+
export interface PgLiveVerifierClient {
|
|
38
|
+
query<Row extends Record<string, unknown>>(sql: string, values?: readonly unknown[]): Promise<{
|
|
39
|
+
readonly rows: readonly Row[];
|
|
40
|
+
}>;
|
|
41
|
+
release(error?: Error | boolean): void;
|
|
42
|
+
}
|
|
43
|
+
export interface PgLiveVerifierPool {
|
|
44
|
+
query<Row extends Record<string, unknown>>(sql: string, values?: readonly unknown[]): Promise<{
|
|
45
|
+
readonly rows: readonly Row[];
|
|
46
|
+
}>;
|
|
47
|
+
connect(): Promise<PgLiveVerifierClient>;
|
|
48
|
+
end(): Promise<void>;
|
|
49
|
+
}
|
|
50
|
+
export interface PgLiveVerifierOptions {
|
|
51
|
+
readonly connectionString?: string | (() => string | Promise<string>);
|
|
52
|
+
readonly pool?: PgLiveVerifierPool;
|
|
53
|
+
readonly poolConfig?: Omit<PoolConfig, "connectionString">;
|
|
54
|
+
readonly typePolicy?: PostgresTypePolicy;
|
|
55
|
+
readonly schema?: PostgresSchemaSnapshot;
|
|
56
|
+
readonly driverImporter?: () => Promise<typeof import("pg")>;
|
|
57
|
+
}
|
|
58
|
+
export interface PgPlanInspectorOptions {
|
|
59
|
+
readonly connectionString?: string | (() => string | Promise<string>);
|
|
60
|
+
readonly pool?: PgPlanInspectorPool;
|
|
61
|
+
readonly poolConfig?: Omit<PoolConfig, "connectionString">;
|
|
62
|
+
readonly driverImporter?: () => Promise<typeof import("pg")>;
|
|
63
|
+
}
|
|
64
|
+
export interface PgPlanInspectorClient {
|
|
65
|
+
query<Row extends Record<string, unknown>>(sql: string, values?: readonly unknown[]): Promise<{
|
|
66
|
+
readonly rows: readonly Row[];
|
|
67
|
+
}>;
|
|
68
|
+
release(error?: Error | boolean): void;
|
|
69
|
+
}
|
|
70
|
+
export interface PgPlanInspectorPool {
|
|
71
|
+
query<Row extends Record<string, unknown>>(sql: string, values?: readonly unknown[]): Promise<{
|
|
72
|
+
readonly rows: readonly Row[];
|
|
73
|
+
}>;
|
|
74
|
+
connect(): Promise<PgPlanInspectorClient>;
|
|
75
|
+
end(): Promise<void>;
|
|
76
|
+
}
|
|
26
77
|
export declare function loadPgDriver(importer?: () => Promise<typeof import("pg")>): Promise<typeof import("pg")>;
|
|
27
|
-
|
|
78
|
+
/** Creates a lazy adapter over PostgreSQL PREPARE and pg_prepared_statements. */
|
|
79
|
+
export declare function createPgLiveVerifier(options: PgLiveVerifierOptions): LiveQueryVerifier;
|
|
80
|
+
/** Creates a lazy, non-executing adapter over PostgreSQL structured EXPLAIN. */
|
|
81
|
+
export declare function createPgPlanInspector(options: PgPlanInspectorOptions): QueryPlanInspector;
|
|
82
|
+
export declare function adaptPgPool(pool: PgPool, cursorImporter?: PgCursorImporter, copyStreamsImporter?: PgCopyStreamsImporter): PostgresPoolLike;
|
|
28
83
|
export declare function createPgDatabase(options: PgOptions): Promise<PostgresDatabase>;
|
|
29
84
|
export declare function pg(options: PgSchemaProviderOptions): {
|
|
30
85
|
introspect(): Promise<PostgresSchemaSnapshot>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../../../src/pg.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pg.d.ts","sourceRoot":"","sources":["../../../../src/pg.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAqB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAc,UAAU,EAAe,MAAM,IAAI,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,iBAAiB,EAA0B,MAAM,eAAe,CAAC;AAC/E,OAAO,EAML,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EAEzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IAClC,KACE,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,EAC3B,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;KAC/C,GACA,OAAO,CAAC;CACZ;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,QAAQ,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C;AAED,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AA0B3D,wBAAsB,kBAAkB,CACtC,QAAQ,GAAE,gBAA0C,GACnD,OAAO,CAAC,mBAAmB,CAAC,CAY9B;AAED,wBAAsB,iBAAiB,CACrC,QAAQ,GAAE,qBAAoD,GAC7D,OAAO,CAAC,mBAAmB,CAAC,CAqB9B;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,GAAG,eAAe,GAAG,OAAO,CAAC,CAAC;IACvF,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAC9C,2FAA2F;IAC3F,QAAQ,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAC3C,mFAAmF;IACnF,QAAQ,CAAC,mBAAmB,CAAC,EAAE,qBAAqB,CAAC;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;KAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;KAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACzC,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC3D,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC3D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;KAAE,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAA;KAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,wBAAsB,YAAY,CAChC,QAAQ,GAAE,MAAM,OAAO,CAAC,cAAc,IAAI,CAAC,CAAsB,GAChE,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,CAW9B;AAUD,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,iBAAiB,CA6FtF;AAqFD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,kBAAkB,CAkEzF;AAgCD,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,cAAc,GAAE,gBAA0C,EAC1D,mBAAmB,GAAE,qBAAoD,GACxE,gBAAgB,CAiKlB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAepF;AAED,wBAAgB,EAAE,CAAC,OAAO,EAAE,uBAAuB,GAAG;IAAE,UAAU,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAA;CAAE,CAiBtG"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { once } from "node:events";
|
|
3
|
+
import { finished } from "node:stream/promises";
|
|
1
4
|
import { PostgresSchemaProvider } from "./provider.js";
|
|
2
5
|
import { createPostgresDatabase, } from "./runtime.js";
|
|
6
|
+
import { defaultPostgresTypePolicy, isKnownPostgresType, mapPostgresType, } from "./type-policy.js";
|
|
3
7
|
const pgCursorPackage = "pg-cursor";
|
|
8
|
+
const pgCopyStreamsPackage = "pg-copy-streams";
|
|
4
9
|
const queryTimeoutError = "@typed-sql/postgres/pg does not accept pg query_timeout because pg can reject before the connection is ready for reuse; use PostgreSQL statement_timeout instead";
|
|
5
10
|
async function defaultPgCursorImporter() {
|
|
6
11
|
return import(pgCursorPackage);
|
|
7
12
|
}
|
|
13
|
+
async function defaultPgCopyStreamsImporter() {
|
|
14
|
+
return import(pgCopyStreamsPackage);
|
|
15
|
+
}
|
|
8
16
|
function pgCursorConstructor(module) {
|
|
9
17
|
const candidate = typeof module === "object" && module !== null && "default" in module
|
|
10
18
|
? module.default
|
|
@@ -25,6 +33,24 @@ export async function loadPgCursorDriver(importer = defaultPgCursorImporter) {
|
|
|
25
33
|
throw error;
|
|
26
34
|
}
|
|
27
35
|
}
|
|
36
|
+
export async function loadPgCopyStreams(importer = defaultPgCopyStreamsImporter) {
|
|
37
|
+
try {
|
|
38
|
+
const module = await importer();
|
|
39
|
+
if (typeof module !== "object" ||
|
|
40
|
+
module === null ||
|
|
41
|
+
typeof module.from !== "function" ||
|
|
42
|
+
typeof module.to !== "function") {
|
|
43
|
+
throw new TypeError("The application-owned pg-copy-streams package must export from() and to() factories");
|
|
44
|
+
}
|
|
45
|
+
return module;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (error instanceof Error && "code" in error && error.code === "ERR_MODULE_NOT_FOUND") {
|
|
49
|
+
throw new Error("@typed-sql/postgres/pg COPY requires the application-owned pg-copy-streams package. Install it with: pnpm add pg-copy-streams", { cause: error });
|
|
50
|
+
}
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
28
54
|
export async function loadPgDriver(importer = () => import("pg")) {
|
|
29
55
|
try {
|
|
30
56
|
return await importer();
|
|
@@ -44,6 +70,243 @@ async function connectionString(value) {
|
|
|
44
70
|
throw new TypeError("PostgreSQL connectionString must not be empty");
|
|
45
71
|
return resolved;
|
|
46
72
|
}
|
|
73
|
+
const POSTGRES_LIVE_VERIFIER_VERSION = "postgres-prepare-v1";
|
|
74
|
+
/** Creates a lazy adapter over PostgreSQL PREPARE and pg_prepared_statements. */
|
|
75
|
+
export function createPgLiveVerifier(options) {
|
|
76
|
+
const ownsPool = options.pool === undefined;
|
|
77
|
+
let poolPromise;
|
|
78
|
+
let serverPromise;
|
|
79
|
+
const acquirePool = () => {
|
|
80
|
+
poolPromise ??= (async () => {
|
|
81
|
+
if (options.pool !== undefined)
|
|
82
|
+
return options.pool;
|
|
83
|
+
if (options.connectionString === undefined)
|
|
84
|
+
throw new TypeError("PostgreSQL live verification requires connectionString or pool");
|
|
85
|
+
const value = await connectionString(options.connectionString);
|
|
86
|
+
const { Pool } = await loadPgDriver(options.driverImporter);
|
|
87
|
+
return new Pool({ ...options.poolConfig, connectionString: value });
|
|
88
|
+
})();
|
|
89
|
+
return poolPromise;
|
|
90
|
+
};
|
|
91
|
+
const server = async () => {
|
|
92
|
+
serverPromise ??= (async () => {
|
|
93
|
+
const pool = await acquirePool();
|
|
94
|
+
const version = await pool.query("SELECT current_setting('server_version') AS version");
|
|
95
|
+
const extensions = await pool.query("SELECT extname || ':' || extversion AS extension FROM pg_extension ORDER BY extname");
|
|
96
|
+
return { version: version.rows[0]?.version ?? "unknown", features: extensions.rows.map((row) => row.extension) };
|
|
97
|
+
})();
|
|
98
|
+
return serverPromise;
|
|
99
|
+
};
|
|
100
|
+
return {
|
|
101
|
+
dialect: "postgres",
|
|
102
|
+
adapterVersion: POSTGRES_LIVE_VERIFIER_VERSION,
|
|
103
|
+
server,
|
|
104
|
+
async verify(request) {
|
|
105
|
+
if (!/^sha256:[a-f\d]{64}$/u.test(request.fingerprint)) {
|
|
106
|
+
throw new TypeError("PostgreSQL live verification requires a SHA-256 query fingerprint");
|
|
107
|
+
}
|
|
108
|
+
const pool = await acquirePool();
|
|
109
|
+
const client = await pool.connect();
|
|
110
|
+
const name = `typed_sql_${request.fingerprint.replace(/^sha256:/u, "").slice(0, 32)}`;
|
|
111
|
+
let prepared = false;
|
|
112
|
+
let evidence;
|
|
113
|
+
let failure;
|
|
114
|
+
try {
|
|
115
|
+
await client.query(`PREPARE ${name} AS ${request.sql}`);
|
|
116
|
+
prepared = true;
|
|
117
|
+
const major = Number.parseInt((await server()).version.split(".")[0] ?? "0", 10);
|
|
118
|
+
const metadata = await client.query(major >= 18
|
|
119
|
+
? `SELECT parameter_types::text[] AS "parameterTypes", result_types::text[] AS "resultTypes" FROM pg_prepared_statements WHERE name = '${name}'`
|
|
120
|
+
: `SELECT parameter_types::text[] AS "parameterTypes" FROM pg_prepared_statements WHERE name = '${name}'`);
|
|
121
|
+
const row = metadata.rows[0];
|
|
122
|
+
if (row === undefined)
|
|
123
|
+
throw new Error("Prepared statement metadata was not returned");
|
|
124
|
+
const policy = options.typePolicy ?? defaultPostgresTypePolicy;
|
|
125
|
+
const fields = (types) => (types ?? []).map((databaseType, offset) => ({
|
|
126
|
+
index: offset + 1,
|
|
127
|
+
databaseType,
|
|
128
|
+
...(isKnownPostgresType(databaseType, options.schema)
|
|
129
|
+
? { tsType: mapPostgresType(databaseType, policy, options.schema) }
|
|
130
|
+
: {}),
|
|
131
|
+
}));
|
|
132
|
+
evidence = {
|
|
133
|
+
parameters: fields(row.parameterTypes),
|
|
134
|
+
columns: fields(row.resultTypes),
|
|
135
|
+
...(major >= 18 ? {} : { unavailable: ["columns"] }),
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
failure = error;
|
|
140
|
+
}
|
|
141
|
+
let cleanupFailure;
|
|
142
|
+
if (prepared) {
|
|
143
|
+
try {
|
|
144
|
+
await client.query(`DEALLOCATE ${name}`);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
cleanupFailure = error;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
client.release(cleanupFailure instanceof Error ? cleanupFailure : cleanupFailure === undefined ? undefined : true);
|
|
151
|
+
if (failure !== undefined)
|
|
152
|
+
throw failure;
|
|
153
|
+
if (cleanupFailure !== undefined)
|
|
154
|
+
throw cleanupFailure;
|
|
155
|
+
if (evidence === undefined)
|
|
156
|
+
throw new Error("PostgreSQL verification produced no evidence");
|
|
157
|
+
return evidence;
|
|
158
|
+
},
|
|
159
|
+
async close() {
|
|
160
|
+
if (ownsPool && poolPromise !== undefined)
|
|
161
|
+
await (await poolPromise).end();
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
const POSTGRES_PLAN_INSPECTOR_VERSION = "postgres-explain-json-v1";
|
|
166
|
+
const postgresPlanSettings = [
|
|
167
|
+
"cpu_index_tuple_cost",
|
|
168
|
+
"cpu_operator_cost",
|
|
169
|
+
"cpu_tuple_cost",
|
|
170
|
+
"cursor_tuple_fraction",
|
|
171
|
+
"default_statistics_target",
|
|
172
|
+
"effective_cache_size",
|
|
173
|
+
"effective_io_concurrency",
|
|
174
|
+
"enable_bitmapscan",
|
|
175
|
+
"enable_gathermerge",
|
|
176
|
+
"enable_hashagg",
|
|
177
|
+
"enable_hashjoin",
|
|
178
|
+
"enable_incremental_sort",
|
|
179
|
+
"enable_indexonlyscan",
|
|
180
|
+
"enable_indexscan",
|
|
181
|
+
"enable_material",
|
|
182
|
+
"enable_memoize",
|
|
183
|
+
"enable_mergejoin",
|
|
184
|
+
"enable_nestloop",
|
|
185
|
+
"enable_parallel_append",
|
|
186
|
+
"enable_parallel_hash",
|
|
187
|
+
"enable_partition_pruning",
|
|
188
|
+
"enable_partitionwise_aggregate",
|
|
189
|
+
"enable_partitionwise_join",
|
|
190
|
+
"enable_seqscan",
|
|
191
|
+
"enable_sort",
|
|
192
|
+
"enable_tidscan",
|
|
193
|
+
"jit",
|
|
194
|
+
"max_parallel_workers_per_gather",
|
|
195
|
+
"min_parallel_index_scan_size",
|
|
196
|
+
"min_parallel_table_scan_size",
|
|
197
|
+
"parallel_setup_cost",
|
|
198
|
+
"parallel_tuple_cost",
|
|
199
|
+
"plan_cache_mode",
|
|
200
|
+
"random_page_cost",
|
|
201
|
+
"work_mem",
|
|
202
|
+
];
|
|
203
|
+
function postgresPlan(value) {
|
|
204
|
+
const parsed = typeof value === "string" ? JSON.parse(value) : value;
|
|
205
|
+
const document = Array.isArray(parsed) ? parsed[0] : undefined;
|
|
206
|
+
const root = typeof document === "object" && document !== null && "Plan" in document
|
|
207
|
+
? document.Plan
|
|
208
|
+
: undefined;
|
|
209
|
+
if (typeof root !== "object" || root === null || Array.isArray(root)) {
|
|
210
|
+
throw new TypeError("PostgreSQL returned an unsupported JSON plan");
|
|
211
|
+
}
|
|
212
|
+
const rootRecord = root;
|
|
213
|
+
const nodes = [];
|
|
214
|
+
const visit = (value) => {
|
|
215
|
+
const kind = value["Node Type"];
|
|
216
|
+
if (typeof kind !== "string" || kind.length === 0)
|
|
217
|
+
throw new TypeError("PostgreSQL plan node has no type");
|
|
218
|
+
const relation = value["Relation Name"];
|
|
219
|
+
const index = value["Index Name"];
|
|
220
|
+
const estimatedRows = value["Plan Rows"];
|
|
221
|
+
const estimatedCost = value["Total Cost"];
|
|
222
|
+
nodes.push({
|
|
223
|
+
kind,
|
|
224
|
+
...(typeof relation === "string" ? { relation } : {}),
|
|
225
|
+
...(typeof index === "string" ? { index } : {}),
|
|
226
|
+
...(typeof estimatedRows === "number" ? { estimatedRows } : {}),
|
|
227
|
+
...(typeof estimatedCost === "number" ? { estimatedCost } : {}),
|
|
228
|
+
});
|
|
229
|
+
const children = value.Plans;
|
|
230
|
+
if (Array.isArray(children)) {
|
|
231
|
+
for (const child of children) {
|
|
232
|
+
if (typeof child !== "object" || child === null || Array.isArray(child)) {
|
|
233
|
+
throw new TypeError("PostgreSQL plan child is invalid");
|
|
234
|
+
}
|
|
235
|
+
visit(child);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
visit(rootRecord);
|
|
240
|
+
return {
|
|
241
|
+
...(typeof rootRecord["Total Cost"] === "number" ? { totalCost: rootRecord["Total Cost"] } : {}),
|
|
242
|
+
...(typeof rootRecord["Plan Rows"] === "number" ? { estimatedRows: rootRecord["Plan Rows"] } : {}),
|
|
243
|
+
nodes,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
/** Creates a lazy, non-executing adapter over PostgreSQL structured EXPLAIN. */
|
|
247
|
+
export function createPgPlanInspector(options) {
|
|
248
|
+
const ownsPool = options.pool === undefined;
|
|
249
|
+
let poolPromise;
|
|
250
|
+
let environmentPromise;
|
|
251
|
+
const acquirePool = () => {
|
|
252
|
+
poolPromise ??= (async () => {
|
|
253
|
+
if (options.pool !== undefined)
|
|
254
|
+
return options.pool;
|
|
255
|
+
if (options.connectionString === undefined) {
|
|
256
|
+
throw new TypeError("PostgreSQL plan capture requires connectionString or pool");
|
|
257
|
+
}
|
|
258
|
+
const value = await connectionString(options.connectionString);
|
|
259
|
+
const { Pool } = await loadPgDriver(options.driverImporter);
|
|
260
|
+
return new Pool({ ...options.poolConfig, connectionString: value });
|
|
261
|
+
})();
|
|
262
|
+
return poolPromise;
|
|
263
|
+
};
|
|
264
|
+
return {
|
|
265
|
+
dialect: "postgres",
|
|
266
|
+
adapterVersion: POSTGRES_PLAN_INSPECTOR_VERSION,
|
|
267
|
+
parameterMode: "value-free",
|
|
268
|
+
async environment() {
|
|
269
|
+
environmentPromise ??= (async () => {
|
|
270
|
+
const pool = await acquirePool();
|
|
271
|
+
const versionResult = await pool.query("SELECT current_setting('server_version') AS version");
|
|
272
|
+
const settingResult = await pool.query("SELECT name, setting FROM pg_settings WHERE name = ANY($1::text[]) ORDER BY name", [postgresPlanSettings]);
|
|
273
|
+
const statistics = await pool.query("SELECT schemaname, relname, n_live_tup::text, n_dead_tup::text, COALESCE(last_analyze::text, '') AS last_analyze, COALESCE(last_autoanalyze::text, '') AS last_autoanalyze FROM pg_stat_all_tables WHERE schemaname NOT IN ('pg_catalog', 'information_schema') ORDER BY schemaname, relname");
|
|
274
|
+
return {
|
|
275
|
+
version: versionResult.rows[0]?.version ?? "unknown",
|
|
276
|
+
settings: Object.fromEntries(settingResult.rows.map((row) => [row.name, row.setting])),
|
|
277
|
+
statisticsFingerprint: `sha256:${createHash("sha256").update(JSON.stringify(statistics.rows)).digest("hex")}`,
|
|
278
|
+
};
|
|
279
|
+
})();
|
|
280
|
+
return environmentPromise;
|
|
281
|
+
},
|
|
282
|
+
async capture(request) {
|
|
283
|
+
if (!/^sha256:[a-f\d]{64}$/u.test(request.fingerprint)) {
|
|
284
|
+
throw new TypeError("PostgreSQL plan capture requires a SHA-256 query fingerprint");
|
|
285
|
+
}
|
|
286
|
+
if (request.values !== undefined && request.values.length !== request.parameterCount) {
|
|
287
|
+
throw new TypeError("PostgreSQL plan samples do not match the parameter count");
|
|
288
|
+
}
|
|
289
|
+
const client = await (await acquirePool()).connect();
|
|
290
|
+
let failure;
|
|
291
|
+
try {
|
|
292
|
+
const prefix = request.values === undefined ? "EXPLAIN (GENERIC_PLAN TRUE, FORMAT JSON) " : "EXPLAIN (FORMAT JSON) ";
|
|
293
|
+
const result = await client.query(`${prefix}${request.sql}`, request.values);
|
|
294
|
+
return postgresPlan(result.rows[0]?.["QUERY PLAN"]);
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
failure = error;
|
|
298
|
+
throw error;
|
|
299
|
+
}
|
|
300
|
+
finally {
|
|
301
|
+
client.release(failure instanceof Error ? failure : failure === undefined ? undefined : true);
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
async close() {
|
|
305
|
+
if (ownsPool && poolPromise !== undefined)
|
|
306
|
+
await (await poolPromise).end();
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
}
|
|
47
310
|
function validatePoolConfig(poolConfig) {
|
|
48
311
|
if (poolConfig !== undefined && "query_timeout" in poolConfig)
|
|
49
312
|
throw new TypeError(queryTimeoutError);
|
|
@@ -73,7 +336,7 @@ function queryConfig(config) {
|
|
|
73
336
|
...(config.types === undefined ? {} : { types: config.types }),
|
|
74
337
|
};
|
|
75
338
|
}
|
|
76
|
-
export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter) {
|
|
339
|
+
export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter, copyStreamsImporter = defaultPgCopyStreamsImporter) {
|
|
77
340
|
const options = pool.options;
|
|
78
341
|
if (options !== undefined && "query_timeout" in options)
|
|
79
342
|
throw new TypeError(queryTimeoutError);
|
|
@@ -84,6 +347,11 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter) {
|
|
|
84
347
|
cursorConstructorPromise ??= loadPgCursorDriver(cursorImporter);
|
|
85
348
|
return cursorConstructorPromise;
|
|
86
349
|
};
|
|
350
|
+
let copyStreamsPromise;
|
|
351
|
+
const loadCopyStreams = () => {
|
|
352
|
+
copyStreamsPromise ??= loadPgCopyStreams(copyStreamsImporter);
|
|
353
|
+
return copyStreamsPromise;
|
|
354
|
+
};
|
|
87
355
|
const wrapClient = (client) => {
|
|
88
356
|
let fatalError;
|
|
89
357
|
let rejectFatal;
|
|
@@ -131,6 +399,77 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter) {
|
|
|
131
399
|
},
|
|
132
400
|
};
|
|
133
401
|
},
|
|
402
|
+
async openCopyFrom(statement) {
|
|
403
|
+
const copy = await loadCopyStreams();
|
|
404
|
+
const nativeQuery = client.query.bind(client);
|
|
405
|
+
const writable = nativeQuery(copy.from(statement));
|
|
406
|
+
const terminal = finished(writable);
|
|
407
|
+
void terminal.catch(() => undefined);
|
|
408
|
+
return {
|
|
409
|
+
async write(chunk) {
|
|
410
|
+
if (!writable.write(chunk))
|
|
411
|
+
await once(writable, "drain");
|
|
412
|
+
},
|
|
413
|
+
async finish() {
|
|
414
|
+
writable.end();
|
|
415
|
+
await terminal;
|
|
416
|
+
},
|
|
417
|
+
async abort(error) {
|
|
418
|
+
writable.destroy(error instanceof Error ? error : new Error("PostgreSQL COPY FROM aborted"));
|
|
419
|
+
await terminal.catch(() => undefined);
|
|
420
|
+
},
|
|
421
|
+
};
|
|
422
|
+
},
|
|
423
|
+
async openCopyTo(statement) {
|
|
424
|
+
const copy = await loadCopyStreams();
|
|
425
|
+
const nativeQuery = client.query.bind(client);
|
|
426
|
+
const readable = nativeQuery(copy.to(statement));
|
|
427
|
+
const terminal = finished(readable);
|
|
428
|
+
void terminal.catch(() => undefined);
|
|
429
|
+
const iterator = readable[Symbol.asyncIterator]();
|
|
430
|
+
let complete = false;
|
|
431
|
+
const close = async () => {
|
|
432
|
+
const early = !complete;
|
|
433
|
+
complete = true;
|
|
434
|
+
if (early)
|
|
435
|
+
readable.destroy();
|
|
436
|
+
if (early)
|
|
437
|
+
await terminal.catch(() => undefined);
|
|
438
|
+
else
|
|
439
|
+
await terminal;
|
|
440
|
+
};
|
|
441
|
+
const source = {
|
|
442
|
+
[Symbol.asyncIterator]() {
|
|
443
|
+
return source;
|
|
444
|
+
},
|
|
445
|
+
async next() {
|
|
446
|
+
const result = await iterator.next();
|
|
447
|
+
if (result.done === true) {
|
|
448
|
+
complete = true;
|
|
449
|
+
return { done: true, value: undefined };
|
|
450
|
+
}
|
|
451
|
+
const value = result.value;
|
|
452
|
+
return {
|
|
453
|
+
done: false,
|
|
454
|
+
value: value instanceof Uint8Array ? value : Buffer.from(value),
|
|
455
|
+
};
|
|
456
|
+
},
|
|
457
|
+
async return() {
|
|
458
|
+
await close();
|
|
459
|
+
return { done: true, value: undefined };
|
|
460
|
+
},
|
|
461
|
+
close,
|
|
462
|
+
async abort(error) {
|
|
463
|
+
readable.destroy(error instanceof Error ? error : new Error("PostgreSQL COPY TO aborted"));
|
|
464
|
+
await terminal.catch(() => undefined);
|
|
465
|
+
complete = true;
|
|
466
|
+
},
|
|
467
|
+
async [Symbol.asyncDispose]() {
|
|
468
|
+
await close();
|
|
469
|
+
},
|
|
470
|
+
};
|
|
471
|
+
return source;
|
|
472
|
+
},
|
|
134
473
|
release(error) {
|
|
135
474
|
client.removeListener("error", onError);
|
|
136
475
|
client.removeListener("end", onEnd);
|
|
@@ -139,6 +478,7 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter) {
|
|
|
139
478
|
};
|
|
140
479
|
};
|
|
141
480
|
return {
|
|
481
|
+
executionCapabilities: Object.freeze({ cancellation: true, deadlines: true }),
|
|
142
482
|
async query(config) {
|
|
143
483
|
const result = typeof config === "string"
|
|
144
484
|
? await pool.query(config)
|
|
@@ -148,6 +488,9 @@ export function adaptPgPool(pool, cursorImporter = defaultPgCursorImporter) {
|
|
|
148
488
|
async ensureCursor() {
|
|
149
489
|
await loadCursor();
|
|
150
490
|
},
|
|
491
|
+
async ensureCopy() {
|
|
492
|
+
await loadCopyStreams();
|
|
493
|
+
},
|
|
151
494
|
async connect() {
|
|
152
495
|
return wrapClient(await pool.connect());
|
|
153
496
|
},
|
|
@@ -164,11 +507,12 @@ export async function createPgDatabase(options) {
|
|
|
164
507
|
const { Pool } = driver;
|
|
165
508
|
const pool = new Pool({ ...options.poolConfig, connectionString: resolvedConnectionString });
|
|
166
509
|
return createPostgresDatabase({
|
|
167
|
-
pool: adaptPgPool(pool, options.cursorImporter),
|
|
510
|
+
pool: adaptPgPool(pool, options.cursorImporter, options.copyStreamsImporter),
|
|
168
511
|
ownsPool: true,
|
|
169
512
|
fallbackTypeParsers: driver.types,
|
|
170
513
|
...(options.typePolicy === undefined ? {} : { typePolicy: options.typePolicy }),
|
|
171
514
|
...(options.decimal === undefined ? {} : { decimal: options.decimal }),
|
|
515
|
+
...(options.observer === undefined ? {} : { observer: options.observer }),
|
|
172
516
|
});
|
|
173
517
|
}
|
|
174
518
|
export function pg(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.js","sourceRoot":"","sources":["../../../../src/pg.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pg.js","sourceRoot":"","sources":["../../../../src/pg.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,7 +81,8 @@ export declare const postgresCatalogQueries: {
|
|
|
81
81
|
ORDER BY position
|
|
82
82
|
) AS argument_types,
|
|
83
83
|
format_type(p.prorettype, NULL) AS database_return_type,
|
|
84
|
-
p.proretset AS set_returning
|
|
84
|
+
p.proretset AS set_returning,
|
|
85
|
+
p.provolatile AS volatility
|
|
85
86
|
FROM pg_catalog.pg_proc AS p
|
|
86
87
|
JOIN pg_catalog.pg_namespace AS n ON n.oid = p.pronamespace
|
|
87
88
|
WHERE p.prokind = 'f'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,WAAW,EACX,cAAc,EACd,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA8C,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEvG,MAAM,WAAW,mBAAmB,CAAC,GAAG;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;IACpE,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAChD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE;QAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,KAAK,yBAAyB,CAAC;CACjG;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEzE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;CAC1C;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,WAAW,EACX,cAAc,EACd,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA8C,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEvG,MAAM,WAAW,mBAAmB,CAAC,GAAG;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,2BAA4B,SAAQ,iBAAiB;IACpE,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,IAAI,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAChD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE;QAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,KAAK,yBAAyB,CAAC;CACjG;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAEzE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC;CAC1C;AAsCD,eAAO,MAAM,sBAAsB;aACjC,OAAO,EAAE,4DAA4D;aACrE,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;GAqBR;aACD,KAAK,EAAE;;;;;;;;GAQN;aACD,OAAO,EAAE;;;;;;;;;;;;GAYR;aACD,SAAS,EAAE;;;;;;;;;;;;;;;;;;GAkBV;CACO,CAAC;AAWX,wBAAsB,kBAAkB,CACtC,QAAQ,GAAE,sBAA4F,GACrG,OAAO,CAAC,oBAAoB,CAAC,CAY/B;AA0CD,qBAAa,sBAAuB,YAAW,cAAc;;IAG3D,YAAY,OAAO,GAAE,6BAAkC,EAEtD;IAEK,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CA8E5D;CACF;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,cAAc,CAAC,CAEzB"}
|
|
@@ -55,7 +55,8 @@ export const postgresCatalogQueries = {
|
|
|
55
55
|
ORDER BY position
|
|
56
56
|
) AS argument_types,
|
|
57
57
|
format_type(p.prorettype, NULL) AS database_return_type,
|
|
58
|
-
p.proretset AS set_returning
|
|
58
|
+
p.proretset AS set_returning,
|
|
59
|
+
p.provolatile AS volatility
|
|
59
60
|
FROM pg_catalog.pg_proc AS p
|
|
60
61
|
JOIN pg_catalog.pg_namespace AS n ON n.oid = p.pronamespace
|
|
61
62
|
WHERE p.prokind = 'f'
|
|
@@ -184,6 +185,7 @@ export class PostgresSchemaProvider {
|
|
|
184
185
|
returnType: mapPostgresType(row.database_return_type, policy, schemaForFunctions),
|
|
185
186
|
nullable: true,
|
|
186
187
|
...(row.set_returning ? { setReturning: true } : {}),
|
|
188
|
+
volatility: row.volatility === "i" ? "immutable" : row.volatility === "s" ? "stable" : "volatile",
|
|
187
189
|
};
|
|
188
190
|
}
|
|
189
191
|
const version = versionResult.rows[0]?.server_version;
|