@query-doctor/core 0.7.2 → 0.8.0-rc.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +90 -45
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +32 -8
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +32 -8
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +90 -46
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -186,6 +186,7 @@ declare const ExportedStatsStatistics: z.ZodObject<{
|
|
|
186
186
|
}, z.core.$strip>;
|
|
187
187
|
declare const ExportedStatsColumns: z.ZodObject<{
|
|
188
188
|
columnName: z.ZodString;
|
|
189
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
189
190
|
stats: z.ZodNullable<z.ZodObject<{
|
|
190
191
|
stawidth: z.ZodNumber;
|
|
191
192
|
stainherit: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -220,10 +221,15 @@ declare const ExportedStatsColumns: z.ZodObject<{
|
|
|
220
221
|
}, z.core.$strip>;
|
|
221
222
|
declare const ExportedStatsIndex: z.ZodObject<{
|
|
222
223
|
indexName: z.ZodString;
|
|
224
|
+
amname: z.ZodDefault<z.ZodString>;
|
|
223
225
|
relpages: z.ZodNumber;
|
|
224
226
|
reltuples: z.ZodNumber;
|
|
225
227
|
relallvisible: z.ZodNumber;
|
|
226
228
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
229
|
+
fillfactor: z.ZodDefault<z.ZodNumber>;
|
|
230
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
231
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
232
|
+
}, z.core.$strip>>>;
|
|
227
233
|
}, z.core.$strip>;
|
|
228
234
|
declare const ExportedStatsV1: z.ZodObject<{
|
|
229
235
|
tableName: z.ZodString;
|
|
@@ -232,8 +238,9 @@ declare const ExportedStatsV1: z.ZodObject<{
|
|
|
232
238
|
reltuples: z.ZodNumber;
|
|
233
239
|
relallvisible: z.ZodNumber;
|
|
234
240
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
235
|
-
columns: z.
|
|
241
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
236
242
|
columnName: z.ZodString;
|
|
243
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
237
244
|
stats: z.ZodNullable<z.ZodObject<{
|
|
238
245
|
stawidth: z.ZodNumber;
|
|
239
246
|
stainherit: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -268,10 +275,15 @@ declare const ExportedStatsV1: z.ZodObject<{
|
|
|
268
275
|
}, z.core.$strip>>>;
|
|
269
276
|
indexes: z.ZodArray<z.ZodObject<{
|
|
270
277
|
indexName: z.ZodString;
|
|
278
|
+
amname: z.ZodDefault<z.ZodString>;
|
|
271
279
|
relpages: z.ZodNumber;
|
|
272
280
|
reltuples: z.ZodNumber;
|
|
273
281
|
relallvisible: z.ZodNumber;
|
|
274
282
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
283
|
+
fillfactor: z.ZodDefault<z.ZodNumber>;
|
|
284
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
285
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
286
|
+
}, z.core.$strip>>>;
|
|
275
287
|
}, z.core.$strip>>;
|
|
276
288
|
}, z.core.$strip>;
|
|
277
289
|
declare const ExportedStats: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -281,8 +293,9 @@ declare const ExportedStats: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
281
293
|
reltuples: z.ZodNumber;
|
|
282
294
|
relallvisible: z.ZodNumber;
|
|
283
295
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
284
|
-
columns: z.
|
|
296
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
285
297
|
columnName: z.ZodString;
|
|
298
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
286
299
|
stats: z.ZodNullable<z.ZodObject<{
|
|
287
300
|
stawidth: z.ZodNumber;
|
|
288
301
|
stainherit: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -317,17 +330,21 @@ declare const ExportedStats: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
317
330
|
}, z.core.$strip>>>;
|
|
318
331
|
indexes: z.ZodArray<z.ZodObject<{
|
|
319
332
|
indexName: z.ZodString;
|
|
333
|
+
amname: z.ZodDefault<z.ZodString>;
|
|
320
334
|
relpages: z.ZodNumber;
|
|
321
335
|
reltuples: z.ZodNumber;
|
|
322
336
|
relallvisible: z.ZodNumber;
|
|
323
337
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
338
|
+
fillfactor: z.ZodDefault<z.ZodNumber>;
|
|
339
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
340
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
341
|
+
}, z.core.$strip>>>;
|
|
324
342
|
}, z.core.$strip>>;
|
|
325
343
|
}, z.core.$strip>]>;
|
|
326
344
|
type ExportedStats = z.infer<typeof ExportedStats>;
|
|
327
345
|
declare const StatisticsMode: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
328
346
|
kind: z.ZodLiteral<"fromAssumption">;
|
|
329
347
|
reltuples: z.ZodNumber;
|
|
330
|
-
relpages: z.ZodNumber;
|
|
331
348
|
}, z.core.$strip>, z.ZodObject<{
|
|
332
349
|
kind: z.ZodLiteral<"fromStatisticsExport">;
|
|
333
350
|
stats: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -337,8 +354,9 @@ declare const StatisticsMode: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
337
354
|
reltuples: z.ZodNumber;
|
|
338
355
|
relallvisible: z.ZodNumber;
|
|
339
356
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
340
|
-
columns: z.
|
|
357
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
341
358
|
columnName: z.ZodString;
|
|
359
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
342
360
|
stats: z.ZodNullable<z.ZodObject<{
|
|
343
361
|
stawidth: z.ZodNumber;
|
|
344
362
|
stainherit: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -373,10 +391,15 @@ declare const StatisticsMode: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
373
391
|
}, z.core.$strip>>>;
|
|
374
392
|
indexes: z.ZodArray<z.ZodObject<{
|
|
375
393
|
indexName: z.ZodString;
|
|
394
|
+
amname: z.ZodDefault<z.ZodString>;
|
|
376
395
|
relpages: z.ZodNumber;
|
|
377
396
|
reltuples: z.ZodNumber;
|
|
378
397
|
relallvisible: z.ZodNumber;
|
|
379
398
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
399
|
+
fillfactor: z.ZodDefault<z.ZodNumber>;
|
|
400
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
401
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
402
|
+
}, z.core.$strip>>>;
|
|
380
403
|
}, z.core.$strip>>;
|
|
381
404
|
}, z.core.$strip>]>>;
|
|
382
405
|
source: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -396,11 +419,9 @@ declare class Statistics {
|
|
|
396
419
|
static readonly defaultStatsMode: StatisticsMode;
|
|
397
420
|
constructor(db: Postgres, postgresVersion: PostgresVersion, ownMetadata: ExportedStats[], statsMode: StatisticsMode);
|
|
398
421
|
static statsModeFromAssumption({
|
|
399
|
-
reltuples
|
|
400
|
-
relpages
|
|
422
|
+
reltuples
|
|
401
423
|
}: {
|
|
402
424
|
reltuples: number;
|
|
403
|
-
relpages: number;
|
|
404
425
|
}): StatisticsMode;
|
|
405
426
|
/**
|
|
406
427
|
* Create a statistic mode from stats exported from another database
|
|
@@ -753,5 +774,8 @@ declare class PssRewriter {
|
|
|
753
774
|
private problematicKeywords;
|
|
754
775
|
}
|
|
755
776
|
//#endregion
|
|
756
|
-
|
|
777
|
+
//#region src/sentry.d.ts
|
|
778
|
+
declare function deriveSentryEnvironment(url: string | undefined): string;
|
|
779
|
+
//#endregion
|
|
780
|
+
export { AnalysisResult, Analyzer, ColumnMetadata, DatabaseDriver, DiscoveredColumnReference, ExportedStats, ExportedStatsColumns, ExportedStatsIndex, ExportedStatsStatistics, ExportedStatsV1, IndexIdentifier, IndexOptimizer, IndexOrder, IndexRecommendation, IndexedTable, JsonbOperator, Nudge, OptimizeResult, PROCEED, Parameter, Parser, Path, PermutedIndexCandidate, PgIdentifier, Postgres, PostgresConnectionInput, PostgresExplainResult, PostgresExplainStage, PostgresExplainStageCommon, PostgresExplainStageSchema, PostgresFactory, PostgresQueryBuilder, PostgresQueryBuilderCommand, PostgresStage, PostgresStageId, PostgresTransaction, PostgresVersion, PssRewriter, RootIndexCandidate, SKIP, SQLCommenterExtraction, SQLCommenterTag, SerializeResult, SortContext, Statistics, StatisticsMode, StatisticsSource, TableMetadata, TableReference, TableStats, deriveSentryEnvironment, dropIndex, ignoredIdentifier, isIndexProbablyDroppable, isIndexSupported, parseNudges };
|
|
757
781
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/sql/pg-identifier.ts","../src/sql/builder.ts","../src/sql/database.ts","../src/optimizer/statistics.ts","../src/optimizer/genalgo.ts","../src/sql/ast-utils.ts","../src/sql/nudges.ts","../src/sql/walker.ts","../src/sql/analyzer.ts","../src/sql/indexes.ts","../src/optimizer/pss-rewriter.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/sql/pg-identifier.ts","../src/sql/builder.ts","../src/sql/database.ts","../src/optimizer/statistics.ts","../src/optimizer/genalgo.ts","../src/sql/ast-utils.ts","../src/sql/nudges.ts","../src/sql/walker.ts","../src/sql/analyzer.ts","../src/sql/indexes.ts","../src/optimizer/pss-rewriter.ts","../src/sentry.ts"],"mappings":";;;;;;;;;;;cAKa,YAAA;EAAA,iBAEQ,KAAA;EAAA,iBACA,MAAA;EAAA,QAFZ,WAAA,CAAA;EA+BoC;;;;EAAA,OAtBpC,UAAA,CAAW,UAAA,WAAqB,YAAA;EAPpB;;;;;;EAAA,OA6BZ,SAAA,CAAA,GAAa,WAAA,YAAuB,YAAA,MAAkB,YAAA;EAe7D,QAAA,CAAA;EAOA,MAAA,CAAA;EAAA,wBAMwB,gBAAA;AAAA;;;KC/Dd,2BAAA;AAAA,cAKC,oBAAA;EAAA,QASS,KAAA;EAAA,iBARH,QAAA;EAAA,QACT,eAAA;EAAA,QACA,YAAA;EAAA,QACA,SAAA;EAAA,QACA,UAAA;EAAA,QAEA,iBAAA;cAEY,KAAA;EAAA,IAEhB,QAAA,CAAA;EAAA,OAIG,WAAA,CAAY,UAAA,UAAoB,IAAA,GAAO,YAAA,GAAY,oBAAA;EAS1D,MAAA,CAAO,OAAA,EAAS,2BAAA,EAA6B,KAAA;EAU7C,SAAA,CAAU,KAAA;EAKV,UAAA,CAAA;EAKA,OAAA,CAAQ,KAAA;EAKR,YAAA,CAAa,UAAA,EAAY,MAAA,CAAO,SAAA;EAKhC,YAAA,CAAa,KAAA;EAKb,KAAA,CAAA;ED7BoB;ECuCpB,UAAA,CAAA;;;;UAUQ,mBAAA;EAAA,QASA,eAAA;EAAA,QAaA,eAAA;AAAA;AAAA,KAeE,SAAA;;;cCxHC,eAAA,EAAe,CAAA,CAAA,IAAA,CAAA,WAAA,CAAA,CAAA,CAAA,SAAA;AAAA,KAChB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,eAAA;AAAA,UAE5B,mBAAA;EFDJ;;;EEKX,IAAA,IAAQ,KAAA,UAAe,MAAA,eAAqB,OAAA,CAAQ,CAAA;AAAA;;;;;UAOrC,QAAA,SAAiB,mBAAA;EAChC,WAAA,IAAe,QAAA,GAAW,EAAA,EAAI,mBAAA,KAAwB,OAAA,CAAQ,CAAA,IAAK,OAAA,CAAQ,CAAA;EAC3E,MAAA,KACE,KAAA,UACA,MAAA,cACA,OAAA;IAAY,IAAA;EAAA,IACX,cAAA,CAAe,CAAA;EAElB,SAAA,IAAa,OAAA,CAAQ,eAAA;AAAA;AAAA,KAGX,uBAAA;EACV,GAAA;AAAA;AAAA,KAGU,eAAA,IAAmB,KAAA,EAAO,uBAAA,KAA4B,QAAA;AAAA,cAGpD,OAAA;AAAA,KACF,eAAA;EAAA,CAA8B,OAAA;AAAA;AAAA,KAE9B,aAAA;AAAA,KASA,0BAAA;EACV,WAAA,EAAa,aAAA;EAGb,SAAA,EAAW,eAAA;EACX,KAAA,GAAQ,oBAAA;EACR,YAAA;EACA,YAAA;AAAA;AAAA,KAGU,oBAAA,IACP,0BAAA;EACC,WAAA;EACA,YAAA;EACA,eAAA;EACA,KAAA;EACA,wBAAA;AAAA,MAED,0BAAA;EACC,WAAA;EACA,eAAA;EACA,MAAA;EACA,aAAA;EACA,cAAA;EACA,wBAAA;AAAA,MAED,0BAAA;EACC,WAAA;EACA,eAAA;EACA,MAAA;EACA,aAAA;EACA,cAAA;EACA,wBAAA;AAAA,MAED,0BAAA;EACC,WAAA;EACA,YAAA;EACA,MAAA;EACA,aAAA;EACA,cAAA;EACA,wBAAA;AAAA,MAED,0BAAA;EACC,WAAA;EACA,YAAA;EACA,MAAA;EACA,aAAA;EACA,cAAA;EACA,wBAAA;AAAA,KAEF,0BAAA;;cAGS,0BAAA,EAA4B,CAAA,CAAE,OAAA,CAAQ,oBAAA;AAAA,KAavC,qBAAA;EACV,YAAA;IACE,IAAA,EAAM,oBAAA;EAAA;AAAA;;;;;iBAQY,SAAA,CACpB,EAAA,EAAI,mBAAA,EACJ,KAAA,EAAO,YAAA,GACN,OAAA;;;KCnHS,IAAA;AAAA,cAEC,gBAAA,EAAgB,CAAA,CAAA,QAAA,WAAA,CAAA,CAAA,SAAA;;;;;;cAUhB,uBAAA,EAAuB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoCvB,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAMpB,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;;;;;;;;;cAclB,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAcf,aAAA,EAAa,CAAA,CAAA,QAAA,WAAA,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAEd,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,cAE9B,cAAA,EAAc,CAAA,CAAA,qBAAA,EAAA,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAYf,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,cAyC/B,UAAA;EAAA,iBAUQ,EAAA;EAAA,SACD,eAAA,EAAiB,eAAA;EAAA,SACjB,WAAA,EAAa,aAAA;EAAA,SAXtB,IAAA,EAAM,cAAA;EAAA,iBACE,gBAAA;EAAA,gBAED,gBAAA,EAAkB,cAAA;cAMf,EAAA,EAAI,QAAA,EACL,eAAA,EAAiB,eAAA,EACjB,WAAA,EAAa,aAAA,IAC7B,SAAA,EAAW,cAAA;EAAA,OAYN,uBAAA,CAAA;IACL;EAAA;IAEA,SAAA;EAAA,IACE,cAAA;EDxDyB;;;EAAA,OCkEtB,mBAAA,CAAoB,KAAA,EAAO,aAAA,KAAkB,cAAA;EAAA,OAQvC,YAAA,CACX,EAAA,EAAI,QAAA,EACJ,SAAA,EAAW,cAAA,GACV,OAAA,CAAQ,UAAA;EAMX,YAAA,CAAa,EAAA,EAAI,mBAAA,GAAmB,OAAA;;;;;MA2D9B,SAAA;MACA,KAAA;MACA,MAAA;MACA,MAAA;IAAA;EAAA;EAvDN,oBAAA,CAAA;EA1MU;;;;EAAA,QAyNF,YAAA;EAvNG;;;;;;;EAAA,eA6OI,aAAA;EAAA,QASD,cAAA;EAAA,OAmhBD,SAAA,CACX,EAAA,EAAI,mBAAA,EACJ,eAAA,EAAiB,eAAA,EACjB,IAAA,yBACC,OAAA,CAAQ,aAAA;EA7wBgB;;;;EAo4BrB,kBAAA,CAAA,GAAsB,OAAA,CAAQ,YAAA;AAAA;AAAA,KA2D1B,cAAA;EACV,UAAA;EACA,QAAA;EACA,UAAA;EACA,KAAA,EAAO,WAAA;AAAA;AAAA,KAGJ,WAAA;EACH,UAAA;EACA,WAAA;EACA,QAAA;EACA,WAAA;EACA,QAAA;EACA,QAAA;EACA,QAAA;EACA,QAAA;EACA,QAAA;EACA,MAAA;EACA,MAAA;EACA,MAAA;EACA,MAAA;EACA,MAAA;EACA,QAAA;EACA,QAAA;EACA,QAAA;EACA,QAAA;EACA,QAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA;AAAA;AAAA,KAGU,aAAA;EACV,SAAA;EACA,UAAA;EACA,SAAA;EACA,QAAA;EACA,aAAA;EACA,YAAA;EACA,OAAA,EAAS,cAAA;AAAA;AAAA,KAGN,SAAA;AAAA,KACO,UAAA;EACV,aAAA;EACA,SAAA;AAAA;AAAA,KAGU,eAAA;EACV,MAAA,EAAQ,aAAA;EACR,UAAA;EACA,cAAA,EAAgB,MAAA,CAAO,SAAA;AAAA;AAAA,KAGb,UAAA;AAAA,KAEA,YAAA;EACV,aAAA,EAAe,KAAA;IAAQ,IAAA;IAAc,KAAA,EAAO,UAAA;IAAY,OAAA;EAAA;EACxD,UAAA;EACA,SAAA;EACA,UAAA;EAEA,UAAA;EAEA,WAAA;EACA,UAAA;AAAA;;;KC9/BU,eAAA;AAAA,KAEA,mBAAA,GAAsB,sBAAA;EAChC,UAAA,EAAY,eAAA;AAAA;AAAA,cAUD,cAAA;EAAA,iBAIQ,EAAA;EAAA,iBACA,UAAA;EAAA,QACT,eAAA;EAAA,iBACS,MAAA;EAAA,OANZ,MAAA;cAGY,EAAA,EAAI,QAAA,EACJ,UAAA,EAAY,UAAA,EACrB,eAAA,EAAiB,YAAA,IACR,MAAA;IACf,KAAA;IACA,KAAA;EAAA;EAIE,GAAA,CACJ,OAAA,EAAS,oBAAA,EACT,OAAA,EAAS,kBAAA,IACT,WAAA,IAAe,EAAA,EAAI,mBAAA,KAAwB,OAAA,SAC1C,OAAA,CAAQ,cAAA;EAkEL,iBAAA,CAAkB,OAAA,EAAS,oBAAA,GAAoB,OAAA;UAiYlC,oBAAA;EAAA;EJvbnB;;;;;;;ACzDF;;;;;AAKA;EG6HE,gBAAA,CAAiB,CAAA,GAAI,OAAA,EAAS,YAAA,OAAmB,YAAA;;;;;;UAWzC,SAAA;EAAA,QAOA,kBAAA;EH9FuB;;;EAAA,QG0IvB,eAAA;EAAA,QAiHA,YAAA;EAAA,QA6CA,eAAA;EAAA,QAqBA,sBAAA;EAAA,QAkBA,0BAAA;EAAA,QA8BA,qBAAA;EHrZY;;;EAAA,QGoaN,mBAAA;EAAA,QAaN,WAAA;EAAA,QAaA,UAAA;EAAA,QAeA,aAAA;EAiBF,kBAAA,CACJ,OAAA,EAAS,oBAAA,EACT,CAAA,IAAK,EAAA,EAAI,mBAAA,KAAwB,OAAA,QACjC,OAAA;IAAY,MAAA;IAAoB,WAAA;EAAA,IAC/B,OAAA;IAAU,IAAA,EAAM,oBAAA;EAAA;EAAA,QAsCX,iCAAA;EAAA,QAoBA,eAAA;EAAA,QAyBA,gCAAA;AAAA;AAAA,KA4BE,cAAA;EAEN,IAAA;EACA,eAAA,EAAiB,oBAAA;EACjB,QAAA;EACA,SAAA;EACA,UAAA,EAAY,GAAA;EACZ,eAAA,EAAiB,GAAA;EACjB,YAAA,EAAc,GAAA,SAAY,mBAAA;EAC1B,WAAA,EAAa,oBAAA;AAAA;EAGb,IAAA;EACA,WAAA,EAAa,oBAAA;AAAA;AAAA,KAOP,kBAAA;EACV,MAAA;EACA,KAAA;EACA,MAAA;EACA,IAAA,GAAO,WAAA;EACP,KAAA;IAAU,QAAA,GAAW,YAAA;EAAA;EACrB,aAAA,GAAgB,aAAA;EAChB,eAAA;AAAA;AAAA,KAGU,sBAAA;EACV,MAAA;EACA,KAAA;EACA,OAAA,EAAS,kBAAA;EAET,KAAA;EACA,WAAA;EACA,OAAA;AAAA;AAAA,cAGW,OAAA;AAAA,cACA,IAAA;;;KCxoBD,WAAA,MAAiB,CAAA,SAAU,CAAA,SAAU,CAAA;;;KCE5C,SAAA;AAAA,KAwBO,KAAA;EACV,IAAA,EAAM,SAAA;EACN,QAAA;EACA,OAAA;EACA,QAAA;AAAA;;;;;iBA8Cc,WAAA,CACd,IAAA,EAAM,IAAA,EACN,KAAA,GAAQ,WAAA,CAAY,IAAA,gBACnB,KAAA;;;KCoXS,mBAAA;EACV,MAAA,WN7bQ;EM+bR,IAAA;EACA,KAAA;EACA,MAAA;EACA,KAAA;AAAA;;;UCzbe,cAAA;EACf,KAAA,CAAM,KAAA,UAAe,MAAA,cAAoB,OAAA;AAAA;AAAA,cAG9B,iBAAA;AAAA,UAEI,eAAA;EACf,GAAA;EACA,KAAA;AAAA;AAAA,KAGU,WAAA;EACV,GAAA,EAAK,SAAA;EACL,KAAA,EAAO,WAAA;AAAA;AAAA,KAGG,yBAAA;ERnB6B,2DQqBvC,SAAA;ERCoB;;;;EQIpB,cAAA;ERwBwB;;;;;;AC/D1B;;;;;AAKA;;;EOiDE,KAAA,EAAO,mBAAA;EPlCmD;;;EOsC1D,OAAA,WPJ+B;EOM/B,QAAA;IACE,KAAA;IACA,GAAA;EAAA;EPtDM;;;;EO4DR,IAAA,GAAO,WAAA;EACP,KAAA;IAAU,QAAA,GAAW,YAAA;EAAA;EACrB,aAAA,GAAgB,aAAA;EAChB,eAAA;AAAA;AAAA,KAGU,aAAA;;KAGA,MAAA,IAAU,KAAA,aAAkB,OAAA;AAAA,KAE5B,cAAA;EACV,MAAA;EACA,KAAA;AAAA;AAAA,KAGU,cAAA;EACV,cAAA,EAAgB,yBAAA;EAChB,oBAAA;EACA,gBAAA,EAAkB,cAAA;EAClB,eAAA,EAAiB,mBAAA;EACjB,IAAA,EAAM,eAAA;EACN,gBAAA;EACA,yBAAA;EACA,MAAA,EAAQ,KAAA;AAAA;AAAA,KAGE,sBAAA;EACV,IAAA,EAAM,eAAA;EACN,gBAAA;AAAA;;;;;APwBF;;cOfa,QAAA;EAAA,iBACkB,MAAA;cAAA,MAAA,EAAQ,MAAA;EAC/B,OAAA,CACJ,KAAA,UACA,cAAA,YACC,OAAA,CAAQ,cAAA;EAmGX,aAAA,CACE,MAAA,EAAQ,aAAA,IACR,UAAA,EAAY,yBAAA,IACZ,gBAAA,EAAkB,cAAA,KACjB,kBAAA;EAAA,QAuHK,gBAAA;EAAA,QAmBA,SAAA;EAAA,QAMA,gBAAA;;;;;;;UAsBA,mBAAA;EAAA,QAkBA,SAAA;EAAA,QAOA,mBAAA;AAAA;;;iBCrZM,gBAAA,CAAiB,KAAA,EAAO,YAAA;;;;ATGxC;iBSKgB,wBAAA,CAAyB,KAAA,EAAO,YAAA;;;;;;;;cCLnC,WAAA;EACX,OAAA,CAAQ,KAAA;EAAA,QAIA,2BAAA;EAAA,QAaA,mBAAA;AAAA;;;iBCvBM,uBAAA,CAAwB,GAAA"}
|
package/dist/index.d.mts
CHANGED
|
@@ -186,6 +186,7 @@ declare const ExportedStatsStatistics: z.ZodObject<{
|
|
|
186
186
|
}, z.core.$strip>;
|
|
187
187
|
declare const ExportedStatsColumns: z.ZodObject<{
|
|
188
188
|
columnName: z.ZodString;
|
|
189
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
189
190
|
stats: z.ZodNullable<z.ZodObject<{
|
|
190
191
|
stawidth: z.ZodNumber;
|
|
191
192
|
stainherit: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -220,10 +221,15 @@ declare const ExportedStatsColumns: z.ZodObject<{
|
|
|
220
221
|
}, z.core.$strip>;
|
|
221
222
|
declare const ExportedStatsIndex: z.ZodObject<{
|
|
222
223
|
indexName: z.ZodString;
|
|
224
|
+
amname: z.ZodDefault<z.ZodString>;
|
|
223
225
|
relpages: z.ZodNumber;
|
|
224
226
|
reltuples: z.ZodNumber;
|
|
225
227
|
relallvisible: z.ZodNumber;
|
|
226
228
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
229
|
+
fillfactor: z.ZodDefault<z.ZodNumber>;
|
|
230
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
231
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
232
|
+
}, z.core.$strip>>>;
|
|
227
233
|
}, z.core.$strip>;
|
|
228
234
|
declare const ExportedStatsV1: z.ZodObject<{
|
|
229
235
|
tableName: z.ZodString;
|
|
@@ -232,8 +238,9 @@ declare const ExportedStatsV1: z.ZodObject<{
|
|
|
232
238
|
reltuples: z.ZodNumber;
|
|
233
239
|
relallvisible: z.ZodNumber;
|
|
234
240
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
235
|
-
columns: z.
|
|
241
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
236
242
|
columnName: z.ZodString;
|
|
243
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
237
244
|
stats: z.ZodNullable<z.ZodObject<{
|
|
238
245
|
stawidth: z.ZodNumber;
|
|
239
246
|
stainherit: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -268,10 +275,15 @@ declare const ExportedStatsV1: z.ZodObject<{
|
|
|
268
275
|
}, z.core.$strip>>>;
|
|
269
276
|
indexes: z.ZodArray<z.ZodObject<{
|
|
270
277
|
indexName: z.ZodString;
|
|
278
|
+
amname: z.ZodDefault<z.ZodString>;
|
|
271
279
|
relpages: z.ZodNumber;
|
|
272
280
|
reltuples: z.ZodNumber;
|
|
273
281
|
relallvisible: z.ZodNumber;
|
|
274
282
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
283
|
+
fillfactor: z.ZodDefault<z.ZodNumber>;
|
|
284
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
285
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
286
|
+
}, z.core.$strip>>>;
|
|
275
287
|
}, z.core.$strip>>;
|
|
276
288
|
}, z.core.$strip>;
|
|
277
289
|
declare const ExportedStats: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -281,8 +293,9 @@ declare const ExportedStats: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
281
293
|
reltuples: z.ZodNumber;
|
|
282
294
|
relallvisible: z.ZodNumber;
|
|
283
295
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
284
|
-
columns: z.
|
|
296
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
285
297
|
columnName: z.ZodString;
|
|
298
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
286
299
|
stats: z.ZodNullable<z.ZodObject<{
|
|
287
300
|
stawidth: z.ZodNumber;
|
|
288
301
|
stainherit: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -317,17 +330,21 @@ declare const ExportedStats: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
317
330
|
}, z.core.$strip>>>;
|
|
318
331
|
indexes: z.ZodArray<z.ZodObject<{
|
|
319
332
|
indexName: z.ZodString;
|
|
333
|
+
amname: z.ZodDefault<z.ZodString>;
|
|
320
334
|
relpages: z.ZodNumber;
|
|
321
335
|
reltuples: z.ZodNumber;
|
|
322
336
|
relallvisible: z.ZodNumber;
|
|
323
337
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
338
|
+
fillfactor: z.ZodDefault<z.ZodNumber>;
|
|
339
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
340
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
341
|
+
}, z.core.$strip>>>;
|
|
324
342
|
}, z.core.$strip>>;
|
|
325
343
|
}, z.core.$strip>]>;
|
|
326
344
|
type ExportedStats = z.infer<typeof ExportedStats>;
|
|
327
345
|
declare const StatisticsMode: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
328
346
|
kind: z.ZodLiteral<"fromAssumption">;
|
|
329
347
|
reltuples: z.ZodNumber;
|
|
330
|
-
relpages: z.ZodNumber;
|
|
331
348
|
}, z.core.$strip>, z.ZodObject<{
|
|
332
349
|
kind: z.ZodLiteral<"fromStatisticsExport">;
|
|
333
350
|
stats: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -337,8 +354,9 @@ declare const StatisticsMode: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
337
354
|
reltuples: z.ZodNumber;
|
|
338
355
|
relallvisible: z.ZodNumber;
|
|
339
356
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
340
|
-
columns: z.
|
|
357
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
341
358
|
columnName: z.ZodString;
|
|
359
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
342
360
|
stats: z.ZodNullable<z.ZodObject<{
|
|
343
361
|
stawidth: z.ZodNumber;
|
|
344
362
|
stainherit: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -373,10 +391,15 @@ declare const StatisticsMode: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
373
391
|
}, z.core.$strip>>>;
|
|
374
392
|
indexes: z.ZodArray<z.ZodObject<{
|
|
375
393
|
indexName: z.ZodString;
|
|
394
|
+
amname: z.ZodDefault<z.ZodString>;
|
|
376
395
|
relpages: z.ZodNumber;
|
|
377
396
|
reltuples: z.ZodNumber;
|
|
378
397
|
relallvisible: z.ZodNumber;
|
|
379
398
|
relallfrozen: z.ZodOptional<z.ZodNumber>;
|
|
399
|
+
fillfactor: z.ZodDefault<z.ZodNumber>;
|
|
400
|
+
columns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
401
|
+
attlen: z.ZodNullable<z.ZodNumber>;
|
|
402
|
+
}, z.core.$strip>>>;
|
|
380
403
|
}, z.core.$strip>>;
|
|
381
404
|
}, z.core.$strip>]>>;
|
|
382
405
|
source: z.ZodUnion<readonly [z.ZodObject<{
|
|
@@ -396,11 +419,9 @@ declare class Statistics {
|
|
|
396
419
|
static readonly defaultStatsMode: StatisticsMode;
|
|
397
420
|
constructor(db: Postgres, postgresVersion: PostgresVersion, ownMetadata: ExportedStats[], statsMode: StatisticsMode);
|
|
398
421
|
static statsModeFromAssumption({
|
|
399
|
-
reltuples
|
|
400
|
-
relpages
|
|
422
|
+
reltuples
|
|
401
423
|
}: {
|
|
402
424
|
reltuples: number;
|
|
403
|
-
relpages: number;
|
|
404
425
|
}): StatisticsMode;
|
|
405
426
|
/**
|
|
406
427
|
* Create a statistic mode from stats exported from another database
|
|
@@ -753,5 +774,8 @@ declare class PssRewriter {
|
|
|
753
774
|
private problematicKeywords;
|
|
754
775
|
}
|
|
755
776
|
//#endregion
|
|
756
|
-
|
|
777
|
+
//#region src/sentry.d.ts
|
|
778
|
+
declare function deriveSentryEnvironment(url: string | undefined): string;
|
|
779
|
+
//#endregion
|
|
780
|
+
export { AnalysisResult, Analyzer, ColumnMetadata, DatabaseDriver, DiscoveredColumnReference, ExportedStats, ExportedStatsColumns, ExportedStatsIndex, ExportedStatsStatistics, ExportedStatsV1, IndexIdentifier, IndexOptimizer, IndexOrder, IndexRecommendation, IndexedTable, JsonbOperator, Nudge, OptimizeResult, PROCEED, Parameter, Parser, Path, PermutedIndexCandidate, PgIdentifier, Postgres, PostgresConnectionInput, PostgresExplainResult, PostgresExplainStage, PostgresExplainStageCommon, PostgresExplainStageSchema, PostgresFactory, PostgresQueryBuilder, PostgresQueryBuilderCommand, PostgresStage, PostgresStageId, PostgresTransaction, PostgresVersion, PssRewriter, RootIndexCandidate, SKIP, SQLCommenterExtraction, SQLCommenterTag, SerializeResult, SortContext, Statistics, StatisticsMode, StatisticsSource, TableMetadata, TableReference, TableStats, deriveSentryEnvironment, dropIndex, ignoredIdentifier, isIndexProbablyDroppable, isIndexSupported, parseNudges };
|
|
757
781
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/sql/pg-identifier.ts","../src/sql/builder.ts","../src/sql/database.ts","../src/optimizer/statistics.ts","../src/optimizer/genalgo.ts","../src/sql/ast-utils.ts","../src/sql/nudges.ts","../src/sql/walker.ts","../src/sql/analyzer.ts","../src/sql/indexes.ts","../src/optimizer/pss-rewriter.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/sql/pg-identifier.ts","../src/sql/builder.ts","../src/sql/database.ts","../src/optimizer/statistics.ts","../src/optimizer/genalgo.ts","../src/sql/ast-utils.ts","../src/sql/nudges.ts","../src/sql/walker.ts","../src/sql/analyzer.ts","../src/sql/indexes.ts","../src/optimizer/pss-rewriter.ts","../src/sentry.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1793,14 +1793,18 @@ const ExportedStatsStatistics = z.object({
|
|
|
1793
1793
|
});
|
|
1794
1794
|
const ExportedStatsColumns = z.object({
|
|
1795
1795
|
columnName: z.string(),
|
|
1796
|
+
attlen: z.number().nullable(),
|
|
1796
1797
|
stats: ExportedStatsStatistics.nullable()
|
|
1797
1798
|
});
|
|
1798
1799
|
const ExportedStatsIndex = z.object({
|
|
1799
1800
|
indexName: z.string(),
|
|
1801
|
+
amname: z.string().default("btree"),
|
|
1800
1802
|
relpages: z.number(),
|
|
1801
1803
|
reltuples: z.number(),
|
|
1802
1804
|
relallvisible: z.number(),
|
|
1803
|
-
relallfrozen: z.number().optional()
|
|
1805
|
+
relallfrozen: z.number().optional(),
|
|
1806
|
+
fillfactor: z.number().default(90),
|
|
1807
|
+
columns: z.array(z.object({ attlen: z.number().nullable() })).default([])
|
|
1804
1808
|
});
|
|
1805
1809
|
const ExportedStatsV1 = z.object({
|
|
1806
1810
|
tableName: z.string(),
|
|
@@ -1809,14 +1813,13 @@ const ExportedStatsV1 = z.object({
|
|
|
1809
1813
|
reltuples: z.number(),
|
|
1810
1814
|
relallvisible: z.number(),
|
|
1811
1815
|
relallfrozen: z.number().optional(),
|
|
1812
|
-
columns: z.array(ExportedStatsColumns).
|
|
1816
|
+
columns: z.array(ExportedStatsColumns).default([]),
|
|
1813
1817
|
indexes: z.array(ExportedStatsIndex)
|
|
1814
1818
|
});
|
|
1815
1819
|
const ExportedStats = z.union([ExportedStatsV1]);
|
|
1816
1820
|
const StatisticsMode = z.discriminatedUnion("kind", [z.object({
|
|
1817
1821
|
kind: z.literal("fromAssumption"),
|
|
1818
|
-
reltuples: z.number().min(0)
|
|
1819
|
-
relpages: z.number().min(0)
|
|
1822
|
+
reltuples: z.number().min(0)
|
|
1820
1823
|
}), z.object({
|
|
1821
1824
|
kind: z.literal("fromStatisticsExport"),
|
|
1822
1825
|
stats: z.array(ExportedStats),
|
|
@@ -1824,6 +1827,19 @@ const StatisticsMode = z.discriminatedUnion("kind", [z.object({
|
|
|
1824
1827
|
})]);
|
|
1825
1828
|
const DEFAULT_RELTUPLES = 1e4;
|
|
1826
1829
|
const DEFAULT_RELPAGES = 1;
|
|
1830
|
+
const DEFAULT_PAGE_SIZE = 2 ** 13;
|
|
1831
|
+
function estimateStawidth(col) {
|
|
1832
|
+
return col.attlen ?? 32;
|
|
1833
|
+
}
|
|
1834
|
+
function estimateRelpages(reltuples, columns) {
|
|
1835
|
+
const rowWidth = columns.reduce((sum, col) => sum + estimateStawidth(col), 0) + 27;
|
|
1836
|
+
return Math.ceil(reltuples * rowWidth / DEFAULT_PAGE_SIZE);
|
|
1837
|
+
}
|
|
1838
|
+
function estimateIndexRelpages(reltuples, columns, fillfactor, amname, tableRelpages) {
|
|
1839
|
+
if (amname === "gin") return Math.ceil(tableRelpages * .3);
|
|
1840
|
+
const keyWidth = columns.reduce((sum, col) => sum + estimateStawidth(col) + 16, 0);
|
|
1841
|
+
return Math.ceil(reltuples * keyWidth / DEFAULT_PAGE_SIZE / fillfactor);
|
|
1842
|
+
}
|
|
1827
1843
|
var Statistics = class Statistics {
|
|
1828
1844
|
constructor(db, postgresVersion, ownMetadata, statsMode) {
|
|
1829
1845
|
this.db = db;
|
|
@@ -1836,11 +1852,10 @@ var Statistics = class Statistics {
|
|
|
1836
1852
|
if (statsMode.kind === "fromStatisticsExport") this.exportedMetadata = statsMode.stats;
|
|
1837
1853
|
} else this.mode = Statistics.defaultStatsMode;
|
|
1838
1854
|
}
|
|
1839
|
-
static statsModeFromAssumption({ reltuples
|
|
1855
|
+
static statsModeFromAssumption({ reltuples }) {
|
|
1840
1856
|
return {
|
|
1841
1857
|
kind: "fromAssumption",
|
|
1842
|
-
reltuples
|
|
1843
|
-
relpages
|
|
1858
|
+
reltuples
|
|
1844
1859
|
};
|
|
1845
1860
|
}
|
|
1846
1861
|
/**
|
|
@@ -1904,17 +1919,17 @@ var Statistics = class Statistics {
|
|
|
1904
1919
|
const columnStatsValues = [];
|
|
1905
1920
|
for (const table of this.ownMetadata) {
|
|
1906
1921
|
const target = (this.exportedMetadata?.find((m) => m.tableName === table.tableName && m.schemaName === table.schemaName))?.columns ?? table.columns;
|
|
1907
|
-
if (!target) continue;
|
|
1908
1922
|
for (const column of target) {
|
|
1909
1923
|
const { stats } = column;
|
|
1910
1924
|
if (!stats || this.mode.kind === "fromAssumption") {
|
|
1925
|
+
const stawidth = stats?.stawidth || estimateStawidth(column);
|
|
1911
1926
|
columnStatsValues.push({
|
|
1912
1927
|
schema_name: table.schemaName,
|
|
1913
1928
|
table_name: table.tableName,
|
|
1914
1929
|
column_name: column.columnName,
|
|
1915
1930
|
stainherit: false,
|
|
1916
1931
|
stanullfrac: .04,
|
|
1917
|
-
stawidth
|
|
1932
|
+
stawidth,
|
|
1918
1933
|
stadistinct: -.9,
|
|
1919
1934
|
stakind1: 0,
|
|
1920
1935
|
stakind2: 0,
|
|
@@ -2215,7 +2230,7 @@ var Statistics = class Statistics {
|
|
|
2215
2230
|
let relallfrozen;
|
|
2216
2231
|
if (this.mode.kind === "fromAssumption") {
|
|
2217
2232
|
reltuples = this.mode.reltuples;
|
|
2218
|
-
relpages =
|
|
2233
|
+
relpages = estimateRelpages(reltuples, table.columns);
|
|
2219
2234
|
} else if (targetTable) {
|
|
2220
2235
|
reltuples = targetTable.reltuples;
|
|
2221
2236
|
relpages = targetTable.relpages;
|
|
@@ -2234,15 +2249,18 @@ var Statistics = class Statistics {
|
|
|
2234
2249
|
relallfrozen,
|
|
2235
2250
|
relallvisible
|
|
2236
2251
|
});
|
|
2237
|
-
if (this.mode.kind === "fromAssumption") for (const index of table.indexes)
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
|
|
2241
|
-
|
|
2242
|
-
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
-
|
|
2252
|
+
if (this.mode.kind === "fromAssumption") for (const index of table.indexes) {
|
|
2253
|
+
const indexRelpages = estimateIndexRelpages(this.mode.reltuples, index.columns, index.fillfactor / 100, index.amname, relpages);
|
|
2254
|
+
reltuplesValues.push({
|
|
2255
|
+
relname: index.indexName,
|
|
2256
|
+
schema_name: table.schemaName,
|
|
2257
|
+
reltuples: this.mode.reltuples,
|
|
2258
|
+
relpages: indexRelpages,
|
|
2259
|
+
relallfrozen: 0,
|
|
2260
|
+
relallvisible: indexRelpages
|
|
2261
|
+
});
|
|
2262
|
+
}
|
|
2263
|
+
else if (targetTable) for (const index of targetTable.indexes) reltuplesValues.push({
|
|
2246
2264
|
relname: index.indexName,
|
|
2247
2265
|
schema_name: targetTable.schemaName,
|
|
2248
2266
|
reltuples: index.reltuples,
|
|
@@ -2285,19 +2303,19 @@ var Statistics = class Statistics {
|
|
|
2285
2303
|
static async dumpStats(db, postgresVersion, kind) {
|
|
2286
2304
|
const fullDump = kind === "full";
|
|
2287
2305
|
console.log(`dumping stats for postgres ${gray(postgresVersion)}`);
|
|
2288
|
-
|
|
2306
|
+
const stats = await db.exec(`
|
|
2289
2307
|
WITH table_columns AS (
|
|
2290
2308
|
SELECT
|
|
2291
|
-
|
|
2292
|
-
|
|
2309
|
+
cl.relname,
|
|
2310
|
+
n.nspname,
|
|
2293
2311
|
cl.reltuples,
|
|
2294
2312
|
cl.relpages,
|
|
2295
2313
|
cl.relallvisible,
|
|
2296
2314
|
-- cl.relallfrozen,
|
|
2297
|
-
n.nspname AS schema_name,
|
|
2298
2315
|
json_agg(
|
|
2299
2316
|
json_build_object(
|
|
2300
|
-
'columnName',
|
|
2317
|
+
'columnName', a.attname,
|
|
2318
|
+
'attlen', CASE WHEN a.attlen > 0 THEN a.attlen ELSE NULL END,
|
|
2301
2319
|
'stats', (
|
|
2302
2320
|
SELECT json_build_object(
|
|
2303
2321
|
'starelid', s.starelid,
|
|
@@ -2320,21 +2338,15 @@ var Statistics = class Statistics {
|
|
|
2320
2338
|
WHERE s.starelid = a.attrelid AND s.staattnum = a.attnum
|
|
2321
2339
|
)
|
|
2322
2340
|
)
|
|
2323
|
-
ORDER BY
|
|
2341
|
+
ORDER BY a.attnum
|
|
2324
2342
|
) AS columns
|
|
2325
|
-
FROM
|
|
2326
|
-
JOIN
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
ON n.oid = cl.relnamespace
|
|
2333
|
-
WHERE c.table_name NOT LIKE 'pg_%'
|
|
2334
|
-
AND n.nspname <> 'information_schema'
|
|
2335
|
-
AND n.nspname NOT IN ('tiger', 'tiger_data', 'topology')
|
|
2336
|
-
AND c.table_name NOT IN ('pg_stat_statements', 'pg_stat_statements_info')
|
|
2337
|
-
GROUP BY c.table_name, c.table_schema, cl.reltuples, cl.relpages, cl.relallvisible, n.nspname
|
|
2343
|
+
FROM pg_class cl
|
|
2344
|
+
JOIN pg_namespace n ON n.oid = cl.relnamespace
|
|
2345
|
+
JOIN pg_attribute a ON a.attrelid = cl.oid AND a.attnum > 0 AND NOT a.attisdropped
|
|
2346
|
+
WHERE cl.relkind = 'r'
|
|
2347
|
+
AND n.nspname NOT IN ('pg_catalog', 'information_schema', 'tiger', 'tiger_data', 'topology')
|
|
2348
|
+
AND cl.relname NOT IN ('pg_stat_statements', 'pg_stat_statements_info')
|
|
2349
|
+
GROUP BY cl.relname, n.nspname, cl.reltuples, cl.relpages, cl.relallvisible
|
|
2338
2350
|
),
|
|
2339
2351
|
table_indexes AS (
|
|
2340
2352
|
SELECT
|
|
@@ -2342,15 +2354,37 @@ var Statistics = class Statistics {
|
|
|
2342
2354
|
json_agg(
|
|
2343
2355
|
json_build_object(
|
|
2344
2356
|
'indexName', i.relname,
|
|
2357
|
+
'amname', am.amname,
|
|
2345
2358
|
'reltuples', i.reltuples,
|
|
2346
2359
|
'relpages', i.relpages,
|
|
2347
|
-
'relallvisible', i.relallvisible
|
|
2348
|
-
-- 'relallfrozen', i.relallfrozen
|
|
2360
|
+
'relallvisible', i.relallvisible,
|
|
2361
|
+
-- 'relallfrozen', i.relallfrozen,
|
|
2362
|
+
'fillfactor', COALESCE(
|
|
2363
|
+
(
|
|
2364
|
+
SELECT (regexp_match(opt, 'fillfactor=(\\d+)'))[1]::integer
|
|
2365
|
+
FROM unnest(i.reloptions) AS opt
|
|
2366
|
+
WHERE opt LIKE 'fillfactor=%'
|
|
2367
|
+
LIMIT 1
|
|
2368
|
+
),
|
|
2369
|
+
90
|
|
2370
|
+
),
|
|
2371
|
+
'columns', COALESCE(
|
|
2372
|
+
(
|
|
2373
|
+
SELECT json_agg(json_build_object(
|
|
2374
|
+
'attlen', CASE WHEN a.attlen > 0 THEN a.attlen ELSE NULL END
|
|
2375
|
+
) ORDER BY col_pos.ord)
|
|
2376
|
+
FROM unnest(ix.indkey) WITH ORDINALITY AS col_pos(attnum, ord)
|
|
2377
|
+
JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = col_pos.attnum
|
|
2378
|
+
WHERE col_pos.attnum > 0
|
|
2379
|
+
),
|
|
2380
|
+
'[]'::json
|
|
2381
|
+
)
|
|
2349
2382
|
)
|
|
2350
2383
|
) AS indexes
|
|
2351
2384
|
FROM pg_class t
|
|
2352
2385
|
JOIN pg_index ix ON ix.indrelid = t.oid
|
|
2353
2386
|
JOIN pg_class i ON i.oid = ix.indexrelid
|
|
2387
|
+
JOIN pg_am am ON am.oid = i.relam
|
|
2354
2388
|
JOIN pg_namespace n ON n.oid = t.relnamespace
|
|
2355
2389
|
WHERE t.relname NOT LIKE 'pg_%'
|
|
2356
2390
|
AND n.nspname <> 'information_schema'
|
|
@@ -2359,20 +2393,21 @@ var Statistics = class Statistics {
|
|
|
2359
2393
|
)
|
|
2360
2394
|
SELECT json_agg(
|
|
2361
2395
|
json_build_object(
|
|
2362
|
-
'tableName', tc.
|
|
2363
|
-
'schemaName', tc.
|
|
2396
|
+
'tableName', tc.relname,
|
|
2397
|
+
'schemaName', tc.nspname,
|
|
2364
2398
|
'reltuples', tc.reltuples,
|
|
2365
2399
|
'relpages', tc.relpages,
|
|
2366
2400
|
'relallvisible', tc.relallvisible,
|
|
2367
2401
|
-- 'relallfrozen', tc.relallfrozen,
|
|
2368
|
-
'columns', tc.columns,
|
|
2402
|
+
'columns', COALESCE(tc.columns, '[]'::json),
|
|
2369
2403
|
'indexes', COALESCE(ti.indexes, '[]'::json)
|
|
2370
2404
|
)
|
|
2371
2405
|
)
|
|
2372
2406
|
FROM table_columns tc
|
|
2373
2407
|
LEFT JOIN table_indexes ti
|
|
2374
|
-
ON ti.table_name = tc.
|
|
2375
|
-
`, [fullDump])
|
|
2408
|
+
ON ti.table_name = tc.relname;
|
|
2409
|
+
`, [fullDump]);
|
|
2410
|
+
return z.array(ExportedStats).parse(stats[0].json_agg);
|
|
2376
2411
|
}
|
|
2377
2412
|
/**
|
|
2378
2413
|
* Returns all indexes in the database.
|
|
@@ -2467,6 +2502,15 @@ var PssRewriter = class {
|
|
|
2467
2502
|
}
|
|
2468
2503
|
};
|
|
2469
2504
|
//#endregion
|
|
2470
|
-
|
|
2505
|
+
//#region src/sentry.ts
|
|
2506
|
+
function deriveSentryEnvironment(url) {
|
|
2507
|
+
if (!url) return "local";
|
|
2508
|
+
if (url.includes("next")) return "next";
|
|
2509
|
+
if (url.includes("staging")) return "staging";
|
|
2510
|
+
if (url.includes("querydoctor.com")) return "production";
|
|
2511
|
+
return "local";
|
|
2512
|
+
}
|
|
2513
|
+
//#endregion
|
|
2514
|
+
export { Analyzer, ExportedStats, ExportedStatsColumns, ExportedStatsIndex, ExportedStatsStatistics, ExportedStatsV1, IndexOptimizer, PROCEED, PgIdentifier, PostgresExplainStageSchema, PostgresQueryBuilder, PostgresVersion, PssRewriter, SKIP, Statistics, StatisticsMode, StatisticsSource, deriveSentryEnvironment, dropIndex, ignoredIdentifier, isIndexProbablyDroppable, isIndexSupported, parseNudges };
|
|
2471
2515
|
|
|
2472
2516
|
//# sourceMappingURL=index.mjs.map
|