@query-doctor/core 0.4.1 → 0.4.2

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 (63) hide show
  1. package/dist/index.cjs +1678 -2000
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +750 -0
  4. package/dist/index.d.cts.map +1 -0
  5. package/dist/index.d.mts +750 -0
  6. package/dist/index.d.mts.map +1 -0
  7. package/dist/index.mjs +1676 -24978
  8. package/dist/index.mjs.map +1 -1
  9. package/package.json +12 -11
  10. package/dist/explain/rewriter.d.ts +0 -4
  11. package/dist/explain/rewriter.d.ts.map +0 -1
  12. package/dist/explain/traverse.d.ts +0 -3
  13. package/dist/explain/traverse.d.ts.map +0 -1
  14. package/dist/explain/tree.d.ts +0 -73
  15. package/dist/explain/tree.d.ts.map +0 -1
  16. package/dist/index.d.ts +0 -10
  17. package/dist/index.d.ts.map +0 -1
  18. package/dist/index.js +0 -2352
  19. package/dist/index.js.map +0 -1
  20. package/dist/optimizer/genalgo.d.ts +0 -104
  21. package/dist/optimizer/genalgo.d.ts.map +0 -1
  22. package/dist/optimizer/genalgo.test.d.ts +0 -2
  23. package/dist/optimizer/genalgo.test.d.ts.map +0 -1
  24. package/dist/optimizer/index-candidate.d.ts +0 -23
  25. package/dist/optimizer/index-candidate.d.ts.map +0 -1
  26. package/dist/optimizer/index-shrinker.d.ts +0 -10
  27. package/dist/optimizer/index-shrinker.d.ts.map +0 -1
  28. package/dist/optimizer/index-shrinker.test.d.ts +0 -2
  29. package/dist/optimizer/index-shrinker.test.d.ts.map +0 -1
  30. package/dist/optimizer/index-tester.d.ts +0 -2
  31. package/dist/optimizer/index-tester.d.ts.map +0 -1
  32. package/dist/optimizer/pss-rewriter.d.ts +0 -11
  33. package/dist/optimizer/pss-rewriter.d.ts.map +0 -1
  34. package/dist/optimizer/pss-rewriter.test.d.ts +0 -2
  35. package/dist/optimizer/pss-rewriter.test.d.ts.map +0 -1
  36. package/dist/optimizer/statistics.d.ts +0 -360
  37. package/dist/optimizer/statistics.d.ts.map +0 -1
  38. package/dist/sql/analyzer.d.ts +0 -105
  39. package/dist/sql/analyzer.d.ts.map +0 -1
  40. package/dist/sql/analyzer.test.d.ts +0 -2
  41. package/dist/sql/analyzer.test.d.ts.map +0 -1
  42. package/dist/sql/builder.d.ts +0 -31
  43. package/dist/sql/builder.d.ts.map +0 -1
  44. package/dist/sql/builder.test.d.ts +0 -2
  45. package/dist/sql/builder.test.d.ts.map +0 -1
  46. package/dist/sql/database.d.ts +0 -84
  47. package/dist/sql/database.d.ts.map +0 -1
  48. package/dist/sql/indexes.d.ts +0 -8
  49. package/dist/sql/indexes.d.ts.map +0 -1
  50. package/dist/sql/nudges.d.ts +0 -16
  51. package/dist/sql/nudges.d.ts.map +0 -1
  52. package/dist/sql/permutations.d.ts +0 -10
  53. package/dist/sql/permutations.d.ts.map +0 -1
  54. package/dist/sql/permutations.test.d.ts +0 -2
  55. package/dist/sql/permutations.test.d.ts.map +0 -1
  56. package/dist/sql/pg-identifier.d.ts +0 -26
  57. package/dist/sql/pg-identifier.d.ts.map +0 -1
  58. package/dist/sql/pg-identifier.test.d.ts +0 -2
  59. package/dist/sql/pg-identifier.test.d.ts.map +0 -1
  60. package/dist/sql/walker.d.ts +0 -46
  61. package/dist/sql/walker.d.ts.map +0 -1
  62. package/dist/sql/walker.test.d.ts +0 -2
  63. package/dist/sql/walker.test.d.ts.map +0 -1
