@lumifai/harness-tool-pack-postgres 0.0.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.
Files changed (48) hide show
  1. package/README.md +84 -0
  2. package/dist/cast-types.d.ts +1 -0
  3. package/dist/cast-types.js +24 -0
  4. package/dist/cast-types.js.map +1 -0
  5. package/dist/catalog-cache.d.ts +9 -0
  6. package/dist/catalog-cache.js +49 -0
  7. package/dist/catalog-cache.js.map +1 -0
  8. package/dist/catalog.d.ts +45 -0
  9. package/dist/catalog.js +221 -0
  10. package/dist/catalog.js.map +1 -0
  11. package/dist/constants.d.ts +45 -0
  12. package/dist/constants.js +94 -0
  13. package/dist/constants.js.map +1 -0
  14. package/dist/errors.d.ts +18 -0
  15. package/dist/errors.js +29 -0
  16. package/dist/errors.js.map +1 -0
  17. package/dist/identifiers.d.ts +1 -0
  18. package/dist/identifiers.js +21 -0
  19. package/dist/identifiers.js.map +1 -0
  20. package/dist/index.d.ts +7 -0
  21. package/dist/index.js +22 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/insert-compiler.d.ts +21 -0
  24. package/dist/insert-compiler.js +126 -0
  25. package/dist/insert-compiler.js.map +1 -0
  26. package/dist/insert-executor.d.ts +25 -0
  27. package/dist/insert-executor.js +101 -0
  28. package/dist/insert-executor.js.map +1 -0
  29. package/dist/insert-language.d.ts +56 -0
  30. package/dist/insert-language.js +218 -0
  31. package/dist/insert-language.js.map +1 -0
  32. package/dist/postgres.d.ts +39 -0
  33. package/dist/postgres.js +503 -0
  34. package/dist/postgres.js.map +1 -0
  35. package/dist/query-compiler.d.ts +16 -0
  36. package/dist/query-compiler.js +504 -0
  37. package/dist/query-compiler.js.map +1 -0
  38. package/dist/query-executor.d.ts +27 -0
  39. package/dist/query-executor.js +223 -0
  40. package/dist/query-executor.js.map +1 -0
  41. package/dist/query-language.d.ts +208 -0
  42. package/dist/query-language.js +500 -0
  43. package/dist/query-language.js.map +1 -0
  44. package/dist/workspace-file.d.ts +6 -0
  45. package/dist/workspace-file.js +47 -0
  46. package/dist/workspace-file.js.map +1 -0
  47. package/package.json +43 -0
  48. package/skills/postgres/SKILL.md +144 -0
