@sixb/pg 0.1.15 → 0.1.17
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/README.md +125 -0
- package/dist/index.d.ts +15 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3202 -1474
- package/dist/index.js.map +32 -25
- package/dist/migrations.d.ts.map +1 -1
- package/dist/objects/aggregate-admission.d.ts +10 -0
- package/dist/objects/aggregate-admission.d.ts.map +1 -0
- package/dist/objects/preparation-lock.d.ts +6 -0
- package/dist/objects/preparation-lock.d.ts.map +1 -0
- package/dist/objects/prepare-queries.d.ts +5 -0
- package/dist/objects/prepare-queries.d.ts.map +1 -0
- package/dist/objects/query-compiler.d.ts +19 -0
- package/dist/objects/query-compiler.d.ts.map +1 -1
- package/dist/objects/query-indexes.d.ts +43 -0
- package/dist/objects/query-indexes.d.ts.map +1 -0
- package/dist/objects/reader.d.ts +7 -1
- package/dist/objects/reader.d.ts.map +1 -1
- package/dist/objects/storage.d.ts +1 -1
- package/dist/objects/storage.d.ts.map +1 -1
- package/dist/objects/text-count-index.d.ts +24 -0
- package/dist/objects/text-count-index.d.ts.map +1 -0
- package/dist/ontology-storage/index.d.ts +2 -0
- package/dist/ontology-storage/index.d.ts.map +1 -1
- package/dist/ontology-storage/materialization-session.d.ts +18 -38
- package/dist/ontology-storage/materialization-session.d.ts.map +1 -1
- package/dist/ontology-storage/materialization-state.d.ts +3 -26
- package/dist/ontology-storage/materialization-state.d.ts.map +1 -1
- package/dist/ontology-storage/materialization-writer.d.ts +51 -9
- package/dist/ontology-storage/materialization-writer.d.ts.map +1 -1
- package/dist/ontology-storage/materializations.d.ts +5 -7
- package/dist/ontology-storage/materializations.d.ts.map +1 -1
- package/dist/ontology-storage/outbox.d.ts.map +1 -1
- package/dist/ontology-storage/replacement-plans.d.ts +36 -0
- package/dist/ontology-storage/replacement-plans.d.ts.map +1 -0
- package/dist/ontology-storage/shared.d.ts +11 -5
- package/dist/ontology-storage/shared.d.ts.map +1 -1
- package/dist/ontology-storage/source-cleanup.d.ts.map +1 -1
- package/dist/ontology-storage/source-roots.d.ts +14 -1
- package/dist/ontology-storage/source-roots.d.ts.map +1 -1
- package/dist/ontology-storage/sources.d.ts +1 -2
- package/dist/ontology-storage/sources.d.ts.map +1 -1
- package/dist/pg-ai-cost-storage.d.ts.map +1 -1
- package/dist/pg-ai-limit-storage.d.ts.map +1 -1
- package/dist/pg-ai-usage-storage.d.ts +2 -0
- package/dist/pg-ai-usage-storage.d.ts.map +1 -1
- package/dist/pg-execution-storage.d.ts +28 -0
- package/dist/pg-execution-storage.d.ts.map +1 -1
- package/dist/pg-file-download-grant-storage.d.ts +11 -0
- package/dist/pg-file-download-grant-storage.d.ts.map +1 -0
- package/dist/pg-projection-run-storage.d.ts.map +1 -1
- package/dist/pg-rules-storage.d.ts.map +1 -1
- package/dist/transactions.d.ts +6 -2
- package/dist/transactions.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +53 -3
- package/src/migrations/053-replacement-plans.sql +72 -0
- package/src/migrations/054-slim-ontology-outbox.sql +108 -0
- package/src/migrations/055-object-query-preparation.sql +11 -0
- package/src/migrations/056-commit-touches.sql +41 -0
- package/src/migrations/057-audio-transcription.sql +10 -0
- package/src/migrations/058-reranking-model-kind.sql +11 -0
- package/src/migrations/059-file-download-grants.sql +16 -0
- package/src/migrations/060-drained-source-versions.sql +11 -0
- package/src/migrations.ts +20 -0
- package/src/objects/aggregate-admission.ts +21 -0
- package/src/objects/preparation-lock.ts +15 -0
- package/src/objects/prepare-queries.ts +181 -0
- package/src/objects/query-compiler.ts +405 -115
- package/src/objects/query-indexes.ts +348 -0
- package/src/objects/reader.ts +140 -51
- package/src/objects/storage.ts +15 -3
- package/src/objects/text-count-index.ts +455 -0
- package/src/ontology-storage/index.ts +3 -0
- package/src/ontology-storage/materialization-session.ts +116 -275
- package/src/ontology-storage/materialization-state.ts +8 -259
- package/src/ontology-storage/materialization-writer.ts +618 -508
- package/src/ontology-storage/materializations.ts +106 -289
- package/src/ontology-storage/outbox.ts +46 -15
- package/src/ontology-storage/replacement-plans.ts +1110 -0
- package/src/ontology-storage/shared.ts +27 -15
- package/src/ontology-storage/source-cleanup.ts +22 -10
- package/src/ontology-storage/source-roots.ts +35 -8
- package/src/ontology-storage/sources.ts +0 -30
- package/src/pg-ai-cost-storage.ts +12 -0
- package/src/pg-ai-limit-storage.ts +13 -2
- package/src/pg-ai-usage-storage.ts +8 -0
- package/src/pg-execution-storage.ts +8 -3
- package/src/pg-file-download-grant-storage.ts +76 -0
- package/src/pg-projection-run-storage.ts +6 -1
- package/src/pg-rules-storage.ts +7 -3
- package/src/transactions.ts +10 -3
package/dist/migrations.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAGV,YAAY,EACZ,aAAa,EACb,oBAAoB,EACrB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAGV,YAAY,EACZ,aAAa,EACb,oBAAoB,EACrB,MAAM,oBAAoB,CAAA;AAqH3B,OAAO,KAAK,EAAe,GAAG,EAAa,MAAM,aAAa,CAAA;AAG9D,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,2BAA2B,wBAAwB,CAAA;AAEhE,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,wBAAwB,CAAC,CAE1F;AAED,wBAAgB,MAAM,CACpB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC/D,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAAC,wBAAwB,CAAC,CAEzC;AAED,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,MAAM,GACjB,SAAS,eAAe,EAAE,CAQ5B;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,wBAAwB,CAAC,CAAA;CAC5D,GAAG,eAAe,CAqBlB;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxF;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5E;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKrD;AAuKD,eAAO,MAAM,yBAAyB,wCAgEpC,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Limit expensive root aggregates before they reserve a database connection. Pages can
|
|
2
|
+
* use the remaining pool capacity. No results or object revisions are retained here. */
|
|
3
|
+
export declare class PgAggregateAdmission {
|
|
4
|
+
private readonly concurrency;
|
|
5
|
+
private active;
|
|
6
|
+
private readonly waiting;
|
|
7
|
+
constructor(concurrency?: number);
|
|
8
|
+
run<T>(compute: () => Promise<T>): Promise<T>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=aggregate-admission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate-admission.d.ts","sourceRoot":"","sources":["../../src/objects/aggregate-admission.ts"],"names":[],"mappings":"AAAA;wFACwF;AACxF,qBAAa,oBAAoB;IAInB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAHxC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEhB,WAAW,SAAI;IAEtC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAYpD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ReservedSQL } from "../pg-client";
|
|
2
|
+
/** CREATE INDEX CONCURRENTLY on expressions/partial indexes waits for older snapshots.
|
|
3
|
+
* A blocking pg_advisory_lock SELECT can hold one while waiting for the index builder,
|
|
4
|
+
* producing a cycle. Try-lock in short statements and wait outside PostgreSQL instead. */
|
|
5
|
+
export declare function lockPgPreparation(sql: ReservedSQL, key: string): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=preparation-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preparation-lock.d.ts","sourceRoot":"","sources":["../../src/objects/preparation-lock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C;;0FAE0F;AAC1F,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASpF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ObjectQueryPreparationPlan, ObjectQueryPreparationResult } from "@sixb/core/storage";
|
|
2
|
+
import type { SQL } from "../pg-client";
|
|
3
|
+
/** Reconcile ontology indexes and text columns once per plan, coordinating concurrent startups. */
|
|
4
|
+
export declare function preparePgObjectQueries(sql: SQL, schema: string, plan: ObjectQueryPreparationPlan): Promise<ObjectQueryPreparationResult>;
|
|
5
|
+
//# sourceMappingURL=prepare-queries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare-queries.d.ts","sourceRoot":"","sources":["../../src/objects/prepare-queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAA;AAClG,OAAO,KAAK,EAAe,GAAG,EAAa,MAAM,cAAc,CAAA;AAM/D,mGAAmG;AACnG,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,4BAA4B,CAAC,CAiCvC"}
|
|
@@ -6,6 +6,11 @@ export interface PgObjectQueryPageRow {
|
|
|
6
6
|
_cursor_properties?: unknown;
|
|
7
7
|
}
|
|
8
8
|
export interface CompiledPgObjectQuery {
|
|
9
|
+
traversalProbe?: {
|
|
10
|
+
sql: string;
|
|
11
|
+
args: unknown[];
|
|
12
|
+
limit: number;
|
|
13
|
+
};
|
|
9
14
|
vectorProbe?: {
|
|
10
15
|
sql: string;
|
|
11
16
|
args: unknown[];
|
|
@@ -54,6 +59,8 @@ type CompiledOrderField = {
|
|
|
54
59
|
export declare function compilePgObjectQuery(projectId: string, query: ObjectQuery, options?: {
|
|
55
60
|
includeTotal?: boolean;
|
|
56
61
|
source?: PgObjectQuerySource;
|
|
62
|
+
correlatedTraversal?: boolean;
|
|
63
|
+
sortIndexBound?: string;
|
|
57
64
|
}): CompiledPgObjectQuery;
|
|
58
65
|
/** Physical relations used by the PostgreSQL object-query compiler. */
|
|
59
66
|
export interface PgObjectQuerySource {
|
|
@@ -79,5 +86,17 @@ export declare function compilePgObjectExistsQuery(projectId: string, query: Obj
|
|
|
79
86
|
export declare function compilePgObjectFacetQuery(projectId: string, query: ObjectQuery, propertyId: string, limit: number, options?: {
|
|
80
87
|
source?: PgObjectQuerySource;
|
|
81
88
|
}): CompiledPgFacetQuery;
|
|
89
|
+
/** A single aggregate computes every facet and its exact total under one SQL snapshot. */
|
|
90
|
+
export declare function compilePgObjectFacetsQuery(projectId: string, query: ObjectQuery, facets: readonly {
|
|
91
|
+
propertyId: string;
|
|
92
|
+
limit: number;
|
|
93
|
+
}[], options?: {
|
|
94
|
+
source?: PgObjectQuerySource;
|
|
95
|
+
}): CompiledPgFacetQuery;
|
|
96
|
+
/** Input is a numbered statement returning properties; compact read paths can supply it too. */
|
|
97
|
+
export declare function compilePgFacetSummary(source: CompiledPgFacetQuery, facets: readonly {
|
|
98
|
+
propertyId: string;
|
|
99
|
+
limit: number;
|
|
100
|
+
}[], nativeValues?: boolean): CompiledPgFacetQuery;
|
|
82
101
|
export {};
|
|
83
102
|
//# sourceMappingURL=query-compiler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-compiler.d.ts","sourceRoot":"","sources":["../../src/objects/query-compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAKhB,KAAK,eAAe,EACrB,MAAM,YAAY,CAAA;AAQnB,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7D,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,EAAE,CAAA;IACpB,KAAK,EAAE,aAAa,CAAA;IACpB,YAAY,CAAC,EAAE,oBAAoB,CAAA;IACnC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAClD,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAAA;IAC7C,aAAa,CAAC,IAAI,EAAE,SAAS,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAC3F;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,EAAE,CAAA;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,EAAE,CAAA;CAChB;AAED,UAAU,oBAAoB;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CACnC;
|
|
1
|
+
{"version":3,"file":"query-compiler.d.ts","sourceRoot":"","sources":["../../src/objects/query-compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ObjectQuery, QueryScalarKind } from "@sixb/core";
|
|
2
|
+
import type { ReservedSQL, SQL, SQLClient } from "../pg-client";
|
|
3
|
+
export interface PgObjectQueryIndexScope {
|
|
4
|
+
readonly projectId: string;
|
|
5
|
+
readonly objectTypeId: string;
|
|
6
|
+
/** Optional equality conditions. Partial indexes also accelerate exact counts of these views. */
|
|
7
|
+
readonly where?: Readonly<Record<string, string | number | boolean | null>>;
|
|
8
|
+
}
|
|
9
|
+
export type PgObjectQueryIndex = PgObjectQueryIndexScope & ({
|
|
10
|
+
readonly kind: "sort";
|
|
11
|
+
/** Leading string equality filters, in query order. */
|
|
12
|
+
readonly equality?: readonly string[];
|
|
13
|
+
readonly fields: readonly {
|
|
14
|
+
readonly propertyId: string;
|
|
15
|
+
readonly direction?: "asc" | "desc";
|
|
16
|
+
readonly scalarKind?: QueryScalarKind;
|
|
17
|
+
}[];
|
|
18
|
+
} | {
|
|
19
|
+
readonly kind: "incomingLinks";
|
|
20
|
+
readonly where?: never;
|
|
21
|
+
} | {
|
|
22
|
+
readonly kind: "text";
|
|
23
|
+
readonly propertyId: string;
|
|
24
|
+
} | {
|
|
25
|
+
readonly kind: "value";
|
|
26
|
+
readonly propertyId: string;
|
|
27
|
+
} | {
|
|
28
|
+
readonly kind: "count";
|
|
29
|
+
} | {
|
|
30
|
+
readonly kind: "filter";
|
|
31
|
+
readonly properties: readonly string[];
|
|
32
|
+
});
|
|
33
|
+
/** Explicit maintenance operation: never creates indexes in the request path or a transaction. */
|
|
34
|
+
export declare function ensurePgObjectQueryIndexes(sql: SQL | ReservedSQL, schema: string, indexes: readonly PgObjectQueryIndex[]): Promise<readonly string[]>;
|
|
35
|
+
/** Keep complete B-tree entries below PostgreSQL's page limit, without constraining valid data.
|
|
36
|
+
* Ordered reads merge a small indexed page with the exact overflow page. */
|
|
37
|
+
export declare function sortIndexBound(index: Extract<PgObjectQueryIndex, {
|
|
38
|
+
kind: "sort";
|
|
39
|
+
}>): string;
|
|
40
|
+
/** Only split a flat, bounded ordered read; joins, nested limits and projections keep the
|
|
41
|
+
* general compiler. Its unrestricted fallback always preserves semantics. */
|
|
42
|
+
export declare function findPgSortIndexBound(sql: SQLClient, projectId: string, query: ObjectQuery): Promise<string | undefined>;
|
|
43
|
+
//# sourceMappingURL=query-indexes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-indexes.d.ts","sourceRoot":"","sources":["../../src/objects/query-indexes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAK/D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,iGAAiG;IACjG,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAA;CAC5E;AAED,MAAM,MAAM,kBAAkB,GAAG,uBAAuB,GACtD,CACI;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;QAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;QACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAA;KACtC,EAAE,CAAA;CACJ,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CACtE,CAAA;AAEH,kGAAkG;AAClG,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,GAAG,GAAG,WAAW,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,kBAAkB,EAAE,GACrC,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAuC5B;AAmKD;4EAC4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAW3F;AAED;6EAC6E;AAC7E,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsF7B"}
|
package/dist/objects/reader.d.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import type { CountObjectsInput, CountObjectsResult, ExistsObjectsInput, ExistsObjectsResult, FacetObjectsInput, FacetObjectsResult, LinkBatchKey, LinkDirection, ObjectBatchKey, ObjectLinkRow, ObjectReadStorage, ObjectRow, QueryObjectLinksInput, QueryObjectLinksResult, QueryObjectsInput, QueryObjectsResult } from "@sixb/core/storage";
|
|
2
2
|
import type { SQLClient } from "../pg-client";
|
|
3
|
+
import type { PgAggregateAdmission } from "./aggregate-admission";
|
|
3
4
|
import { type PgObjectQuerySource } from "./query-compiler";
|
|
4
5
|
import type { PgSelectedObjectReadSource } from "./read-scope";
|
|
6
|
+
/** Execute object and link reads, using prepared access paths when the query shape allows it. */
|
|
5
7
|
export declare class PgObjectReader {
|
|
6
8
|
private readonly sql;
|
|
7
9
|
private readonly source;
|
|
8
|
-
|
|
10
|
+
private readonly aggregateAdmission?;
|
|
11
|
+
constructor(sql: SQLClient, source: PgObjectQuerySource | PgSelectedObjectReadSource, aggregateAdmission?: PgAggregateAdmission | undefined);
|
|
9
12
|
private assertVectorSearch;
|
|
10
13
|
queryObjects(params: QueryObjectsInput): Promise<QueryObjectsResult>;
|
|
14
|
+
/** Use the ordered traversal path only when its bounded probe finds a broad fanout. */
|
|
15
|
+
private compilePageQuery;
|
|
16
|
+
private readQueryTotal;
|
|
11
17
|
countObjects(params: CountObjectsInput): Promise<CountObjectsResult>;
|
|
12
18
|
existsObjects(params: ExistsObjectsInput): Promise<ExistsObjectsResult>;
|
|
13
19
|
facetObjects(params: FacetObjectsInput): Promise<FacetObjectsResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/objects/reader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/objects/reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { type PgStoreClient } from "../transactions";
|
|
|
4
4
|
export declare class PgObjectStorage implements ObjectStorage {
|
|
5
5
|
private readonly sql;
|
|
6
6
|
private readonly reader;
|
|
7
|
-
constructor(sql: PgStoreClient);
|
|
7
|
+
constructor(sql: PgStoreClient, maxConcurrentAggregates?: number);
|
|
8
8
|
queryCapabilities(): ObjectQueryCapabilities;
|
|
9
9
|
createSelectedReadScope(params: {
|
|
10
10
|
projectId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/objects/storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,+BAA+B,EAC/B,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAE3B,OAAO,
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/objects/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ObjectQuery } from "@sixb/core";
|
|
2
|
+
import type { ReservedSQL, SQL, SQLClient } from "../pg-client";
|
|
3
|
+
export interface PgObjectTextCountIndex {
|
|
4
|
+
readonly projectId: string;
|
|
5
|
+
readonly objectTypeId: string;
|
|
6
|
+
readonly propertyId: string;
|
|
7
|
+
/** Up to four string equality filters used with this text search. */
|
|
8
|
+
readonly filters?: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
/** Explicit offline preparation: adding STORED generated columns rewrites existing objects. */
|
|
11
|
+
export declare function preparePgObjectTextCounts(sql: SQL | ReservedSQL, schema: string, inputs: readonly PgObjectTextCountIndex[]): Promise<readonly string[]>;
|
|
12
|
+
/** Narrow optimization for flat counts; unsupported predicates and selected scopes use the normal compiler. */
|
|
13
|
+
export declare function compilePgIndexedTextCount(sql: SQLClient, projectId: string, query: ObjectQuery): Promise<{
|
|
14
|
+
sql: string;
|
|
15
|
+
args: unknown[];
|
|
16
|
+
} | undefined>;
|
|
17
|
+
export declare function compilePgIndexedTextFacets(sql: SQLClient, projectId: string, query: ObjectQuery, facets: readonly {
|
|
18
|
+
propertyId: string;
|
|
19
|
+
limit: number;
|
|
20
|
+
}[]): Promise<{
|
|
21
|
+
sql: string;
|
|
22
|
+
args: unknown[];
|
|
23
|
+
} | undefined>;
|
|
24
|
+
//# sourceMappingURL=text-count-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-count-index.d.ts","sourceRoot":"","sources":["../../src/objects/text-count-index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAwB,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAW/D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AAwCD,+FAA+F;AAC/F,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,GAAG,GAAG,WAAW,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,sBAAsB,EAAE,GACxC,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CA0E5B;AAqCD,+GAA+G;AAC/G,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG,SAAS,CAAC,CAEvD;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,SAAS;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GACvD,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,GAAG,SAAS,CAAC,CAEvD"}
|
|
@@ -4,6 +4,7 @@ import { PgOntologyCommitStorage } from "./commits";
|
|
|
4
4
|
import type { PgOntologyTransactionContext } from "./materialization-session";
|
|
5
5
|
import { PgOntologyMaterializationStorage } from "./materializations";
|
|
6
6
|
import { PgOntologyOutboxStorage } from "./outbox";
|
|
7
|
+
import { PgOntologyReplacementPlanStorage } from "./replacement-plans";
|
|
7
8
|
import type { PgRootOperation } from "./shared";
|
|
8
9
|
import { PgOntologySourceStorage } from "./sources";
|
|
9
10
|
import { PgVectorIndexingStorage } from "./vector-indexing";
|
|
@@ -12,6 +13,7 @@ export declare class PgOntologyStorage implements OntologyStorage {
|
|
|
12
13
|
readonly commits: PgOntologyCommitStorage;
|
|
13
14
|
readonly sources: PgOntologySourceStorage;
|
|
14
15
|
readonly materializations: PgOntologyMaterializationStorage;
|
|
16
|
+
readonly replacementPlans: PgOntologyReplacementPlanStorage;
|
|
15
17
|
readonly outbox: PgOntologyOutboxStorage;
|
|
16
18
|
readonly vectorIndexing: PgVectorIndexingStorage;
|
|
17
19
|
readonly vectors: PgOntologyVectorStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;IACzC,QAAQ,CAAC,gBAAgB,EAAE,gCAAgC,CAAA;IAC3D,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAA;IACxC,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAA;IAChD,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;gBAE7B,KAAK,EAAE;QACjB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;QACvB,QAAQ,CAAC,gBAAgB,EAAE,eAAe,CAAA;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,4BAA4B,GAAG,IAAI,CAAA;KACjE;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AAEnD,qBAAa,iBAAkB,YAAW,eAAe;IACvD,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;IACzC,QAAQ,CAAC,gBAAgB,EAAE,gCAAgC,CAAA;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,gCAAgC,CAAA;IAC3D,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAA;IACxC,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAA;IAChD,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;gBAE7B,KAAK,EAAE;QACjB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAA;QACvB,QAAQ,CAAC,gBAAgB,EAAE,eAAe,CAAA;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,4BAA4B,GAAG,IAAI,CAAA;KACjE;IAsBD,kBAAkB,IAAI,IAAI;CAG3B;AAED,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA"}
|
|
@@ -1,30 +1,22 @@
|
|
|
1
1
|
import { ProviderMaterializationSessionState, type ProviderMaterializationTransactionLifecycle } from "@sixb/core/internal/ontology-storage-provider";
|
|
2
|
-
import type {
|
|
2
|
+
import type { MaterializationPlanHeader, MaterializationSession, MaterializationVectorChange, StageMaterializationWorkInput } from "@sixb/core/storage";
|
|
3
3
|
import type { SQLClient } from "../pg-client";
|
|
4
|
+
import { type PgReplacementPlan } from "./replacement-plans";
|
|
4
5
|
export interface PgOntologyTransactionContext {
|
|
5
6
|
readonly id: object;
|
|
6
7
|
readonly materializations: ProviderMaterializationTransactionLifecycle;
|
|
7
8
|
active: boolean;
|
|
8
9
|
}
|
|
9
|
-
interface WorkCursor {
|
|
10
|
-
readonly majorOrder: number;
|
|
11
|
-
readonly minorOrder: number;
|
|
12
|
-
readonly sortOne: string;
|
|
13
|
-
readonly sortTwo: string;
|
|
14
|
-
readonly recordKey: string;
|
|
15
|
-
}
|
|
16
|
-
export interface PgChunkSequenceProgress {
|
|
17
|
-
readonly appliedPlanCount: number;
|
|
18
|
-
readonly appliedOutboxCount: number;
|
|
19
|
-
readonly appliedPlanCursor: WorkCursor | null;
|
|
20
|
-
readonly appliedEventCursor: WorkCursor | null;
|
|
21
|
-
}
|
|
22
10
|
export declare class PgMaterializationSessionState extends ProviderMaterializationSessionState {
|
|
11
|
+
readonly plan: PgReplacementPlan | null;
|
|
23
12
|
stagedWorkCount: number;
|
|
24
13
|
changedObjects: number;
|
|
25
14
|
changedLinks: number;
|
|
26
|
-
|
|
27
|
-
|
|
15
|
+
workAnalyzed: boolean;
|
|
16
|
+
/** Work staged on the session lives in a temp table; a plan-bound session reads its plan's. */
|
|
17
|
+
readonly workTable: string;
|
|
18
|
+
readonly workId: string;
|
|
19
|
+
constructor(header: MaterializationPlanHeader, transactionId: object, plan: PgReplacementPlan | null);
|
|
28
20
|
}
|
|
29
21
|
export declare class PgMaterializationSessions {
|
|
30
22
|
private readonly sql;
|
|
@@ -33,34 +25,22 @@ export declare class PgMaterializationSessions {
|
|
|
33
25
|
private readonly live;
|
|
34
26
|
private tablesReady;
|
|
35
27
|
constructor(sql: SQLClient, context: PgOntologyTransactionContext | null);
|
|
36
|
-
create(header: MaterializationPlanHeader): Promise<PgMaterializationSessionState>;
|
|
28
|
+
create(header: MaterializationPlanHeader, plan: PgReplacementPlan | null): Promise<PgMaterializationSessionState>;
|
|
37
29
|
require(session: MaterializationSession): PgMaterializationSessionState;
|
|
38
30
|
release(session: PgMaterializationSessionState): Promise<void>;
|
|
39
31
|
deactivateAll(): void;
|
|
40
32
|
stage(input: StageMaterializationWorkInput): Promise<void>;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
};
|
|
50
|
-
readonly exists: boolean;
|
|
51
|
-
}[]>;
|
|
52
|
-
prepareChunkSequence(session: PgMaterializationSessionState, chunk: MaterializationPlanChunk): Promise<PgChunkSequenceProgress>;
|
|
53
|
-
commitChunkSequence(session: PgMaterializationSessionState, progress: PgChunkSequenceProgress): void;
|
|
54
|
-
count(session: PgMaterializationSessionState, kind: string): Promise<number>;
|
|
55
|
-
laneCounts(session: PgMaterializationSessionState): Promise<{
|
|
56
|
-
readonly apply: number;
|
|
57
|
-
readonly cardinality: number;
|
|
58
|
-
readonly event: number;
|
|
59
|
-
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Refreshes the work table's statistics once planning has finished writing a large population,
|
|
35
|
+
* before set-based reads join it; small edits avoid the extra round trip.
|
|
36
|
+
*/
|
|
37
|
+
analyzeSealedWork(session: PgMaterializationSessionState): Promise<void>;
|
|
38
|
+
/** Staged object upserts and deletes of profiled types, or of objects with a stored vector. */
|
|
39
|
+
vectorChangePages(session: PgMaterializationSessionState, objectTypeIds: readonly string[], pageRows: number): AsyncIterable<readonly MaterializationVectorChange[]>;
|
|
40
|
+
hasCardinalityWork(session: PgMaterializationSessionState): Promise<boolean>;
|
|
60
41
|
assertClassificationCoverage(session: PgMaterializationSessionState): Promise<void>;
|
|
61
|
-
|
|
42
|
+
projectionCounts(session: PgMaterializationSessionState): Promise<import("@sixb/core/storage").EffectiveChangeCounts | null>;
|
|
62
43
|
private ensureTables;
|
|
63
44
|
private deleteWork;
|
|
64
45
|
}
|
|
65
|
-
export {};
|
|
66
46
|
//# sourceMappingURL=materialization-session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialization-session.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-session.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"materialization-session.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-session.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,mCAAmC,EACnC,KAAK,2CAA2C,EAEjD,MAAM,+CAA+C,CAAA;AACtD,OAAO,KAAK,EACV,yBAAyB,EAEzB,sBAAsB,EACtB,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG7C,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,qBAAqB,CAAA;AAG5B,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,gBAAgB,EAAE,2CAA2C,CAAA;IACtE,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,qBAAa,6BAA8B,SAAQ,mCAAmC;IAYlF,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAXzC,eAAe,SAAI;IACnB,cAAc,SAAI;IAClB,YAAY,SAAI;IAChB,YAAY,UAAQ;IACpB,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;gBAGrB,MAAM,EAAE,yBAAyB,EACjC,aAAa,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,GAAG,IAAI;CAM1C;AAED,qBAAa,yBAAyB;IAMlC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuD;IAChF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2C;IAChE,OAAO,CAAC,WAAW,CAAQ;gBAGR,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,4BAA4B,GAAG,IAAI;IAGzD,MAAM,CACV,MAAM,EAAE,yBAAyB,EACjC,IAAI,EAAE,iBAAiB,GAAG,IAAI,GAC7B,OAAO,CAAC,6BAA6B,CAAC;IAmBzC,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,6BAA6B;IAgBjE,OAAO,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IASpE,aAAa,IAAI,IAAI;IAKf,KAAK,CAAC,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IA6ChE;;;OAGG;IACG,iBAAiB,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9E,+FAA+F;IACxF,iBAAiB,CACtB,OAAO,EAAE,6BAA6B,EACtC,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,QAAQ,EAAE,MAAM,GACf,aAAa,CAAC,SAAS,2BAA2B,EAAE,CAAC;IAmDlD,kBAAkB,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5E,4BAA4B,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAInF,gBAAgB,CAAC,OAAO,EAAE,6BAA6B;YAI/C,YAAY;YA4BZ,UAAU;CAMzB"}
|
|
@@ -2,26 +2,11 @@ import type { OntologyLinkRef, OntologyObjectRef, TelemetrySeriesRef } from "@si
|
|
|
2
2
|
import type { MaterializationLinkScopeRevision, MaterializationLinkScopeState, MaterializationLinkState, MaterializationObjectState, SourceReplacementLinkState, SourceReplacementObjectState, StoredTelemetryPoint } from "@sixb/core/storage";
|
|
3
3
|
import type { SQLClient } from "../pg-client";
|
|
4
4
|
export declare const PG_MATERIALIZATION_WORK_TABLE = "ontology_materialization_work";
|
|
5
|
-
|
|
6
|
-
export
|
|
7
|
-
readonly kind: "object";
|
|
8
|
-
readonly ref: OntologyObjectRef;
|
|
9
|
-
readonly sortKey: string;
|
|
10
|
-
readonly diffRequired: true;
|
|
11
|
-
} | {
|
|
12
|
-
readonly kind: "link";
|
|
5
|
+
/** A link a replacement plan decides, and whether its plan needs a diff. */
|
|
6
|
+
export interface ReplacementLinkIdentity {
|
|
13
7
|
readonly ref: OntologyLinkRef;
|
|
14
8
|
readonly sortKey: string;
|
|
15
9
|
readonly diffRequired: boolean;
|
|
16
|
-
};
|
|
17
|
-
interface ReplacementIdentityInput {
|
|
18
|
-
readonly incremental?: boolean;
|
|
19
|
-
readonly sessionId: string;
|
|
20
|
-
readonly sourceId: string;
|
|
21
|
-
readonly candidateMaterializationId: string;
|
|
22
|
-
readonly previousMaterializationId: string | null;
|
|
23
|
-
readonly kind: "object" | "link";
|
|
24
|
-
readonly pageRows: number;
|
|
25
10
|
}
|
|
26
11
|
export declare class PgMaterializationStateReader {
|
|
27
12
|
private readonly sql;
|
|
@@ -46,11 +31,8 @@ export declare class PgMaterializationStateReader {
|
|
|
46
31
|
}[]): Promise<readonly MaterializationLinkScopeState[]>;
|
|
47
32
|
private readEffectiveLinkScopes;
|
|
48
33
|
incidentLinks(objects: readonly OntologyObjectRef[], pageRows: number): AsyncIterable<OntologyLinkRef[]>;
|
|
49
|
-
replacementIdentities(input: ReplacementIdentityInput): AsyncIterable<ReplacementIdentity[]>;
|
|
50
34
|
replacementObjectStates(sourceId: string, candidateMaterializationId: string, refs: readonly OntologyObjectRef[]): Promise<readonly SourceReplacementObjectState[]>;
|
|
51
|
-
replacementLinkStates(sourceId: string, candidateMaterializationId: string, materializationIds: readonly string[], identities: readonly
|
|
52
|
-
readonly kind: "link";
|
|
53
|
-
}>[], incremental?: boolean): Promise<readonly SourceReplacementLinkState[]>;
|
|
35
|
+
replacementLinkStates(sourceId: string, candidateMaterializationId: string, materializationIds: readonly string[], identities: readonly ReplacementLinkIdentity[], incremental?: boolean): Promise<readonly SourceReplacementLinkState[]>;
|
|
54
36
|
effectiveObjectRevision(ref: OntologyObjectRef, lock?: boolean): Promise<{
|
|
55
37
|
readonly version: number;
|
|
56
38
|
readonly lastCommitId: string | null;
|
|
@@ -62,11 +44,6 @@ export declare class PgMaterializationStateReader {
|
|
|
62
44
|
effectiveLinkLastCommit(ref: OntologyLinkRef, lock?: boolean): Promise<string | null | undefined>;
|
|
63
45
|
effectiveLinkLastCommits(refs: readonly OntologyLinkRef[], lock?: boolean): Promise<ReadonlyMap<string, string | null>>;
|
|
64
46
|
private replacementSources;
|
|
65
|
-
private prepareReplacementIdentities;
|
|
66
|
-
private prepareReplacementObjects;
|
|
67
|
-
private prepareReplacementLinks;
|
|
68
47
|
}
|
|
69
|
-
export declare function objectSortExpression(alias?: string): string;
|
|
70
48
|
export declare function linkSortExpression(alias?: string): string;
|
|
71
|
-
export {};
|
|
72
49
|
//# sourceMappingURL=materialization-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialization-state.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,eAAe,EACf,iBAAiB,EAEjB,kBAAkB,EACnB,MAAM,qCAAqC,CAAA;AAgB5C,OAAO,KAAK,EACV,gCAAgC,EAChC,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAO5B,oBAAoB,EACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAkB7C,eAAO,MAAM,6BAA6B,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"materialization-state.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,eAAe,EACf,iBAAiB,EAEjB,kBAAkB,EACnB,MAAM,qCAAqC,CAAA;AAgB5C,OAAO,KAAK,EACV,gCAAgC,EAChC,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAO5B,oBAAoB,EACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAkB7C,eAAO,MAAM,6BAA6B,kCAAkC,CAAA;AAyE5E,4EAA4E;AAC5E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC/B;AAOD,qBAAa,4BAA4B;IAErC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM;gBADT,GAAG,EAAE,SAAS,EACtB,SAAS,EAAE,MAAM;IAGtB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAKxE,YAAY,CAChB,IAAI,EAAE,SAAS,iBAAiB,EAAE,GACjC,OAAO,CAAC,SAAS,0BAA0B,EAAE,CAAC;IAkF3C,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAKlE,UAAU,CAAC,IAAI,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC;IAmF1F,UAAU,CACd,MAAM,EAAE,kBAAkB,EAC1B,EAAE,EAAE,MAAM,EACV,IAAI,UAAQ,GACX,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAIjC,WAAW,CACf,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,EAC/E,IAAI,UAAQ,GACX,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;IAgCrC,kBAAkB,CACtB,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GACjF,OAAO,CAAC,SAAS,gCAAgC,EAAE,CAAC;IAKjD,cAAc,CAClB,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GACjF,OAAO,CAAC,SAAS,6BAA6B,EAAE,CAAC;YA8DtC,uBAAuB;IAmE9B,aAAa,CAClB,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,QAAQ,EAAE,MAAM,GACf,aAAa,CAAC,eAAe,EAAE,CAAC;IAiF7B,uBAAuB,CAC3B,QAAQ,EAAE,MAAM,EAChB,0BAA0B,EAAE,MAAM,EAClC,IAAI,EAAE,SAAS,iBAAiB,EAAE,GACjC,OAAO,CAAC,SAAS,4BAA4B,EAAE,CAAC;IAoB7C,qBAAqB,CACzB,QAAQ,EAAE,MAAM,EAChB,0BAA0B,EAAE,MAAM,EAClC,kBAAkB,EAAE,SAAS,MAAM,EAAE,EACrC,UAAU,EAAE,SAAS,uBAAuB,EAAE,EAC9C,WAAW,UAAQ,GAClB,OAAO,CAAC,SAAS,0BAA0B,EAAE,CAAC;IAyB3C,uBAAuB,CAC3B,GAAG,EAAE,iBAAiB,EACtB,IAAI,UAAQ,GACX,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAI/E,wBAAwB,CAC5B,IAAI,EAAE,SAAS,iBAAiB,EAAE,EAClC,IAAI,UAAQ,GACX,OAAO,CACR,WAAW,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CACxF;IAoCK,uBAAuB,CAC3B,GAAG,EAAE,eAAe,EACpB,IAAI,UAAQ,GACX,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAI/B,wBAAwB,CAC5B,IAAI,EAAE,SAAS,eAAe,EAAE,EAChC,IAAI,UAAQ,GACX,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;YA4BhC,kBAAkB;CA6BjC;AA4KD,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CASzD"}
|
|
@@ -1,15 +1,57 @@
|
|
|
1
|
-
import type { MaterializationPlanChunk } from "@sixb/core/storage";
|
|
2
1
|
import type { SQLClient } from "../pg-client";
|
|
3
|
-
|
|
2
|
+
export interface PgStagedPlanTarget {
|
|
3
|
+
/** The work table and the id its rows carry: a session's temp table, or a durable plan. */
|
|
4
|
+
readonly workTable: string;
|
|
5
|
+
readonly workId: string;
|
|
6
|
+
readonly projectId: string;
|
|
7
|
+
readonly commitId: string;
|
|
8
|
+
readonly committedAt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface PgAppliedPlan {
|
|
11
|
+
readonly objectWrites: number;
|
|
12
|
+
readonly linkWrites: number;
|
|
13
|
+
readonly eventCount: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Applies a session's staged plan where it is stored: each statement reads one item kind from the
|
|
17
|
+
* work table and writes it set-based, so planned rows never travel back through the client.
|
|
18
|
+
*
|
|
19
|
+
* Every write still checks the revision its plan expected. A statement that writes fewer rows than
|
|
20
|
+
* it staged is a conflict; only then does a second, indexed query find the entity to name, so the
|
|
21
|
+
* normal path never correlates the written rows back to the staged ones.
|
|
22
|
+
*/
|
|
4
23
|
export declare class PgMaterializationWriter {
|
|
5
24
|
private readonly sql;
|
|
6
25
|
constructor(sql: SQLClient);
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
private
|
|
10
|
-
private
|
|
11
|
-
private
|
|
12
|
-
private
|
|
13
|
-
private
|
|
26
|
+
applyStaged(target: PgStagedPlanTarget): Promise<PgAppliedPlan>;
|
|
27
|
+
/** The staged values of one plan item kind, as `value`. */
|
|
28
|
+
private staged;
|
|
29
|
+
private applyObjectOverrides;
|
|
30
|
+
private applyLinkOverrides;
|
|
31
|
+
private applyPoints;
|
|
32
|
+
private deleteLinks;
|
|
33
|
+
private deleteObjects;
|
|
34
|
+
private upsertObjects;
|
|
35
|
+
private upsertLinks;
|
|
36
|
+
/**
|
|
37
|
+
* Writes the staged event drafts in canonical order. Event ids hash the canonical JSON of
|
|
38
|
+
* `[projectId, commitId, ordinal]`; the provider-fixed prefix is rendered here, the ordinal by
|
|
39
|
+
* PostgreSQL, so the outbox matches `createEventId` without one id crossing the wire.
|
|
40
|
+
*/
|
|
41
|
+
private writeOutbox;
|
|
42
|
+
/**
|
|
43
|
+
* Records the entities whose plan inputs this commit changed, once each, as the in-memory
|
|
44
|
+
* `touchPlanItem` does: a replacement plan's refresh rechecks only those.
|
|
45
|
+
*/
|
|
46
|
+
private writeTouches;
|
|
47
|
+
private write;
|
|
48
|
+
/** Matches a staged ref, at a static JSON path of `candidates.value`, to `stored`. */
|
|
49
|
+
private matches;
|
|
50
|
+
/**
|
|
51
|
+
* The ref of the first staged entity whose stored row tells why a write missed it: it still
|
|
52
|
+
* exists after a delete, another commit wrote it before an insert, or an update left it without
|
|
53
|
+
* this commit. None when no stored row tells, as for a delete whose row is already gone.
|
|
54
|
+
*/
|
|
55
|
+
private firstConflict;
|
|
14
56
|
}
|
|
15
57
|
//# sourceMappingURL=materialization-writer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialization-writer.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-writer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"materialization-writer.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-writer.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAO,SAAS,EAAE,MAAM,cAAc,CAAA;AAElD,MAAM,WAAW,kBAAkB;IACjC,2FAA2F;IAC3F,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAUD;;;;;;;GAOG;AACH,qBAAa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAErC,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAarE,2DAA2D;IAC3D,OAAO,CAAC,MAAM;YAUA,oBAAoB;YA+DpB,kBAAkB;YAyGlB,WAAW;YAuFX,WAAW;YAmBX,aAAa;YAoBb,aAAa;YAoEb,WAAW;IAoEzB;;;;OAIG;YACW,WAAW;IAoCzB;;;OAGG;YACW,YAAY;YAuCZ,KAAK;IAUnB,sFAAsF;IACtF,OAAO,CAAC,OAAO;IAcf;;;;OAIG;YACW,aAAa;CA2B5B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AppliedMaterialization, ApplyMaterializationInput, ApplyMaterializationResult, FinalizeMaterializationInput, MaterializationPlanHeader, MaterializationSession, MaterializationStatePage, MaterializationVectorChangePage, OntologyMaterializationStorage, StageMaterializationWorkInput, StreamMaterializationStateInput, StreamMaterializationVectorChangesInput } from "@sixb/core/storage";
|
|
2
2
|
import type { SQLClient } from "../pg-client";
|
|
3
3
|
import { type PgOntologyTransactionContext } from "./materialization-session";
|
|
4
4
|
export declare class PgOntologyMaterializationStorage implements OntologyMaterializationStorage {
|
|
@@ -9,20 +9,18 @@ export declare class PgOntologyMaterializationStorage implements OntologyMateria
|
|
|
9
9
|
assertVectorSession(session: MaterializationSession, projectId: string, commitId?: string): void;
|
|
10
10
|
begin(input: MaterializationPlanHeader): Promise<MaterializationSession>;
|
|
11
11
|
streamState(input: StreamMaterializationStateInput): AsyncIterable<MaterializationStatePage>;
|
|
12
|
-
streamSourceReplacementState(input: StreamSourceReplacementStateInput): AsyncIterable<SourceReplacementStatePage>;
|
|
13
12
|
stageWork(input: StageMaterializationWorkInput): Promise<void>;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
applyChunk(input: ApplyMaterializationChunkInput): Promise<void>;
|
|
13
|
+
streamVectorChanges(input: StreamMaterializationVectorChangesInput): AsyncIterable<MaterializationVectorChangePage>;
|
|
14
|
+
apply(input: ApplyMaterializationInput): Promise<AppliedMaterialization>;
|
|
17
15
|
finalize(input: FinalizeMaterializationInput): Promise<ApplyMaterializationResult>;
|
|
18
16
|
deactivateSessions(): void;
|
|
19
|
-
private requireReplacement;
|
|
20
17
|
private assertCommitAbsent;
|
|
21
18
|
private assertSources;
|
|
22
19
|
private assertSourceRow;
|
|
23
20
|
private assertFinalization;
|
|
21
|
+
/** Rejects a cardinality-one scope that two staged occupants claim, effective view first. */
|
|
22
|
+
private assertStagedCardinality;
|
|
24
23
|
private assertFinalCardinality;
|
|
25
|
-
private projectionCounts;
|
|
26
24
|
private telemetrySummary;
|
|
27
25
|
private activateSource;
|
|
28
26
|
private insertCommit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materializations.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materializations.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,
|
|
1
|
+
{"version":3,"file":"materializations.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materializations.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,sBAAsB,EACtB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,yBAAyB,EACzB,sBAAsB,EACtB,wBAAwB,EACxB,+BAA+B,EAE/B,8BAA8B,EAE9B,6BAA6B,EAC7B,+BAA+B,EAC/B,uCAAuC,EACxC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG7C,OAAO,EAGL,KAAK,4BAA4B,EAClC,MAAM,2BAA2B,CAAA;AAuBlC,qBAAa,gCAAiC,YAAW,8BAA8B;IAKnF,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAG7B,GAAG,EAAE,SAAS,EAC/B,OAAO,EAAE,4BAA4B,GAAG,IAAI;IAM9C,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAY1F,KAAK,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAwDvE,WAAW,CAChB,KAAK,EAAE,+BAA+B,GACrC,aAAa,CAAC,wBAAwB,CAAC;IAqDpC,SAAS,CAAC,KAAK,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,mBAAmB,CACxB,KAAK,EAAE,uCAAuC,GAC7C,aAAa,CAAC,+BAA+B,CAAC;IAc3C,KAAK,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmBxE,QAAQ,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAgBxF,kBAAkB,IAAI,IAAI;YAIZ,kBAAkB;YAmDlB,aAAa;IAoB3B,OAAO,CAAC,eAAe;YAeT,kBAAkB;IAoDhC,6FAA6F;YAC/E,uBAAuB;YA+BvB,sBAAsB;YAiDtB,gBAAgB;YAiChB,cAAc;YA6Gd,YAAY;YAkCZ,eAAe;YAcf,SAAS;CAgBxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/outbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/outbox.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,wBAAwB,EACxB,wBAAwB,EACxB,gCAAgC,EAChC,qBAAqB,EACrB,qBAAqB,EACrB,iCAAiC,EACjC,kCAAkC,EAClC,4BAA4B,EAC7B,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EAML,KAAK,eAAe,EAErB,MAAM,UAAU,CAAA;AASjB,qBAAa,uBAAwB,YAAW,qBAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBAAhB,gBAAgB,EAAE,eAAe;IAExD,KAAK,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,SAAS,wBAAwB,EAAE,CAAC;IAwDpF,aAAa,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrE,UAAU,CAAC,KAAK,EAAE,kCAAkC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCpE,cAAc,CAAC,KAAK,EAAE,iCAAiC,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBzE,SAAS,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA0BrF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type EffectiveChangeCounts } from "@sixb/core/internal/materialization";
|
|
2
|
+
import type { OntologyCommitWrite, OntologyReplacementPlanStorage, OpenedReplacementPlan, OpenReplacementPlanInput, PurgeReplacementPlansInput, ReplacementPlanRef, ReplacementPlanStatePage, ReplacementPlanStatus, StageReplacementPlanInput, StreamReplacementPlanStateInput } from "@sixb/core/storage";
|
|
3
|
+
import type { SQLClient } from "../pg-client";
|
|
4
|
+
export declare const PG_PLAN_WORK_TABLE = "ontology_replacement_plan_work";
|
|
5
|
+
/** The plan a session applies: its work rows carry the candidate's source version as `work_id`. */
|
|
6
|
+
export interface PgReplacementPlan {
|
|
7
|
+
readonly versionId: string;
|
|
8
|
+
readonly projectionKind: "object" | "link";
|
|
9
|
+
}
|
|
10
|
+
export declare class PgOntologyReplacementPlanStorage implements OntologyReplacementPlanStorage {
|
|
11
|
+
private readonly sql;
|
|
12
|
+
constructor(sql: SQLClient);
|
|
13
|
+
open(input: OpenReplacementPlanInput): Promise<OpenedReplacementPlan>;
|
|
14
|
+
streamState(input: StreamReplacementPlanStateInput): AsyncIterable<ReplacementPlanStatePage>;
|
|
15
|
+
stage(input: StageReplacementPlanInput): Promise<void>;
|
|
16
|
+
refresh(input: ReplacementPlanRef): Promise<ReplacementPlanStatus>;
|
|
17
|
+
purge(input: PurgeReplacementPlansInput): Promise<number>;
|
|
18
|
+
}
|
|
19
|
+
/** The fresh, fully planned plan a session applies, with exactly its commit. */
|
|
20
|
+
export declare function boundReplacementPlan(sql: SQLClient, header: {
|
|
21
|
+
readonly commit: OntologyCommitWrite;
|
|
22
|
+
readonly plan?: {
|
|
23
|
+
readonly source: {
|
|
24
|
+
readonly projectionId: string;
|
|
25
|
+
};
|
|
26
|
+
readonly materializationId: string;
|
|
27
|
+
};
|
|
28
|
+
}): Promise<PgReplacementPlan>;
|
|
29
|
+
/**
|
|
30
|
+
* Every identity the plan decides with a diff is classified, and nothing else is. Staging records
|
|
31
|
+
* whether an identity's work holds its classification, so this reads identities only.
|
|
32
|
+
*/
|
|
33
|
+
export declare function assertReplacementPlanCoverage(sql: SQLClient, plan: PgReplacementPlan): Promise<void>;
|
|
34
|
+
/** The change counts of a plan, from what its identities planned. */
|
|
35
|
+
export declare function replacementPlanCounts(sql: SQLClient, versionId: string): Promise<EffectiveChangeCounts>;
|
|
36
|
+
//# sourceMappingURL=replacement-plans.d.ts.map
|