@@ -1,360 +0,0 @@
1
- import { z } from "zod";
2
- import type { Postgres, PostgresTransaction, PostgresVersion } from "../sql/database.ts";
3
- export type Path = string;
4
- export declare const StatisticsSource: z.ZodUnion<readonly [z.ZodObject<{
5
- kind: z.ZodLiteral<"path">;
6
- path: z.ZodString;
7
- }, z.core.$strip>, z.ZodObject<{
8
- kind: z.ZodLiteral<"inline">;
9
- }, z.core.$strip>]>;
10
- export declare const ExportedStatsStatistics: z.ZodObject<{
11
- stawidth: z.ZodNumber;
12
- stainherit: z.ZodDefault<z.ZodBoolean>;
13
- stadistinct: z.ZodNumber;
14
- stanullfrac: z.ZodNumber;
15
- stakind1: z.ZodNumber;
16
- stakind2: z.ZodNumber;
17
- stakind3: z.ZodNumber;
18
- stakind4: z.ZodNumber;
19
- stakind5: z.ZodNumber;
20
- staop1: z.ZodString;
21
- staop2: z.ZodString;
22
- staop3: z.ZodString;
23
- staop4: z.ZodString;
24
- staop5: z.ZodString;
25
- stacoll1: z.ZodString;
26
- stacoll2: z.ZodString;
27
- stacoll3: z.ZodString;
28
- stacoll4: z.ZodString;
29
- stacoll5: z.ZodString;
30
- stanumbers1: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
31
- stanumbers2: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
32
- stanumbers3: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
33
- stanumbers4: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
34
- stanumbers5: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
35
- stavalues1: z.ZodNullable<z.ZodArray<z.ZodAny>>;
36
- stavalues2: z.ZodNullable<z.ZodArray<z.ZodAny>>;
37
- stavalues3: z.ZodNullable<z.ZodArray<z.ZodAny>>;
38
- stavalues4: z.ZodNullable<z.ZodArray<z.ZodAny>>;
39
- stavalues5: z.ZodNullable<z.ZodArray<z.ZodAny>>;
40
- }, z.core.$strip>;
41
- export declare const ExportedStatsColumns: z.ZodObject<{
42
- columnName: z.ZodString;
43
- stats: z.ZodNullable<z.ZodObject<{
44
- stawidth: z.ZodNumber;
45
- stainherit: z.ZodDefault<z.ZodBoolean>;
46
- stadistinct: z.ZodNumber;
47
- stanullfrac: z.ZodNumber;
48
- stakind1: z.ZodNumber;
49
- stakind2: z.ZodNumber;
50
- stakind3: z.ZodNumber;
51
- stakind4: z.ZodNumber;
52
- stakind5: z.ZodNumber;
53
- staop1: z.ZodString;
54
- staop2: z.ZodString;
55
- staop3: z.ZodString;
56
- staop4: z.ZodString;
57
- staop5: z.ZodString;
58
- stacoll1: z.ZodString;
59
- stacoll2: z.ZodString;
60
- stacoll3: z.ZodString;
61
- stacoll4: z.ZodString;
62
- stacoll5: z.ZodString;
63
- stanumbers1: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
64
- stanumbers2: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
65
- stanumbers3: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
66
- stanumbers4: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
67
- stanumbers5: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
68
- stavalues1: z.ZodNullable<z.ZodArray<z.ZodAny>>;
69
- stavalues2: z.ZodNullable<z.ZodArray<z.ZodAny>>;
70
- stavalues3: z.ZodNullable<z.ZodArray<z.ZodAny>>;
71
- stavalues4: z.ZodNullable<z.ZodArray<z.ZodAny>>;
72
- stavalues5: z.ZodNullable<z.ZodArray<z.ZodAny>>;
73
- }, z.core.$strip>>;
74
- }, z.core.$strip>;
75
- export declare const ExportedStatsIndex: z.ZodObject<{
76
- indexName: z.ZodString;
77
- relpages: z.ZodNumber;
78
- reltuples: z.ZodNumber;
79
- relallvisible: z.ZodNumber;
80
- relallfrozen: z.ZodOptional<z.ZodNumber>;
81
- }, z.core.$strip>;
82
- export declare const ExportedStatsV1: z.ZodObject<{
83
- tableName: z.ZodString;
84
- schemaName: z.ZodString;
85
- relpages: z.ZodNumber;
86
- reltuples: z.ZodNumber;
87
- relallvisible: z.ZodNumber;
88
- relallfrozen: z.ZodOptional<z.ZodNumber>;
89
- columns: z.ZodNullable<z.ZodArray<z.ZodObject<{
90
- columnName: z.ZodString;
91
- stats: z.ZodNullable<z.ZodObject<{
92
- stawidth: z.ZodNumber;
93
- stainherit: z.ZodDefault<z.ZodBoolean>;
94
- stadistinct: z.ZodNumber;
95
- stanullfrac: z.ZodNumber;
96
- stakind1: z.ZodNumber;
97
- stakind2: z.ZodNumber;
98
- stakind3: z.ZodNumber;
99
- stakind4: z.ZodNumber;
100
- stakind5: z.ZodNumber;
101
- staop1: z.ZodString;
102
- staop2: z.ZodString;
103
- staop3: z.ZodString;
104
- staop4: z.ZodString;
105
- staop5: z.ZodString;
106
- stacoll1: z.ZodString;
107
- stacoll2: z.ZodString;
108
- stacoll3: z.ZodString;
109
- stacoll4: z.ZodString;
110
- stacoll5: z.ZodString;
111
- stanumbers1: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
112
- stanumbers2: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
113
- stanumbers3: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
114
- stanumbers4: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
115
- stanumbers5: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
116
- stavalues1: z.ZodNullable<z.ZodArray<z.ZodAny>>;
117
- stavalues2: z.ZodNullable<z.ZodArray<z.ZodAny>>;
118
- stavalues3: z.ZodNullable<z.ZodArray<z.ZodAny>>;
119
- stavalues4: z.ZodNullable<z.ZodArray<z.ZodAny>>;
120
- stavalues5: z.ZodNullable<z.ZodArray<z.ZodAny>>;
121
- }, z.core.$strip>>;
122
- }, z.core.$strip>>>;
123
- indexes: z.ZodArray<z.ZodObject<{
124
- indexName: z.ZodString;
125
- relpages: z.ZodNumber;
126
- reltuples: z.ZodNumber;
127
- relallvisible: z.ZodNumber;
128
- relallfrozen: z.ZodOptional<z.ZodNumber>;
129
- }, z.core.$strip>>;
130
- }, z.core.$strip>;
131
- export declare const ExportedStats: z.ZodUnion<readonly [z.ZodObject<{
132
- tableName: z.ZodString;
133
- schemaName: z.ZodString;
134
- relpages: z.ZodNumber;
135
- reltuples: z.ZodNumber;
136
- relallvisible: z.ZodNumber;
137
- relallfrozen: z.ZodOptional<z.ZodNumber>;
138
- columns: z.ZodNullable<z.ZodArray<z.ZodObject<{
139
- columnName: z.ZodString;
140
- stats: z.ZodNullable<z.ZodObject<{
141
- stawidth: z.ZodNumber;
142
- stainherit: z.ZodDefault<z.ZodBoolean>;
143
- stadistinct: z.ZodNumber;
144
- stanullfrac: z.ZodNumber;
145
- stakind1: z.ZodNumber;
146
- stakind2: z.ZodNumber;
147
- stakind3: z.ZodNumber;
148
- stakind4: z.ZodNumber;
149
- stakind5: z.ZodNumber;
150
- staop1: z.ZodString;
151
- staop2: z.ZodString;
152
- staop3: z.ZodString;
153
- staop4: z.ZodString;
154
- staop5: z.ZodString;
155
- stacoll1: z.ZodString;
156
- stacoll2: z.ZodString;
157
- stacoll3: z.ZodString;
158
- stacoll4: z.ZodString;
159
- stacoll5: z.ZodString;
160
- stanumbers1: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
161
- stanumbers2: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
162
- stanumbers3: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
163
- stanumbers4: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
164
- stanumbers5: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
165
- stavalues1: z.ZodNullable<z.ZodArray<z.ZodAny>>;
166
- stavalues2: z.ZodNullable<z.ZodArray<z.ZodAny>>;
167
- stavalues3: z.ZodNullable<z.ZodArray<z.ZodAny>>;
168
- stavalues4: z.ZodNullable<z.ZodArray<z.ZodAny>>;
169
- stavalues5: z.ZodNullable<z.ZodArray<z.ZodAny>>;
170
- }, z.core.$strip>>;
171
- }, z.core.$strip>>>;
172
- indexes: z.ZodArray<z.ZodObject<{
173
- indexName: z.ZodString;
174
- relpages: z.ZodNumber;
175
- reltuples: z.ZodNumber;
176
- relallvisible: z.ZodNumber;
177
- relallfrozen: z.ZodOptional<z.ZodNumber>;
178
- }, z.core.$strip>>;
179
- }, z.core.$strip>]>;
180
- export type ExportedStats = z.infer<typeof ExportedStats>;
181
- export declare const StatisticsMode: z.ZodDiscriminatedUnion<[z.ZodObject<{
182
- kind: z.ZodLiteral<"fromAssumption">;
183
- reltuples: z.ZodNumber;
184
- relpages: z.ZodNumber;
185
- }, z.core.$strip>, z.ZodObject<{
186
- kind: z.ZodLiteral<"fromStatisticsExport">;
187
- stats: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
188
- tableName: z.ZodString;
189
- schemaName: z.ZodString;
190
- relpages: z.ZodNumber;
191
- reltuples: z.ZodNumber;
192
- relallvisible: z.ZodNumber;
193
- relallfrozen: z.ZodOptional<z.ZodNumber>;
194
- columns: z.ZodNullable<z.ZodArray<z.ZodObject<{
195
- columnName: z.ZodString;
196
- stats: z.ZodNullable<z.ZodObject<{
197
- stawidth: z.ZodNumber;
198
- stainherit: z.ZodDefault<z.ZodBoolean>;
199
- stadistinct: z.ZodNumber;
200
- stanullfrac: z.ZodNumber;
201
- stakind1: z.ZodNumber;
202
- stakind2: z.ZodNumber;
203
- stakind3: z.ZodNumber;
204
- stakind4: z.ZodNumber;
205
- stakind5: z.ZodNumber;
206
- staop1: z.ZodString;
207
- staop2: z.ZodString;
208
- staop3: z.ZodString;
209
- staop4: z.ZodString;
210
- staop5: z.ZodString;
211
- stacoll1: z.ZodString;
212
- stacoll2: z.ZodString;
213
- stacoll3: z.ZodString;
214
- stacoll4: z.ZodString;
215
- stacoll5: z.ZodString;
216
- stanumbers1: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
217
- stanumbers2: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
218
- stanumbers3: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
219
- stanumbers4: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
220
- stanumbers5: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
221
- stavalues1: z.ZodNullable<z.ZodArray<z.ZodAny>>;
222
- stavalues2: z.ZodNullable<z.ZodArray<z.ZodAny>>;
223
- stavalues3: z.ZodNullable<z.ZodArray<z.ZodAny>>;
224
- stavalues4: z.ZodNullable<z.ZodArray<z.ZodAny>>;
225
- stavalues5: z.ZodNullable<z.ZodArray<z.ZodAny>>;
226
- }, z.core.$strip>>;
227
- }, z.core.$strip>>>;
228
- indexes: z.ZodArray<z.ZodObject<{
229
- indexName: z.ZodString;
230
- relpages: z.ZodNumber;
231
- reltuples: z.ZodNumber;
232
- relallvisible: z.ZodNumber;
233
- relallfrozen: z.ZodOptional<z.ZodNumber>;
234
- }, z.core.$strip>>;
235
- }, z.core.$strip>]>>;
236
- source: z.ZodUnion<readonly [z.ZodObject<{
237
- kind: z.ZodLiteral<"path">;
238
- path: z.ZodString;
239
- }, z.core.$strip>, z.ZodObject<{
240
- kind: z.ZodLiteral<"inline">;
241
- }, z.core.$strip>]>;
242
- }, z.core.$strip>], "kind">;
243
- export type StatisticsMode = z.infer<typeof StatisticsMode>;
244
- export declare class Statistics {
245
- private readonly db;
246
- readonly postgresVersion: PostgresVersion;
247
- readonly ownMetadata: ExportedStats[];
248
- readonly mode: StatisticsMode;
249
- private readonly exportedMetadata;
250
- static readonly defaultStatsMode: StatisticsMode;
251
- constructor(db: Postgres, postgresVersion: PostgresVersion, ownMetadata: ExportedStats[], statsMode: StatisticsMode);
252
- static statsModeFromAssumption({ reltuples, relpages, }: {
253
- reltuples: number;
254
- relpages: number;
255
- }): StatisticsMode;
256
- /**
257
- * Create a statistic mode from stats exported from another database
258
- **/
259
- static statsModeFromExport(stats: ExportedStats[]): StatisticsMode;
260
- static fromPostgres(db: Postgres, statsMode: StatisticsMode): Promise<Statistics>;
261
- restoreStats(tx: PostgresTransaction): Promise<{
262
- tablesNotInExports: string[];
263
- tablesNotInTest: string[];
264
- tableNotAnalyzed: string[];
265
- statsMissing: {
266
- statistic: string;
267
- table: string;
268
- schema: string;
269
- column: string;
270
- }[];
271
- }>;
272
- approximateTotalRows(): number;
273
- /**
274
- * We have to cast stavaluesN to the correct type
275
- * This derives that type for us so it can be used in `array_in`
276
- */
277
- private stavalueKind;
278
- /**
279
- * PostgreSQL's anyarray columns in pg_statistic can hold arrays of arrays
280
- * for columns with array types (e.g. text[], int4[]). These create
281
- * multidimensional arrays that can be "ragged" (sub-arrays with different
282
- * lengths). jsonb_to_recordset can't reconstruct ragged multidimensional
283
- * arrays from JSON, so we need to drop these values.
284
- */
285
- private static safeStavalues;
286
- private restoreStats17;
287
- static dumpStats(db: PostgresTransaction, postgresVersion: PostgresVersion, kind: "anonymous" | "full"): Promise<ExportedStats[]>;
288
- /**
289
- * Returns all indexes in the database.
290
- * ONLY handles regular btree indexes
291
- */
292
- getExistingIndexes(): Promise<IndexedTable[]>;
293
- }
294
- export type ColumnMetadata = {
295
- columnName: string;
296
- dataType: string;
297
- isNullable: boolean;
298
- stats: ColumnStats | null;
299
- };
300
- type ColumnStats = {
301
- stainherit: boolean;
302
- stanullfrac: number;
303
- stawidth: number;
304
- stadistinct: number;
305
- stakind1: number;
306
- stakind2: number;
307
- stakind3: number;
308
- stakind4: number;
309
- stakind5: number;
310
- staop1: number;
311
- staop2: number;
312
- staop3: number;
313
- staop4: number;
314
- staop5: number;
315
- stacoll1: number;
316
- stacoll2: number;
317
- stacoll3: number;
318
- stacoll4: number;
319
- stacoll5: number;
320
- stanumbers1: number;
321
- stanumbers2: number;
322
- stanumbers3: number;
323
- stanumbers4: number;
324
- stanumbers5: number;
325
- };
326
- export type TableMetadata = {
327
- tableName: string;
328
- schemaName: string;
329
- reltuples: number;
330
- relpages: number;
331
- relallvisible: number;
332
- relallfrozen?: number;
333
- columns: ColumnMetadata[];
334
- };
335
- type TableName = string;
336
- export type TableStats = {
337
- tupleEstimate: bigint;
338
- pageCount: number;
339
- };
340
- export type SerializeResult = {
341
- schema: TableMetadata[];
342
- serialized: string;
343
- sampledRecords: Record<TableName, number>;
344
- };
345
- export type IndexOrder = "ASC" | "DESC";
346
- export type IndexedTable = {
347
- index_columns: Array<{
348
- name: string;
349
- order: IndexOrder;
350
- opclass?: string;
351
- }>;
352
- is_primary: boolean;
353
- is_unique: boolean;
354
- index_name: string;
355
- index_type: "btree" | "gin" | (string & {});
356
- schema_name: string;
357
- table_name: string;
358
- };
359
- export {};
360
- //# sourceMappingURL=statistics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"statistics.d.ts","sourceRoot":"","sources":["../../src/optimizer/statistics.ts"],"names":[],"mappings":"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"}
@@ -1,105 +0,0 @@
1
- import type { NullTestType, SortByDir, SortByNulls } from "@pgsql/types";
2
- import type { RootIndexCandidate } from "../optimizer/genalgo.js";
3
- import type { ExportedStats } from "../optimizer/statistics.js";
4
- import type { Nudge } from "./nudges.js";
5
- import { ColumnReferencePart } from "./walker.js";
6
- export interface DatabaseDriver {
7
- query(query: string, params: unknown[]): Promise<unknown[]>;
8
- }
9
- export declare const ignoredIdentifier = "__qd_placeholder";
10
- export interface SQLCommenterTag {
11
- key: string;
12
- value: string;
13
- }
14
- export type SortContext = {
15
- dir: SortByDir;
16
- nulls: SortByNulls;
17
- };
18
- export type DiscoveredColumnReference = {
19
- /** How often the column reference appears in the query. */
20
- frequency: number;
21
- /**
22
- * Representation of the column reference exactly
23
- * as it appears in the query.
24
- */
25
- representation: string;
26
- /**
27
- * Parts of the column reference separated by dots in the query.
28
- * The table reference (if it exists) is resolved if the query
29
- * uses an alias.
30
- *
31
- * Has 3 different potential configurations (in theory)
32
- * `a.b.c` - a column reference with a table and a schema reference
33
- * `a.b` - a column reference with a table reference but no schema
34
- * `a` - a column reference with no table reference.
35
- *
36
- * We use a simple array here to allow parsing of any syntactically correct
37
- * but logically incorrect query. The checks happen later when we're deriving
38
- * potential indexes from parts of a column reference in `deriveIndexes`
39
- */
40
- parts: ColumnReferencePart[];
41
- /**
42
- * Whether the column reference is invalid. This
43
- */
44
- ignored: boolean;
45
- /** The position of the column reference in the query. */
46
- position: {
47
- start: number;
48
- end: number;
49
- };
50
- /**
51
- * A sort direction associated by the column reference.
52
- * Only relevant to references from sorts
53
- */
54
- sort?: SortContext;
55
- where?: {
56
- nulltest?: NullTestType;
57
- };
58
- jsonbOperator?: JsonbOperator;
59
- };
60
- export type JsonbOperator = "@>" | "?" | "?|" | "?&";
61
- /** A function defined by @pgsql/parser */
62
- export type Parser = (query: string) => Promise<unknown>;
63
- export type TableReference = {
64
- schema?: string;
65
- table: string;
66
- };
67
- export type AnalysisResult = {
68
- indexesToCheck: DiscoveredColumnReference[];
69
- ansiHighlightedQuery: string;
70
- referencedTables: TableReference[];
71
- shadowedAliases: ColumnReferencePart[];
72
- tags: SQLCommenterTag[];
73
- queryWithoutTags: string;
74
- formattedQueryWithoutTags?: string;
75
- nudges: Nudge[];
76
- };
77
- export type SQLCommenterExtraction = {
78
- tags: SQLCommenterTag[];
79
- queryWithoutTags: string;
80
- };
81
- /**
82
- * Analyzes a query and returns a list of column references that
83
- * should be indexed.
84
- *
85
- * This should be instantiated once per analyzed query.
86
- */
87
- export declare class Analyzer {
88
- private readonly parser;
89
- constructor(parser: Parser);
90
- analyze(query: string, formattedQuery?: string): Promise<AnalysisResult>;
91
- deriveIndexes(tables: ExportedStats[], discovered: DiscoveredColumnReference[], referencedTables: TableReference[]): RootIndexCandidate[];
92
- private filterReferences;
93
- private hasColumn;
94
- private colorizeKeywords;
95
- /**
96
- * Resolves aliases such as `a.b` to `x.b` if `a` is a known
97
- * alias to a table called x.
98
- *
99
- * Ignores all other combination of parts such as `a.b.c`
100
- */
101
- private resolveTableAliases;
102
- private normalize;
103
- private extractSqlcommenter;
104
- }
105
- //# sourceMappingURL=analyzer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../../src/sql/analyzer.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=analyzer.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyzer.test.d.ts","sourceRoot":"","sources":["../../src/sql/analyzer.test.ts"],"names":[],"mappings":""}
@@ -1,31 +0,0 @@
1
- import { PgIdentifier } from "./pg-identifier";
2
- export type PostgresQueryBuilderCommand = "bitmapscan" | "indexscan" | "seqscan";
3
- export declare class PostgresQueryBuilder {
4
- private query;
5
- private readonly commands;
6
- private isIntrospection;
7
- private explainFlags;
8
- private _preamble;
9
- private parameters;
10
- private limitSubstitution?;
11
- constructor(query: string);
12
- get preamble(): number;
13
- static createIndex(definition: string, name?: PgIdentifier): PostgresQueryBuilder;
14
- enable(command: PostgresQueryBuilderCommand, value?: boolean): this;
15
- withQuery(query: string): this;
16
- introspect(): this;
17
- explain(flags: string[]): this;
18
- parameterize(parameters: Record<Parameter, number>): this;
19
- replaceLimit(limit: number): this;
20
- build(): string;
21
- /** Return the "set a=b" parts of the command in the query separate from the explain select ... part */
22
- buildParts(): {
23
- commands: string;
24
- query: string;
25
- };
26
- private generateSetCommands;
27
- private generateExplain;
28
- private substituteQuery;
29
- }
30
- export type Parameter = `$${string}`;
31
- //# sourceMappingURL=builder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/sql/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,MAAM,2BAA2B,GACnC,YAAY,GACZ,WAAW,GACX,SAAS,CAAC;AAEd,qBAAa,oBAAoB;IASnB,OAAO,CAAC,KAAK;IARzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,UAAU,CAAiC;IAEnD,OAAO,CAAC,iBAAiB,CAAC,CAAS;gBAEf,KAAK,EAAE,MAAM;IAEjC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;IAS1D,MAAM,CAAC,OAAO,EAAE,2BAA2B,EAAE,KAAK,GAAE,OAAc,GAAG,IAAI;IAUzE,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK9B,UAAU,IAAI,IAAI;IAKlB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC;IAKlD,YAAY,CAAC,KAAK,EAAE,MAAM;IAK1B,KAAK,IAAI,MAAM;IASf,uGAAuG;IACvG,UAAU;;;;IAUV,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,eAAe;CAaxB;AAED,MAAM,MAAM,SAAS,GAAG,IAAI,MAAM,EAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=builder.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.test.d.ts","sourceRoot":"","sources":["../../src/sql/builder.test.ts"],"names":[],"mappings":""}
@@ -1,84 +0,0 @@
1
- import { z } from "zod";
2
- import type { PgIdentifier } from "./pg-identifier";
3
- export declare const PostgresVersion: z.core.$ZodBranded<z.ZodString, "PostgresVersion">;
4
- export type PostgresVersion = z.infer<typeof PostgresVersion>;
5
- export interface PostgresTransaction {
6
- /**
7
- * Exec a query and return the result as an array of objects.
8
- */
9
- exec<T>(query: string, params?: unknown[]): Promise<T[]>;
10
- }
11
- /**
12
- * A shared interface for all postgres connections.
13
- * This is required to allow interop between pglite and regular postgres drivers
14
- */
15
- export interface Postgres extends PostgresTransaction {
16
- transaction<T>(callback: (tx: PostgresTransaction) => Promise<T>): Promise<T>;
17
- cursor?<T>(query: string, params?: unknown[], options?: {
18
- size?: number;
19
- }): AsyncGenerator<T, void, unknown>;
20
- serverNum(): Promise<PostgresVersion>;
21
- }
22
- export type PostgresConnectionInput = {
23
- url: string;
24
- };
25
- export type PostgresFactory = (input: PostgresConnectionInput) => Postgres;
26
- declare const StageId: unique symbol;
27
- export type PostgresStageId = number & {
28
- [StageId]: "StageId";
29
- };
30
- export type PostgresStage = "Seq Scan" | "Limit" | "Bitmap Heap Scan" | "Bitmap Index Scan" | "Index Only Scan" | "Index Scan" | "BitmapOr";
31
- export type PostgresExplainStageCommon = {
32
- "Node Type": PostgresStage;
33
- "Node Id": PostgresStageId;
34
- Plans?: PostgresExplainStage[];
35
- "Plan Width": number;
36
- "Total Cost": number;
37
- };
38
- export type PostgresExplainStage = (PostgresExplainStageCommon & {
39
- "Node Type": "Index Scan";
40
- "Index Name": string;
41
- "Relation Name": string;
42
- Alias: string;
43
- "Rows Removed by Filter": number;
44
- }) | (PostgresExplainStageCommon & {
45
- "Node Type": "Seq Scan";
46
- "Relation Name": string;
47
- Filter?: string;
48
- "Actual Rows": number;
49
- "Actual Loops": number;
50
- "Rows Removed by Filter": number;
51
- }) | (PostgresExplainStageCommon & {
52
- "Node Type": "Bitmap Heap Scan";
53
- "Relation Name": string;
54
- Filter?: string;
55
- "Actual Rows": number;
56
- "Actual Loops": number;
57
- "Rows Removed by Filter": number;
58
- }) | (PostgresExplainStageCommon & {
59
- "Node Type": "Bitmap Index Scan";
60
- "Index Name": string;
61
- Filter?: string;
62
- "Actual Rows": number;
63
- "Actual Loops": number;
64
- "Rows Removed by Filter": number;
65
- }) | (PostgresExplainStageCommon & {
66
- "Node Type": "Index Only Scan";
67
- "Index Name": string;
68
- Filter?: string;
69
- "Actual Rows": number;
70
- "Actual Loops": number;
71
- "Rows Removed by Filter": number;
72
- }) | PostgresExplainStageCommon;
73
- export type PostgresExplainResult = {
74
- "QUERY PLAN": {
75
- Plan: PostgresExplainStage;
76
- }[];
77
- };
78
- /**
79
- * Drops a disabled index. Rollsback if it fails for any reason
80
- * @returns Did dropping the index succeed?
81
- */
82
- export declare function dropIndex(tx: PostgresTransaction, index: PgIdentifier): Promise<boolean>;
83
- export {};
84
- //# sourceMappingURL=database.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/sql/database.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { IndexedTable } from "../optimizer/statistics.js";
2
- export declare function isIndexSupported(index: IndexedTable): boolean;
3
- /**
4
- * Doesn't necessarily decide whether the index can be dropped but can be
5
- * used to not even try dropping indexes that _definitely_ cannot be dropped
6
- */
7
- export declare function isIndexProbablyDroppable(index: IndexedTable): boolean;
8
- //# sourceMappingURL=indexes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"indexes.d.ts","sourceRoot":"","sources":["../../src/sql/indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,WAEnD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,WAI3D"}
@@ -1,16 +0,0 @@
1
- import type { Node } from "@pgsql/types";
2
- type NudgeKind = "LARGE_IMPROVEMENT_FOUND" | "SMALL_IMPROVEMENT_FOUND" | "AVOID_SELECT_STAR" | "AVOID_FUNCTIONS_ON_COLUMNS_IN_WHERE" | "MISSING_WHERE_CLAUSE" | "MISSING_LIMIT_CLAUSE" | "USE_IS_NULL_NOT_EQUALS" | "AVOID_DISTINCT_WITHOUT_REASON" | "MISSING_JOIN_CONDITION" | "AVOID_LEADING_WILDCARD_LIKE" | "CONSIDER_IN_INSTEAD_OF_MANY_ORS" | "REPLACE_LARGE_IN_TUPLE_WITH_ANY_ARRAY";
3
- export type Nudge = {
4
- kind: NudgeKind;
5
- severity: "CRITICAL" | "WARNING" | "INFO";
6
- message: string;
7
- location?: number;
8
- };
9
- type KeysOfUnion<T> = T extends T ? keyof T : never;
10
- /**
11
- * Detect nudges for a single node during AST traversal.
12
- * Returns an array of nudges found for this node.
13
- */
14
- export declare function parseNudges(node: Node, stack: (KeysOfUnion<Node> | string)[]): Nudge[];
15
- export {};
16
- //# sourceMappingURL=nudges.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nudges.d.ts","sourceRoot":"","sources":["../../src/sql/nudges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,IAAI,EAAa,MAAM,cAAc,CAAC;AAEnE,KAAK,SAAS,GACV,yBAAyB,GACzB,yBAAyB,GACzB,mBAAmB,GACnB,qCAAqC,GACrC,sBAAsB,GACtB,sBAAsB,GACtB,wBAAwB,GACxB,+BAA+B,GAC/B,wBAAwB,GACxB,6BAA6B,GAC7B,iCAAiC,GACjC,uCAAuC,CAAC;AAE5C,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC;AAiBpD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,GACpC,KAAK,EAAE,CA+NT"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Create permutations of the array while sorting it from
3
- * largest permutation to smallest.
4
- *
5
- * This is important when generating index permutations as
6
- * postgres happens to prefer indexes with the latest
7
- * creation date when the cost of using 2 are the same
8
- **/
9
- export declare function permutationsWithDescendingLength<T>(arr: T[]): T[][];
10
- //# sourceMappingURL=permutations.d.ts.map