@@ -0,0 +1,504 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.compileQueryPlan = compileQueryPlan;
7
+ exports.compilePreviewSelect = compilePreviewSelect;
8
+ const pg_sql2_1 = __importDefault(require("pg-sql2"));
9
+ const catalog_1 = require("./catalog");
10
+ const cast_types_1 = require("./cast-types");
11
+ const constants_1 = require("./constants");
12
+ const errors_1 = require("./errors");
13
+ const identifiers_1 = require("./identifiers");
14
+ const query_language_1 = require("./query-language");
15
+ class QueryCompiler {
16
+ options;
17
+ aliasBindings = new Map();
18
+ cteNames = new Set();
19
+ referencedRelations = new Set();
20
+ constructor(options) {
21
+ this.options = options;
22
+ }
23
+ getReferencedRelations() {
24
+ return Array.from(this.referencedRelations).sort();
25
+ }
26
+ compilePlan(plan) {
27
+ const fragment = this.compileQueryBody(plan.query);
28
+ const limited = this.applyLimitOffset(fragment, plan);
29
+ const compiled = pg_sql2_1.default.compile(limited);
30
+ const fingerprint = hashFingerprint(compiled.text, this.referencedRelations);
31
+ return {
32
+ text: compiled.text,
33
+ values: compiled.values,
34
+ fingerprint,
35
+ referencedRelations: this.getReferencedRelations(),
36
+ };
37
+ }
38
+ compileSelectBody(body) {
39
+ return this.compileSelectBodyInternal(body);
40
+ }
41
+ compileQueryBody(body) {
42
+ if ((0, query_language_1.isSetOpBody)(body)) {
43
+ return this.compileSetOperation(body);
44
+ }
45
+ return this.compileSelectBodyInternal(body);
46
+ }
47
+ compileSetOperation(body) {
48
+ const left = this.withChildScope(() => this.compileSelectBodyInternal(body.left));
49
+ const right = this.withChildScope(() => this.compileSelectBodyInternal(body.right));
50
+ switch (body.op) {
51
+ case 'union':
52
+ return pg_sql2_1.default.query `(${left}) UNION (${right})`;
53
+ case 'union_all':
54
+ return pg_sql2_1.default.query `(${left}) UNION ALL (${right})`;
55
+ case 'intersect':
56
+ return pg_sql2_1.default.query `(${left}) INTERSECT (${right})`;
57
+ case 'except':
58
+ return pg_sql2_1.default.query `(${left}) EXCEPT (${right})`;
59
+ default:
60
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', 'Unsupported set operation.');
61
+ }
62
+ }
63
+ compileSelectBodyInternal(body, options) {
64
+ if (!options?.correlated) {
65
+ this.aliasBindings = new Map();
66
+ }
67
+ this.cteNames = new Set(this.cteNames);
68
+ const cteFragments = [];
69
+ for (const cte of body.with ?? []) {
70
+ (0, identifiers_1.assertIdentifier)(cte.name, 'with.name');
71
+ const compiled = this.withChildScope(() => this.compileSelectBodyInternal(cte.query));
72
+ cteFragments.push(pg_sql2_1.default.query `${pg_sql2_1.default.identifier(cte.name)} AS (${compiled})`);
73
+ this.cteNames.add(cte.name);
74
+ }
75
+ const ctes = cteFragments.length > 0 ? pg_sql2_1.default.query `WITH ${pg_sql2_1.default.join(cteFragments, ', ')} ` : pg_sql2_1.default.query ``;
76
+ this.registerRelation(body.from);
77
+ for (const join of body.joins ?? []) {
78
+ this.registerRelation(join.relation);
79
+ }
80
+ const selectList = pg_sql2_1.default.join(body.select.flatMap((item) => this.compileSelectItem(item)), ', ');
81
+ const fromClause = this.compileFrom(body.from);
82
+ const joinClauses = body.joins && body.joins.length > 0
83
+ ? pg_sql2_1.default.query ` ${pg_sql2_1.default.join(body.joins.map((join) => this.compileJoin(join)), ' ')}`
84
+ : pg_sql2_1.default.query ``;
85
+ const whereClause = this.compileWhere(body.where);
86
+ const groupByClause = body.group_by && body.group_by.length > 0
87
+ ? pg_sql2_1.default.query ` GROUP BY ${pg_sql2_1.default.join(body.group_by.map((expr) => this.compileExpr(expr)), ', ')}`
88
+ : pg_sql2_1.default.query ``;
89
+ const havingClause = body.having
90
+ ? pg_sql2_1.default.query ` HAVING ${this.compileExpr(body.having)}`
91
+ : pg_sql2_1.default.query ``;
92
+ const orderByClause = body.order_by && body.order_by.length > 0
93
+ ? pg_sql2_1.default.query ` ORDER BY ${pg_sql2_1.default.join(body.order_by.map((item) => this.compileOrderBy(item)), ', ')}`
94
+ : pg_sql2_1.default.query ``;
95
+ const distinctKeyword = body.distinct ? pg_sql2_1.default.query `DISTINCT ` : pg_sql2_1.default.query ``;
96
+ return pg_sql2_1.default.query `${ctes}SELECT ${distinctKeyword}${selectList} FROM ${fromClause}${joinClauses}${whereClause}${groupByClause}${havingClause}${orderByClause}`;
97
+ }
98
+ withChildScope(run) {
99
+ const previousAliases = this.aliasBindings;
100
+ const previousCtes = this.cteNames;
101
+ this.aliasBindings = new Map(previousAliases);
102
+ this.cteNames = new Set(previousCtes);
103
+ try {
104
+ return run();
105
+ }
106
+ finally {
107
+ this.aliasBindings = previousAliases;
108
+ this.cteNames = previousCtes;
109
+ }
110
+ }
111
+ registerRelation(relation) {
112
+ const alias = relation.alias ?? relation.name;
113
+ (0, identifiers_1.assertIdentifier)(alias, 'relation.alias');
114
+ if (this.aliasBindings.has(alias)) {
115
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', `Duplicate table alias "${alias}".`, {
116
+ path: 'relation.alias',
117
+ hint: 'Give each relation in the query a unique alias.',
118
+ });
119
+ }
120
+ let binding;
121
+ if (relation.schema === undefined) {
122
+ if (!this.cteNames.has(relation.name)) {
123
+ throw new errors_1.PostgresToolError('UNKNOWN_RELATION', `Unknown relation "${relation.name}". Provide a schema or define it as a CTE.`, { path: `from.${relation.name}` });
124
+ }
125
+ binding = { kind: 'cte', name: relation.name, alias };
126
+ }
127
+ else {
128
+ const catalogRelation = (0, catalog_1.getCatalogRelation)(this.options.catalog, relation.schema, relation.name);
129
+ if (!catalogRelation) {
130
+ throw new errors_1.PostgresToolError('UNKNOWN_RELATION', `Unknown relation ${relation.schema}.${relation.name}.`, { path: `from ${relation.schema}.${relation.name}` });
131
+ }
132
+ binding = {
133
+ kind: 'relation',
134
+ schema: relation.schema,
135
+ relation: relation.name,
136
+ alias,
137
+ };
138
+ this.referencedRelations.add(`${relation.schema}.${relation.name}`);
139
+ }
140
+ this.aliasBindings.set(alias, binding);
141
+ return binding;
142
+ }
143
+ compileFrom(relation) {
144
+ const table = relation.schema === undefined
145
+ ? pg_sql2_1.default.identifier(relation.name)
146
+ : pg_sql2_1.default.identifier(relation.schema, relation.name);
147
+ if (relation.alias && relation.alias !== relation.name) {
148
+ return pg_sql2_1.default.query `${table} AS ${pg_sql2_1.default.identifier(relation.alias)}`;
149
+ }
150
+ return table;
151
+ }
152
+ compileJoin(join) {
153
+ const relation = this.compileFrom(join.relation);
154
+ const on = this.compileExpr(join.on);
155
+ switch (join.type) {
156
+ case 'inner':
157
+ return pg_sql2_1.default.query `INNER JOIN ${relation} ON ${on}`;
158
+ case 'left':
159
+ return pg_sql2_1.default.query `LEFT JOIN ${relation} ON ${on}`;
160
+ case 'right':
161
+ return pg_sql2_1.default.query `RIGHT JOIN ${relation} ON ${on}`;
162
+ case 'full':
163
+ return pg_sql2_1.default.query `FULL JOIN ${relation} ON ${on}`;
164
+ default:
165
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', 'Unsupported join type.');
166
+ }
167
+ }
168
+ compileSelectItem(item) {
169
+ if (item.kind === 'star') {
170
+ return this.expandStar(item.table);
171
+ }
172
+ const compiled = this.compileExpr(item.expr);
173
+ if (item.alias) {
174
+ return [pg_sql2_1.default.query `${compiled} AS ${pg_sql2_1.default.identifier(item.alias)}`];
175
+ }
176
+ return [compiled];
177
+ }
178
+ /**
179
+ * Stars are expanded to the relation's catalog columns so the projection is
180
+ * a stable, explicit column list rather than a raw `*`.
181
+ */
182
+ expandStar(table) {
183
+ const bindings = table
184
+ ? [this.requireBinding(table, `select.${table}.*`)]
185
+ : Array.from(this.aliasBindings.values());
186
+ const fragments = [];
187
+ for (const binding of bindings) {
188
+ if (binding.kind === 'cte') {
189
+ fragments.push(pg_sql2_1.default.query `${pg_sql2_1.default.identifier(binding.alias)}.*`);
190
+ continue;
191
+ }
192
+ const catalogRelation = (0, catalog_1.getCatalogRelation)(this.options.catalog, binding.schema, binding.relation);
193
+ if (!catalogRelation) {
194
+ throw new errors_1.PostgresToolError('UNKNOWN_RELATION', `Unknown relation ${binding.schema}.${binding.relation}.`);
195
+ }
196
+ for (const column of catalogRelation.columns) {
197
+ fragments.push(pg_sql2_1.default.identifier(binding.alias, column.name));
198
+ }
199
+ }
200
+ return fragments;
201
+ }
202
+ requireBinding(alias, path) {
203
+ const binding = this.aliasBindings.get(alias);
204
+ if (!binding) {
205
+ throw new errors_1.PostgresToolError('UNKNOWN_COLUMN', `Unknown table alias "${alias}".`, {
206
+ path,
207
+ });
208
+ }
209
+ return binding;
210
+ }
211
+ compileOrderBy(item) {
212
+ const direction = item.direction === 'desc'
213
+ ? pg_sql2_1.default.query ` DESC`
214
+ : item.direction === 'asc'
215
+ ? pg_sql2_1.default.query ` ASC`
216
+ : pg_sql2_1.default.query ``;
217
+ const nulls = item.nulls === 'first'
218
+ ? pg_sql2_1.default.query ` NULLS FIRST`
219
+ : item.nulls === 'last'
220
+ ? pg_sql2_1.default.query ` NULLS LAST`
221
+ : pg_sql2_1.default.query ``;
222
+ return pg_sql2_1.default.query `${this.compileExpr(item.expr)}${direction}${nulls}`;
223
+ }
224
+ compileWhere(userWhere) {
225
+ const terms = [];
226
+ if (userWhere) {
227
+ terms.push(userWhere);
228
+ }
229
+ if (terms.length === 0) {
230
+ return pg_sql2_1.default.query ``;
231
+ }
232
+ const combined = terms.length === 1
233
+ ? terms[0]
234
+ : {
235
+ kind: 'logical',
236
+ op: 'and',
237
+ terms,
238
+ };
239
+ return pg_sql2_1.default.query ` WHERE ${this.compileExpr(combined)}`;
240
+ }
241
+ compileExpr(expr) {
242
+ switch (expr.kind) {
243
+ case 'literal':
244
+ return pg_sql2_1.default.value(expr.value);
245
+ case 'column':
246
+ return this.compileColumnRef(expr.table, expr.column);
247
+ case 'comparison':
248
+ return this.compileComparison(expr.op, expr.left, expr.right);
249
+ case 'logical':
250
+ return pg_sql2_1.default.query `(${pg_sql2_1.default.join(expr.terms.map((term) => this.compileExpr(term)), expr.op === 'and' ? ' AND ' : ' OR ')})`;
251
+ case 'not':
252
+ return pg_sql2_1.default.query `NOT (${this.compileExpr(expr.term)})`;
253
+ case 'is_null': {
254
+ const base = pg_sql2_1.default.query `${this.compileExpr(expr.expr)} IS NULL`;
255
+ return expr.negated ? pg_sql2_1.default.query `NOT (${base})` : base;
256
+ }
257
+ case 'between': {
258
+ const base = pg_sql2_1.default.query `${this.compileExpr(expr.expr)} BETWEEN ${this.compileExpr(expr.lower)} AND ${this.compileExpr(expr.upper)}`;
259
+ return expr.negated ? pg_sql2_1.default.query `NOT (${base})` : base;
260
+ }
261
+ case 'in_list': {
262
+ const base = pg_sql2_1.default.query `${this.compileExpr(expr.expr)} IN (${pg_sql2_1.default.join(expr.values.map((value) => pg_sql2_1.default.value(value)), ', ')})`;
263
+ return expr.negated ? pg_sql2_1.default.query `NOT (${base})` : base;
264
+ }
265
+ case 'in_subquery': {
266
+ const subquery = this.withChildScope(() => this.compileSelectBodyInternal(expr.query, { correlated: true }));
267
+ const base = pg_sql2_1.default.query `${this.compileExpr(expr.expr)} IN (${subquery})`;
268
+ return expr.negated ? pg_sql2_1.default.query `NOT (${base})` : base;
269
+ }
270
+ case 'exists': {
271
+ const subquery = this.withChildScope(() => this.compileSelectBodyInternal(expr.query, { correlated: true }));
272
+ const base = pg_sql2_1.default.query `EXISTS (${subquery})`;
273
+ return expr.negated ? pg_sql2_1.default.query `NOT (${base})` : base;
274
+ }
275
+ case 'scalar_subquery':
276
+ return pg_sql2_1.default.query `(${this.withChildScope(() => this.compileSelectBodyInternal(expr.query, { correlated: true }))})`;
277
+ case 'function':
278
+ return this.compileFunction(expr.name, expr.args);
279
+ case 'aggregate':
280
+ return this.compileAggregate(expr.fn, expr.arg, expr.distinct);
281
+ case 'case':
282
+ return pg_sql2_1.default.query `CASE ${pg_sql2_1.default.join(expr.clauses.map((clause) => pg_sql2_1.default.query `WHEN ${this.compileExpr(clause.when)} THEN ${this.compileExpr(clause.then)}`), ' ')}${expr.else ? pg_sql2_1.default.query ` ELSE ${this.compileExpr(expr.else)}` : pg_sql2_1.default.query ``} END`;
283
+ case 'cast':
284
+ (0, cast_types_1.assertAllowedCastType)(expr.to);
285
+ // Cast targets are validated against an allowlist before embedding as SQL keywords.
286
+ return pg_sql2_1.default.query `CAST(${this.compileExpr(expr.expr)} AS ${pg_sql2_1.default.raw(expr.to.toLowerCase())})`;
287
+ case 'window':
288
+ return this.compileWindow(expr);
289
+ default:
290
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', 'Unsupported expression kind.');
291
+ }
292
+ }
293
+ compileColumnRef(table, column) {
294
+ (0, identifiers_1.assertIdentifier)(column, 'column');
295
+ if (table) {
296
+ const binding = this.requireBinding(table, `column.${table}.${column}`);
297
+ return this.compileBoundColumn(binding, column, `column.${table}.${column}`);
298
+ }
299
+ if (this.aliasBindings.size === 1) {
300
+ const binding = Array.from(this.aliasBindings.values())[0];
301
+ return this.compileBoundColumn(binding, column, `column.${column}`);
302
+ }
303
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', `Column "${column}" is ambiguous; qualify it with a table alias.`, { path: `column.${column}` });
304
+ }
305
+ compileBoundColumn(binding, column, path) {
306
+ if (binding.kind === 'cte') {
307
+ // CTE output columns are not in the catalog, so they cannot be validated here.
308
+ return pg_sql2_1.default.identifier(binding.alias, column);
309
+ }
310
+ this.assertCatalogColumn(binding.schema, binding.relation, column, path);
311
+ return pg_sql2_1.default.identifier(binding.alias, column);
312
+ }
313
+ assertCatalogColumn(schema, relation, column, path) {
314
+ const catalogRelation = (0, catalog_1.getCatalogRelation)(this.options.catalog, schema, relation);
315
+ if (!catalogRelation?.columns.some((entry) => entry.name === column)) {
316
+ throw new errors_1.PostgresToolError('UNKNOWN_COLUMN', `Unknown column ${schema}.${relation}.${column}.`, { path });
317
+ }
318
+ }
319
+ compileComparison(op, left, right) {
320
+ const leftSql = this.compileExpr(left);
321
+ const rightSql = this.compileExpr(right);
322
+ switch (op) {
323
+ case 'eq':
324
+ return pg_sql2_1.default.query `${leftSql} = ${rightSql}`;
325
+ case 'ne':
326
+ return pg_sql2_1.default.query `${leftSql} <> ${rightSql}`;
327
+ case 'lt':
328
+ return pg_sql2_1.default.query `${leftSql} < ${rightSql}`;
329
+ case 'lte':
330
+ return pg_sql2_1.default.query `${leftSql} <= ${rightSql}`;
331
+ case 'gt':
332
+ return pg_sql2_1.default.query `${leftSql} > ${rightSql}`;
333
+ case 'gte':
334
+ return pg_sql2_1.default.query `${leftSql} >= ${rightSql}`;
335
+ case 'like':
336
+ return pg_sql2_1.default.query `${leftSql} LIKE ${rightSql}`;
337
+ case 'ilike':
338
+ return pg_sql2_1.default.query `${leftSql} ILIKE ${rightSql}`;
339
+ default:
340
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', 'Unsupported comparison operator.');
341
+ }
342
+ }
343
+ compileFunction(name, args) {
344
+ const normalized = name.toLowerCase();
345
+ if (constants_1.NILADIC_KEYWORDS.has(normalized)) {
346
+ if (args.length > 0) {
347
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', `"${normalized}" does not accept arguments.`, { hint: 'Emit current_date / current_timestamp with an empty args array.' });
348
+ }
349
+ // Keywords, not callable functions — must not be quoted identifiers.
350
+ return pg_sql2_1.default.raw(normalized === 'current_date' ? 'CURRENT_DATE' : 'CURRENT_TIMESTAMP');
351
+ }
352
+ return pg_sql2_1.default.query `${this.compileFunctionName(name)}(${pg_sql2_1.default.join(args.map((arg) => this.compileExpr(arg)), ', ')})`;
353
+ }
354
+ compileAggregate(fn, arg, distinct) {
355
+ if ((0, query_language_1.isAggregateStarArg)(arg)) {
356
+ // Schema validation restricts star/omitted args to plain `count`.
357
+ if (fn !== 'count' || distinct) {
358
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', `Aggregate "${fn}" requires a column or expression argument.`);
359
+ }
360
+ if (arg?.table) {
361
+ this.requireBinding(arg.table, `aggregate.${arg.table}.*`);
362
+ return pg_sql2_1.default.query `COUNT(${pg_sql2_1.default.identifier(arg.table)}.*)`;
363
+ }
364
+ return pg_sql2_1.default.query `COUNT(*)`;
365
+ }
366
+ if (fn === 'count_distinct') {
367
+ return pg_sql2_1.default.query `COUNT(DISTINCT ${this.compileExpr(arg)})`;
368
+ }
369
+ const argSql = distinct ? pg_sql2_1.default.query `DISTINCT ${this.compileExpr(arg)}` : this.compileExpr(arg);
370
+ switch (fn) {
371
+ case 'count':
372
+ return pg_sql2_1.default.query `COUNT(${argSql})`;
373
+ case 'sum':
374
+ return pg_sql2_1.default.query `SUM(${argSql})`;
375
+ case 'avg':
376
+ return pg_sql2_1.default.query `AVG(${argSql})`;
377
+ case 'min':
378
+ return pg_sql2_1.default.query `MIN(${argSql})`;
379
+ case 'max':
380
+ return pg_sql2_1.default.query `MAX(${argSql})`;
381
+ default:
382
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', 'Unsupported aggregate function.');
383
+ }
384
+ }
385
+ compileWindow(expr) {
386
+ const partition = expr.partition_by && expr.partition_by.length > 0
387
+ ? pg_sql2_1.default.query `PARTITION BY ${pg_sql2_1.default.join(expr.partition_by.map((part) => this.compileExpr(part)), ', ')}`
388
+ : pg_sql2_1.default.query ``;
389
+ const order = expr.order_by && expr.order_by.length > 0
390
+ ? pg_sql2_1.default.query ` ORDER BY ${pg_sql2_1.default.join(expr.order_by.map((item) => this.compileOrderBy(item)), ', ')}`
391
+ : pg_sql2_1.default.query ``;
392
+ const over = pg_sql2_1.default.query ` OVER (${partition}${order})`;
393
+ const requireArg = () => {
394
+ if (!expr.arg) {
395
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', `Window function "${expr.fn}" requires an argument.`);
396
+ }
397
+ return this.compileExpr(expr.arg);
398
+ };
399
+ const forbidArg = () => {
400
+ if (expr.arg) {
401
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', `Window function "${expr.fn}" does not accept an argument.`);
402
+ }
403
+ };
404
+ switch (expr.fn) {
405
+ case 'row_number':
406
+ forbidArg();
407
+ return pg_sql2_1.default.query `ROW_NUMBER()${over}`;
408
+ case 'rank':
409
+ forbidArg();
410
+ return pg_sql2_1.default.query `RANK()${over}`;
411
+ case 'dense_rank':
412
+ forbidArg();
413
+ return pg_sql2_1.default.query `DENSE_RANK()${over}`;
414
+ case 'count':
415
+ return expr.arg
416
+ ? pg_sql2_1.default.query `COUNT(${this.compileExpr(expr.arg)})${over}`
417
+ : pg_sql2_1.default.query `COUNT(*)${over}`;
418
+ case 'sum':
419
+ return pg_sql2_1.default.query `SUM(${requireArg()})${over}`;
420
+ case 'avg':
421
+ return pg_sql2_1.default.query `AVG(${requireArg()})${over}`;
422
+ case 'min':
423
+ return pg_sql2_1.default.query `MIN(${requireArg()})${over}`;
424
+ case 'max':
425
+ return pg_sql2_1.default.query `MAX(${requireArg()})${over}`;
426
+ case 'lag':
427
+ return pg_sql2_1.default.query `LAG(${requireArg()})${over}`;
428
+ case 'lead':
429
+ return pg_sql2_1.default.query `LEAD(${requireArg()})${over}`;
430
+ default:
431
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', 'Unsupported window function.');
432
+ }
433
+ }
434
+ compileFunctionName(name) {
435
+ const normalized = name.toLowerCase();
436
+ if (constants_1.BUILTIN_FUNCTIONS.has(normalized)) {
437
+ return pg_sql2_1.default.identifier(normalized);
438
+ }
439
+ const allowedExtensions = this.options.allowedExtensionFunctions ?? new Set();
440
+ const parts = name.split('.');
441
+ if (parts.length !== 2) {
442
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', `Extension function "${name}" must be schema-qualified.`, {
443
+ hint: 'Use schema.function and allow the exact qualified name in allowedExtensionFunctions.',
444
+ });
445
+ }
446
+ if (!allowedExtensions.has(name)) {
447
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', `Function "${name}" is not allowed.`, {
448
+ hint: 'Use built-in functions or configure the exact schema-qualified name in allowedExtensionFunctions.',
449
+ });
450
+ }
451
+ (0, identifiers_1.assertIdentifier)(parts[0], 'function.schema');
452
+ (0, identifiers_1.assertIdentifier)(parts[1], 'function.name');
453
+ return pg_sql2_1.default.identifier(parts[0], parts[1]);
454
+ }
455
+ applyLimitOffset(fragment, plan) {
456
+ const limit = this.options.effectiveLimit;
457
+ const offset = this.options.effectiveOffset ?? plan.offset ?? 0;
458
+ if (offset > 0) {
459
+ return pg_sql2_1.default.query `${fragment} LIMIT ${pg_sql2_1.default.value(limit)} OFFSET ${pg_sql2_1.default.value(offset)}`;
460
+ }
461
+ return pg_sql2_1.default.query `${fragment} LIMIT ${pg_sql2_1.default.value(limit)}`;
462
+ }
463
+ }
464
+ function compileQueryPlan(plan, options) {
465
+ try {
466
+ return new QueryCompiler(options).compilePlan(plan);
467
+ }
468
+ catch (error) {
469
+ if (error instanceof errors_1.PostgresToolError) {
470
+ throw error;
471
+ }
472
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', error instanceof Error ? error.message : String(error), { cause: error });
473
+ }
474
+ }
475
+ function compilePreviewSelect(body, options) {
476
+ try {
477
+ const compiler = new QueryCompiler(options);
478
+ const fragment = compiler.compileSelectBody(body);
479
+ const limited = pg_sql2_1.default.query `${fragment} LIMIT ${pg_sql2_1.default.value(options.effectiveLimit)}`;
480
+ const compiled = pg_sql2_1.default.compile(limited);
481
+ const referencedRelations = compiler.getReferencedRelations();
482
+ return {
483
+ text: compiled.text,
484
+ values: compiled.values,
485
+ fingerprint: hashFingerprint(compiled.text, new Set(referencedRelations)),
486
+ referencedRelations,
487
+ };
488
+ }
489
+ catch (error) {
490
+ if (error instanceof errors_1.PostgresToolError) {
491
+ throw error;
492
+ }
493
+ throw new errors_1.PostgresToolError('COMPILATION_ERROR', error instanceof Error ? error.message : String(error), { cause: error });
494
+ }
495
+ }
496
+ function hashFingerprint(text, relations) {
497
+ const input = `${text}::${Array.from(relations).sort().join(',')}`;
498
+ let hash = 0;
499
+ for (let index = 0; index < input.length; index += 1) {
500
+ hash = (hash * 31 + input.charCodeAt(index)) >>> 0;
501
+ }
502
+ return hash.toString(16);
503
+ }
504
+ //# sourceMappingURL=query-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-compiler.js","sourceRoot":"","sources":["../src/query-compiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Client } from 'pg';
2
+ import { PostgresToolError } from './errors';
3
+ import type { QueryResult } from './query-language';
4
+ import type { CompiledQuery } from './query-compiler';
5
+ export type ExecutionOptions = {
6
+ statementTimeoutMs?: number;
7
+ lockTimeoutMs?: number;
8
+ idleInTransactionTimeoutMs?: number;
9
+ tempFileLimitKb?: number;
10
+ searchPath?: string[];
11
+ maxResultBytes?: number;
12
+ maxCellBytes?: number;
13
+ explainCostLimit?: number;
14
+ enableExplainCostGate?: boolean;
15
+ };
16
+ export type AuditRecord = {
17
+ fingerprint: string;
18
+ referencedRelations: string[];
19
+ durationMs: number;
20
+ returnedCount: number;
21
+ hasMore: boolean;
22
+ truncation: QueryResult['truncation'];
23
+ };
24
+ export type AuditCallback = (record: AuditRecord) => void;
25
+ export declare function executeReadQuery(client: Client, compiled: CompiledQuery, fetchLimit: number, options?: ExecutionOptions, audit?: AuditCallback): Promise<QueryResult>;
26
+ export declare function withReadOnlyTransaction<T>(client: Client, options: ExecutionOptions, run: () => Promise<T>): Promise<T>;
27
+ export declare function mapExecutionError(error: unknown): PostgresToolError;