@query-doctor/core 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,7 +60,7 @@ export declare class IndexOptimizer {
60
60
  }): Promise<{
61
61
  Plan: PostgresExplainStage;
62
62
  }>;
63
- private tableColumnIndexCandidates;
63
+ private groupPotentialIndexColumnsByTable;
64
64
  private findUsedIndexes;
65
65
  private replaceUsedIndexesWithDefinition;
66
66
  }
@@ -94,9 +94,4 @@ export type PermutedIndexCandidate = {
94
94
  };
95
95
  export declare const PROCEED: unique symbol;
96
96
  export declare const SKIP: unique symbol;
97
- /**
98
- * Allows permuting over an array of items.
99
- * The generator allows the caller to prematurely stop the permutation chain.
100
- */
101
- export declare function permuteWithFeedback<T>(arr: T[]): Generator<T[], void, typeof PROCEED | typeof SKIP>;
102
97
  //# sourceMappingURL=genalgo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"genalgo.d.ts","sourceRoot":"","sources":["../../src/optimizer/genalgo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genalgo.d.ts","sourceRoot":"","sources":["../../src/optimizer/genalgo.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export declare class PostgresQueryBuilder {
6
6
  private isIntrospection;
7
7
  private explainFlags;
8
8
  private _preamble;
9
+ private parameters;
10
+ private limitSubstitution?;
9
11
  constructor(query: string);
10
12
  get preamble(): number;
11
13
  static createIndex(definition: string, name?: PgIdentifier): PostgresQueryBuilder;
@@ -13,6 +15,8 @@ export declare class PostgresQueryBuilder {
13
15
  withQuery(query: string): this;
14
16
  introspect(): this;
15
17
  explain(flags: string[]): this;
18
+ parameterize(parameters: Record<Parameter, number>): this;
19
+ replaceLimit(limit: number): this;
16
20
  build(): string;
17
21
  /** Return the "set a=b" parts of the command in the query separate from the explain select ... part */
18
22
  buildParts(): {
@@ -21,5 +25,7 @@ export declare class PostgresQueryBuilder {
21
25
  };
22
26
  private generateSetCommands;
23
27
  private generateExplain;
28
+ private substituteQuery;
24
29
  }
30
+ export type Parameter = `$${string}`;
25
31
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
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;IAMnB,OAAO,CAAC,KAAK;IALzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IACvD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,SAAS,CAAK;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,KAAK,IAAI,MAAM;IASf,uGAAuG;IACvG,UAAU;;;;IAUV,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,eAAe;CAWxB"}
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"}
@@ -0,0 +1,10 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permutations.d.ts","sourceRoot":"","sources":["../../src/sql/permutations.ts"],"names":[],"mappings":"AAAA;;;;;;;IAOI;AACJ,wBAAgB,gCAAgC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAgBnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"pg-identifier.d.ts","sourceRoot":"","sources":["../../src/sql/pg-identifier.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,OAAO;IAKP;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;IAYnD;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,WAAW,EAAE,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,YAAY;IAezE,QAAQ,IAAI,MAAM;IAOlB,MAAM,IAAI,MAAM;IAMhB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAqKrC;CACJ"}
1
+ {"version":3,"file":"pg-identifier.d.ts","sourceRoot":"","sources":["../../src/sql/pg-identifier.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFzB,OAAO;IAKP;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY;IAgBnD;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,WAAW,EAAE,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,GAAG,YAAY;IAezE,QAAQ,IAAI,MAAM;IAOlB,MAAM,IAAI,MAAM;IAMhB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAqKrC;CACJ"}
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "@query-doctor/core",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "private": false,
5
5
  "description": "Core logic for Query Doctor",
6
6
  "license": "",
7
7
  "author": "Query Doctor",
8
+ "files": [
9
+ "dist/**"
10
+ ],
8
11
  "type": "module",
9
12
  "main": "dist/index.js",
10
13
  "types": "dist/index.d.ts",
@@ -21,10 +24,10 @@
21
24
  "test": "node --import tsx --test src/**/*.test.ts"
22
25
  },
23
26
  "dependencies": {
24
- "@pgsql/types": "^17.6.1",
27
+ "@pgsql/types": "^17.6.2",
25
28
  "colorette": "^2.0.20",
26
- "dedent": "^1.7.0",
27
- "pgsql-deparser": "^17.11.1",
29
+ "dedent": "^1.7.1",
30
+ "pgsql-deparser": "^17.17.2",
28
31
  "zod": "^4.1.13"
29
32
  },
30
33
  "devDependencies": {
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pss-rewriter.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pss-rewriter.test.d.ts","sourceRoot":"","sources":["../../src/optimizer/pss-rewriter.test.ts"],"names":[],"mappings":""}
@@ -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,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=permutations.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"permutations.test.d.ts","sourceRoot":"","sources":["../../src/sql/permutations.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=pg-identifier.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pg-identifier.test.d.ts","sourceRoot":"","sources":["../../src/sql/pg-identifier.test.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=walker.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"walker.test.d.ts","sourceRoot":"","sources":["../../src/sql/walker.test.ts"],"names":[],"mappings":""}
package/tsconfig.json DELETED
@@ -1,12 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "strictPropertyInitialization": false,
4
- "target": "es2022",
5
- "lib": ["es2022"],
6
- "outDir": "dist",
7
- "baseUrl": "."
8
- },
9
- "extends": "@query-doctor/typescript-config/react-library.json",
10
- "include": ["src"],
11
- "exclude": ["dist", "build", "node_modules"]
12
- }