@smart-data-engines/sde 0.1.0-dev.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.
- package/LICENSE +201 -0
- package/NOTICE +13 -0
- package/README.md +153 -0
- package/bin/weather.mjs +32 -0
- package/dist/_usage.d.ts +30 -0
- package/dist/_usage.js +194 -0
- package/dist/_usage.js.map +1 -0
- package/dist/bulk.d.ts +9 -0
- package/dist/bulk.js +83 -0
- package/dist/bulk.js.map +1 -0
- package/dist/canonical.d.ts +46 -0
- package/dist/canonical.js +150 -0
- package/dist/canonical.js.map +1 -0
- package/dist/capabilities.d.ts +48 -0
- package/dist/capabilities.js +62 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cutover.d.ts +36 -0
- package/dist/cutover.js +219 -0
- package/dist/cutover.js.map +1 -0
- package/dist/demo/model.d.ts +28 -0
- package/dist/demo/model.js +40 -0
- package/dist/demo/model.js.map +1 -0
- package/dist/demo/project.d.ts +19 -0
- package/dist/demo/project.js +128 -0
- package/dist/demo/project.js.map +1 -0
- package/dist/demo/weather.d.ts +73 -0
- package/dist/demo/weather.js +334 -0
- package/dist/demo/weather.js.map +1 -0
- package/dist/engines/_clickhouse-connection.d.ts +17 -0
- package/dist/engines/_clickhouse-connection.js +182 -0
- package/dist/engines/_clickhouse-connection.js.map +1 -0
- package/dist/engines/_tls-peer-identity.d.ts +2 -0
- package/dist/engines/_tls-peer-identity.js +23 -0
- package/dist/engines/_tls-peer-identity.js.map +1 -0
- package/dist/engines/_write-fences.d.ts +51 -0
- package/dist/engines/_write-fences.js +189 -0
- package/dist/engines/_write-fences.js.map +1 -0
- package/dist/engines/clickhouse.d.ts +193 -0
- package/dist/engines/clickhouse.js +899 -0
- package/dist/engines/clickhouse.js.map +1 -0
- package/dist/engines/postgres.d.ts +293 -0
- package/dist/engines/postgres.js +981 -0
- package/dist/engines/postgres.js.map +1 -0
- package/dist/errors.d.ts +89 -0
- package/dist/errors.js +90 -0
- package/dist/errors.js.map +1 -0
- package/dist/frozen-verification.d.ts +26 -0
- package/dist/frozen-verification.js +67 -0
- package/dist/frozen-verification.js.map +1 -0
- package/dist/generation.d.ts +34 -0
- package/dist/generation.js +81 -0
- package/dist/generation.js.map +1 -0
- package/dist/groups.d.ts +17 -0
- package/dist/groups.js +66 -0
- package/dist/groups.js.map +1 -0
- package/dist/hashing.d.ts +68 -0
- package/dist/hashing.js +146 -0
- package/dist/hashing.js.map +1 -0
- package/dist/in-place-index.d.ts +43 -0
- package/dist/in-place-index.js +272 -0
- package/dist/in-place-index.js.map +1 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/inspection.d.ts +19 -0
- package/dist/inspection.js +31 -0
- package/dist/inspection.js.map +1 -0
- package/dist/internal.d.ts +42 -0
- package/dist/internal.js +56 -0
- package/dist/internal.js.map +1 -0
- package/dist/layout.d.ts +36 -0
- package/dist/layout.js +62 -0
- package/dist/layout.js.map +1 -0
- package/dist/migration.d.ts +197 -0
- package/dist/migration.js +592 -0
- package/dist/migration.js.map +1 -0
- package/dist/model.d.ts +93 -0
- package/dist/model.js +313 -0
- package/dist/model.js.map +1 -0
- package/dist/physical.d.ts +128 -0
- package/dist/physical.js +421 -0
- package/dist/physical.js.map +1 -0
- package/dist/placement.d.ts +157 -0
- package/dist/placement.js +651 -0
- package/dist/placement.js.map +1 -0
- package/dist/provisioning.d.ts +6 -0
- package/dist/provisioning.js +45 -0
- package/dist/provisioning.js.map +1 -0
- package/dist/query.d.ts +68 -0
- package/dist/query.js +340 -0
- package/dist/query.js.map +1 -0
- package/dist/routing.d.ts +25 -0
- package/dist/routing.js +35 -0
- package/dist/routing.js.map +1 -0
- package/dist/schema.d.ts +110 -0
- package/dist/schema.js +337 -0
- package/dist/schema.js.map +1 -0
- package/dist/session.d.ts +195 -0
- package/dist/session.js +870 -0
- package/dist/session.js.map +1 -0
- package/dist/shapes.d.ts +30 -0
- package/dist/shapes.js +112 -0
- package/dist/shapes.js.map +1 -0
- package/dist/staging.d.ts +29 -0
- package/dist/staging.js +214 -0
- package/dist/staging.js.map +1 -0
- package/dist/telemetry.d.ts +468 -0
- package/dist/telemetry.js +872 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/testing/loader.d.ts +38 -0
- package/dist/testing/loader.js +86 -0
- package/dist/testing/loader.js.map +1 -0
- package/dist/testing/memory.d.ts +131 -0
- package/dist/testing/memory.js +311 -0
- package/dist/testing/memory.js.map +1 -0
- package/dist/timestamp.d.ts +20 -0
- package/dist/timestamp.js +89 -0
- package/dist/timestamp.js.map +1 -0
- package/dist/types.d.ts +79 -0
- package/dist/types.js +100 -0
- package/dist/types.js.map +1 -0
- package/dist/verification.d.ts +41 -0
- package/dist/verification.js +169 -0
- package/dist/verification.js.map +1 -0
- package/dist/watermark.d.ts +103 -0
- package/dist/watermark.js +170 -0
- package/dist/watermark.js.map +1 -0
- package/dist/write-fence.d.ts +58 -0
- package/dist/write-fence.js +225 -0
- package/dist/write-fence.js.map +1 -0
- package/package.json +86 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"placement.js","sourceRoot":"","sources":["../src/placement.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LogicalModel } from './model.js';
|
|
2
|
+
import type { PlacementMap } from './placement.js';
|
|
3
|
+
import type { Engine } from './session.js';
|
|
4
|
+
export declare function prepareSchema(model: LogicalModel, placement: PlacementMap, engines: Readonly<Record<string, Engine>>, options?: {
|
|
5
|
+
projectId?: string;
|
|
6
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** Prepare client-owned physical schema before opening runtime connections. */
|
|
2
|
+
import { compareCodePoints } from './canonical.js';
|
|
3
|
+
import { EngineError, MigrationRefused } from './errors.js';
|
|
4
|
+
import { checkMapProject } from './generation.js';
|
|
5
|
+
import { colocationGroups } from './groups.js';
|
|
6
|
+
import { refuseFindings } from './physical.js';
|
|
7
|
+
export async function prepareSchema(model, placement, engines, options = {}) {
|
|
8
|
+
if (model.version !== placement.modelVersion) {
|
|
9
|
+
throw new MigrationRefused('schema preparation needs the model named by the placement map');
|
|
10
|
+
}
|
|
11
|
+
const project = checkMapProject(placement, options.projectId);
|
|
12
|
+
const needed = [...new Set(Object.values(placement.groups).flatMap((spot) => [spot.source, ...spot.derived].map((material) => material.engine)))].sort();
|
|
13
|
+
if (needed.some((name) => engines[name] === undefined)) {
|
|
14
|
+
throw new MigrationRefused('schema preparation is missing an engine named by the map');
|
|
15
|
+
}
|
|
16
|
+
if (placement.contract >= 4 && needed.some((name) => typeof engines[name].writeFence !== 'function')) {
|
|
17
|
+
throw new MigrationRefused('schema preparation needs native write generations on every engine');
|
|
18
|
+
}
|
|
19
|
+
for (const group of colocationGroups(model)) {
|
|
20
|
+
const spot = placement.groups[group.name];
|
|
21
|
+
const keys = {};
|
|
22
|
+
for (const name of group.members)
|
|
23
|
+
keys[name] = model.entities.find((entity) => entity.name === name).key;
|
|
24
|
+
for (const material of [spot.source, ...spot.derived]) {
|
|
25
|
+
const engine = engines[material.engine];
|
|
26
|
+
// Provisioning is where a person can act on a physical difference, so here it refuses.
|
|
27
|
+
refuseFindings((await engine.ensureSchema(material.layout, { keys })) ?? [], EngineError);
|
|
28
|
+
if (spot.writeEpoch !== undefined) {
|
|
29
|
+
for (const table of Object.values(material.layout.tables).sort()) {
|
|
30
|
+
await engine.writeFence(table, { projectId: project }).prepare(spot.writeEpoch);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (placement.signed) {
|
|
36
|
+
// Prepare storage without adopting this map's version before runtime activation.
|
|
37
|
+
for (const name of Object.keys(engines).sort(compareCodePoints)) {
|
|
38
|
+
const store = engines[name];
|
|
39
|
+
if (typeof store.mapWatermark === 'function' && typeof store.recordMapVersion === 'function') {
|
|
40
|
+
await store.mapWatermark();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=provisioning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provisioning.js","sourceRoot":"","sources":["../src/provisioning.ts"],"names":[],"mappings":"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"}
|
package/dist/query.d.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { ModelPlanningError } from './errors.js';
|
|
2
|
+
import type { Row } from './session.js';
|
|
3
|
+
export declare const MAX_PAGE_ROWS = 1000;
|
|
4
|
+
export declare const MAX_ORDER_FIELDS = 32;
|
|
5
|
+
export declare class QueryRefused extends ModelPlanningError {
|
|
6
|
+
readonly name = "QueryRefused";
|
|
7
|
+
}
|
|
8
|
+
export interface Range {
|
|
9
|
+
readonly field: string;
|
|
10
|
+
readonly low?: unknown;
|
|
11
|
+
readonly high?: unknown;
|
|
12
|
+
}
|
|
13
|
+
export interface ReadColumn {
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly type: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ReadFilter {
|
|
18
|
+
readonly column: ReadColumn;
|
|
19
|
+
readonly operation: 'eq' | 'ge' | 'lt';
|
|
20
|
+
readonly value: unknown;
|
|
21
|
+
}
|
|
22
|
+
export interface ReadPlan {
|
|
23
|
+
readonly columns: readonly ReadColumn[];
|
|
24
|
+
readonly filters: readonly ReadFilter[];
|
|
25
|
+
readonly order: readonly ReadColumn[];
|
|
26
|
+
readonly descending: boolean;
|
|
27
|
+
readonly after: readonly unknown[] | null;
|
|
28
|
+
readonly limit: number;
|
|
29
|
+
}
|
|
30
|
+
export interface ScanPage {
|
|
31
|
+
readonly rows: readonly Row[];
|
|
32
|
+
readonly nextAfter: Readonly<Row> | null;
|
|
33
|
+
}
|
|
34
|
+
export interface Queryable {
|
|
35
|
+
selectRows(table: string, plan: ReadPlan): Promise<Row[]>;
|
|
36
|
+
countRows(table: string, plan: ReadPlan): Promise<bigint>;
|
|
37
|
+
}
|
|
38
|
+
export interface ReadOptions {
|
|
39
|
+
readonly where?: Readonly<Row> | null;
|
|
40
|
+
readonly bounds?: Range | null;
|
|
41
|
+
readonly orderBy?: string | null;
|
|
42
|
+
readonly descending?: boolean;
|
|
43
|
+
readonly after?: Readonly<Row> | null;
|
|
44
|
+
readonly limit?: number;
|
|
45
|
+
readonly paginate?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export declare function queryEngine(engine: object): Queryable;
|
|
48
|
+
export declare function queryValue(column: ReadColumn, value: unknown): unknown;
|
|
49
|
+
export declare function isQueryMapping(value: unknown): value is Readonly<Row>;
|
|
50
|
+
export declare function planRead(columns: readonly ReadColumn[], key: readonly string[], options?: ReadOptions): ReadPlan;
|
|
51
|
+
export declare function readSql(table: string, plan: ReadPlan, dialect: string, parameter: (value: unknown) => string, count?: boolean): string;
|
|
52
|
+
export interface NumericSummary {
|
|
53
|
+
readonly count: bigint;
|
|
54
|
+
readonly nonNullCount: bigint;
|
|
55
|
+
readonly minimum: bigint | number | string | null;
|
|
56
|
+
readonly maximum: bigint | number | string | null;
|
|
57
|
+
readonly total: bigint | string | null;
|
|
58
|
+
readonly mean: string | null;
|
|
59
|
+
}
|
|
60
|
+
export interface Summarizable {
|
|
61
|
+
summarizeRows(table: string, plan: ReadPlan, column: ReadColumn): Promise<Readonly<Row>>;
|
|
62
|
+
}
|
|
63
|
+
export declare function summaryEngine(engine: object): Summarizable;
|
|
64
|
+
export declare function summaryScale(column: ReadColumn, meanScale: number): number;
|
|
65
|
+
export declare function summarySql(table: string, plan: ReadPlan, column: ReadColumn, dialect: string, parameter: (value: unknown) => string): string;
|
|
66
|
+
export declare function numericSummary(record: Readonly<Row>, column: ReadColumn, meanScale: number): NumericSummary;
|
|
67
|
+
/** Preserve declared Decimal scale without routing the value through Number. */
|
|
68
|
+
export declare function readRow(columns: readonly ReadColumn[], row: Readonly<Row>): Row;
|
package/dist/query.js
ADDED
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
/** Bounded logical read plans. Predicate values never become shape identities or telemetry. */
|
|
2
|
+
import { compareCodePoints } from './canonical.js';
|
|
3
|
+
import { ModelPlanningError } from './errors.js';
|
|
4
|
+
import { QUOTE } from './schema.js';
|
|
5
|
+
import { Timestamp } from './timestamp.js';
|
|
6
|
+
export const MAX_PAGE_ROWS = 1000;
|
|
7
|
+
export const MAX_ORDER_FIELDS = 32;
|
|
8
|
+
export class QueryRefused extends ModelPlanningError {
|
|
9
|
+
name = 'QueryRefused';
|
|
10
|
+
}
|
|
11
|
+
export function queryEngine(engine) {
|
|
12
|
+
if (!('selectRows' in engine) || typeof engine.selectRows !== 'function' ||
|
|
13
|
+
!('countRows' in engine) || typeof engine.countRows !== 'function') {
|
|
14
|
+
throw new QueryRefused('this adapter does not support logical reads (selectRows/countRows)');
|
|
15
|
+
}
|
|
16
|
+
return engine;
|
|
17
|
+
}
|
|
18
|
+
function text(value) {
|
|
19
|
+
for (const character of value) {
|
|
20
|
+
const point = character.codePointAt(0);
|
|
21
|
+
if (point >= 0xd800 && point <= 0xdfff)
|
|
22
|
+
throw new QueryRefused('query strings must contain Unicode scalar values');
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
function decimal(value) {
|
|
27
|
+
if (typeof value === 'bigint' || (typeof value === 'number' && Number.isSafeInteger(value)))
|
|
28
|
+
value = String(value);
|
|
29
|
+
if (typeof value !== 'string')
|
|
30
|
+
throw new QueryRefused('decimal query values require integer or decimal text');
|
|
31
|
+
const source = value.trim().replace(/^([+-]?)\./, (_match, sign) => sign + '0.');
|
|
32
|
+
const parts = /^([+-]?)(\d+)(?:\.(\d*))?(?:[eE]([+-]?\d+))?$/.exec(source);
|
|
33
|
+
if (parts === null)
|
|
34
|
+
throw new QueryRefused('invalid decimal query value');
|
|
35
|
+
const fraction = parts[3] ?? '', exponent = Number(parts[4] ?? 0);
|
|
36
|
+
if (!Number.isSafeInteger(exponent))
|
|
37
|
+
throw new QueryRefused('decimal query values may use at most 76 digits');
|
|
38
|
+
let digits = (parts[2] + fraction).replace(/^0+(?=\d)/, '');
|
|
39
|
+
const effectiveScale = fraction.length - exponent;
|
|
40
|
+
const scale = Math.max(0, effectiveScale);
|
|
41
|
+
const integerDigits = Math.max(0, digits.length - effectiveScale);
|
|
42
|
+
if (integerDigits + scale > 76 || scale > 76)
|
|
43
|
+
throw new QueryRefused('decimal query values may use at most 76 digits');
|
|
44
|
+
if (effectiveScale < 0)
|
|
45
|
+
digits += '0'.repeat(-effectiveScale);
|
|
46
|
+
digits = digits.padStart(scale + 1, '0');
|
|
47
|
+
const point = digits.length - scale;
|
|
48
|
+
const result = (parts[1] === '-' ? '-' : '') + (scale === 0 ? digits : digits.slice(0, point) + '.' + digits.slice(point));
|
|
49
|
+
return { text: result, scale, integerDigits };
|
|
50
|
+
}
|
|
51
|
+
export function queryValue(column, value) {
|
|
52
|
+
if (value === null)
|
|
53
|
+
return null;
|
|
54
|
+
const kind = column.type;
|
|
55
|
+
if (kind.startsWith('decimal('))
|
|
56
|
+
return decimal(value).text;
|
|
57
|
+
if (kind === 'bool') {
|
|
58
|
+
if (typeof value !== 'boolean')
|
|
59
|
+
throw new QueryRefused('a boolean query value must be a bool');
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
if (kind === 'int32' || kind === 'int64') {
|
|
63
|
+
if (typeof value !== 'bigint' && !(typeof value === 'number' && Number.isSafeInteger(value))) {
|
|
64
|
+
throw new QueryRefused('an integer query value must be an exact integer');
|
|
65
|
+
}
|
|
66
|
+
const integer = BigInt(value), bits = kind === 'int32' ? 32n : 64n;
|
|
67
|
+
if (integer < -(2n ** (bits - 1n)) || integer >= 2n ** (bits - 1n))
|
|
68
|
+
throw new QueryRefused('integer query value is outside ' + kind);
|
|
69
|
+
return kind === 'int32' ? Number(integer) : integer;
|
|
70
|
+
}
|
|
71
|
+
if (kind === 'float32' || kind === 'float64') {
|
|
72
|
+
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
73
|
+
throw new QueryRefused('float query bounds must be finite');
|
|
74
|
+
return value;
|
|
75
|
+
}
|
|
76
|
+
if (kind === 'string') {
|
|
77
|
+
if (typeof value !== 'string')
|
|
78
|
+
throw new QueryRefused('a string query value must be text');
|
|
79
|
+
return text(value);
|
|
80
|
+
}
|
|
81
|
+
if (kind === 'uuid') {
|
|
82
|
+
if (typeof value !== 'string' || !/^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$/.test(value)) {
|
|
83
|
+
throw new QueryRefused('a UUID query value must be canonical UUID text');
|
|
84
|
+
}
|
|
85
|
+
return value.toLowerCase();
|
|
86
|
+
}
|
|
87
|
+
if (kind === 'date') {
|
|
88
|
+
if (typeof value !== 'string' || !/^\d{4}-\d{2}-\d{2}$/.test(value) || value.startsWith('0000-')) {
|
|
89
|
+
throw new QueryRefused('a date query value must be YYYY-MM-DD text');
|
|
90
|
+
}
|
|
91
|
+
const parsed = new Date(value + 'T00:00:00Z');
|
|
92
|
+
if (!Number.isFinite(parsed.getTime()) || parsed.toISOString().slice(0, 10) !== value)
|
|
93
|
+
throw new QueryRefused('invalid date query value');
|
|
94
|
+
return value;
|
|
95
|
+
}
|
|
96
|
+
if (kind === 'timestamp' || kind === 'timestamptz') {
|
|
97
|
+
try {
|
|
98
|
+
if (!(typeof value === 'string' || value instanceof Date || value instanceof Timestamp))
|
|
99
|
+
throw new Error();
|
|
100
|
+
if (typeof value === 'string' && !/^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d{1,6})?(?:Z|[+-]\d{2}:\d{2}(?::\d{2})?)?$/.test(value))
|
|
101
|
+
throw new Error();
|
|
102
|
+
return Timestamp.from(value);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
throw new QueryRefused('a timestamp query value must be valid ISO text with at most six fractional digits, Date or Timestamp');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (kind === 'bytes' && value instanceof Uint8Array)
|
|
109
|
+
return Buffer.from(value);
|
|
110
|
+
throw new QueryRefused('query predicates are not supported for ' + kind);
|
|
111
|
+
}
|
|
112
|
+
export function isQueryMapping(value) {
|
|
113
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value) &&
|
|
114
|
+
(Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null) &&
|
|
115
|
+
Reflect.ownKeys(value).length === Object.keys(value).length;
|
|
116
|
+
}
|
|
117
|
+
export function planRead(columns, key, options = {}) {
|
|
118
|
+
const byName = new Map(columns.map(column => [column.name, column]));
|
|
119
|
+
function field(name) {
|
|
120
|
+
const column = byName.get(name);
|
|
121
|
+
if (column === undefined)
|
|
122
|
+
throw new QueryRefused('query refers to a field this entity does not declare');
|
|
123
|
+
return column;
|
|
124
|
+
}
|
|
125
|
+
const limit = options.limit === undefined ? 100 : options.limit;
|
|
126
|
+
const descending = options.descending === undefined ? false : options.descending;
|
|
127
|
+
if (!Number.isInteger(limit) || limit < 1 || limit > MAX_PAGE_ROWS)
|
|
128
|
+
throw new QueryRefused('page limit must be an integer between 1 and ' + MAX_PAGE_ROWS);
|
|
129
|
+
if (typeof descending !== 'boolean')
|
|
130
|
+
throw new QueryRefused('descending must be a bool');
|
|
131
|
+
const paginate = options.paginate !== false;
|
|
132
|
+
if (paginate && key.length === 0)
|
|
133
|
+
throw new QueryRefused('a paginated read requires an entity key');
|
|
134
|
+
const orderNames = [...(options.orderBy == null ? [] : [options.orderBy]), ...key.filter(name => name !== options.orderBy)];
|
|
135
|
+
if (paginate && orderNames.length > MAX_ORDER_FIELDS)
|
|
136
|
+
throw new QueryRefused('a read may order by at most ' + MAX_ORDER_FIELDS + ' fields');
|
|
137
|
+
const order = paginate ? orderNames.map(field) : [];
|
|
138
|
+
if (order.some(column => ['json', 'float32', 'float64'].includes(column.type)))
|
|
139
|
+
throw new QueryRefused('JSON and floating-point ordering are not supported by this read API');
|
|
140
|
+
if (order.some(column => column.type.startsWith('decimal(') &&
|
|
141
|
+
Number(column.type.slice('decimal('.length, -1).split(',')[0]) > 76)) {
|
|
142
|
+
throw new QueryRefused('decimal ordering supports at most 76 digits');
|
|
143
|
+
}
|
|
144
|
+
const filters = [];
|
|
145
|
+
if (options.where != null) {
|
|
146
|
+
if (!isQueryMapping(options.where))
|
|
147
|
+
throw new QueryRefused('where must map logical field names to scalar values');
|
|
148
|
+
for (const name of Object.keys(options.where).sort(compareCodePoints)) {
|
|
149
|
+
const column = field(name);
|
|
150
|
+
if (column.type === 'json')
|
|
151
|
+
throw new QueryRefused('JSON predicates are not supported by this read API');
|
|
152
|
+
filters.push({ column, operation: 'eq', value: queryValue(column, options.where[name]) });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (options.bounds != null) {
|
|
156
|
+
const bounds = options.bounds;
|
|
157
|
+
if (!isQueryMapping(bounds) || typeof bounds.field !== 'string')
|
|
158
|
+
throw new QueryRefused('bounds must be a Range');
|
|
159
|
+
const column = field(bounds.field);
|
|
160
|
+
if (!['int32', 'int64', 'float32', 'float64', 'decimal(', 'date', 'timestamp'].some(prefix => column.type.startsWith(prefix))) {
|
|
161
|
+
throw new QueryRefused('this field has no range-read shape');
|
|
162
|
+
}
|
|
163
|
+
if (bounds.low == null && bounds.high == null)
|
|
164
|
+
throw new QueryRefused('a range needs at least one bound');
|
|
165
|
+
if (bounds.low != null)
|
|
166
|
+
filters.push({ column, operation: 'ge', value: queryValue(column, bounds.low) });
|
|
167
|
+
if (bounds.high != null)
|
|
168
|
+
filters.push({ column, operation: 'lt', value: queryValue(column, bounds.high) });
|
|
169
|
+
}
|
|
170
|
+
let after = null;
|
|
171
|
+
if (options.after != null) {
|
|
172
|
+
if (!paginate)
|
|
173
|
+
throw new QueryRefused('an aggregate has no pagination position');
|
|
174
|
+
if (!isQueryMapping(options.after) || Object.keys(options.after).length !== orderNames.length ||
|
|
175
|
+
orderNames.some(name => !Object.hasOwn(options.after, name))) {
|
|
176
|
+
throw new QueryRefused('after must contain exactly the complete ordering key');
|
|
177
|
+
}
|
|
178
|
+
after = order.map(column => queryValue(column, options.after[column.name]));
|
|
179
|
+
}
|
|
180
|
+
return { columns: [...columns], filters, order, descending, after, limit };
|
|
181
|
+
}
|
|
182
|
+
function expression(column, dialect) {
|
|
183
|
+
const quoted = QUOTE[dialect](column.name);
|
|
184
|
+
if (column.type === 'string' && dialect === 'postgres')
|
|
185
|
+
return '(' + quoted + ' COLLATE "C")';
|
|
186
|
+
if (column.type === 'uuid' && dialect === 'clickhouse')
|
|
187
|
+
return 'toString(' + quoted + ')';
|
|
188
|
+
if (column.type === 'float32' || column.type === 'float64') {
|
|
189
|
+
return dialect === 'postgres' ? 'CAST(' + quoted + ' AS double precision)' : 'toFloat64(' + quoted + ')';
|
|
190
|
+
}
|
|
191
|
+
return quoted;
|
|
192
|
+
}
|
|
193
|
+
function comparison(column, operator, value, dialect, parameter) {
|
|
194
|
+
let term = expression(column, dialect);
|
|
195
|
+
if (value === null)
|
|
196
|
+
return term + ' IS NULL';
|
|
197
|
+
let bound;
|
|
198
|
+
if (column.type.startsWith('decimal(')) {
|
|
199
|
+
const parts = column.type.slice('decimal('.length, -1).split(',').map(Number);
|
|
200
|
+
const number = decimal(value), scale = Math.max(parts[1], number.scale);
|
|
201
|
+
if (parts[0] - parts[1] + scale > 76)
|
|
202
|
+
throw new QueryRefused('decimal comparison requires more than 76 digits');
|
|
203
|
+
const target = dialect === 'postgres' ? 'numeric(76,' + scale + ')' : 'Nullable(Decimal(76,' + scale + '))';
|
|
204
|
+
term = 'CAST(' + term + ' AS ' + target + ')';
|
|
205
|
+
bound = 'CAST(' + parameter(number.text) + ' AS ' + target + ')';
|
|
206
|
+
}
|
|
207
|
+
else
|
|
208
|
+
bound = parameter(value);
|
|
209
|
+
let result = term + ' ' + operator + ' ' + bound;
|
|
210
|
+
if (['float32', 'float64'].includes(column.type) && operator !== '=') {
|
|
211
|
+
const notNan = dialect === 'postgres' ? term + " <> 'NaN'::double precision" : 'NOT isNaN(' + term + ')';
|
|
212
|
+
result = '(' + notNan + ' AND ' + result + ')';
|
|
213
|
+
}
|
|
214
|
+
return result;
|
|
215
|
+
}
|
|
216
|
+
export function readSql(table, plan, dialect, parameter, count = false) {
|
|
217
|
+
const operators = { eq: '=', ge: '>=', lt: '<' };
|
|
218
|
+
const clauses = plan.filters.map(predicate => comparison(predicate.column, operators[predicate.operation], predicate.value, dialect, parameter));
|
|
219
|
+
if (!count && plan.after !== null) {
|
|
220
|
+
const alternatives = [], operator = plan.descending ? '<' : '>';
|
|
221
|
+
for (let index = 0; index < plan.order.length; index++) {
|
|
222
|
+
const column = plan.order[index], value = plan.after[index];
|
|
223
|
+
if (value !== null) {
|
|
224
|
+
const prefix = plan.order.slice(0, index).map((previous, position) => comparison(previous, '=', plan.after[position], dialect, parameter));
|
|
225
|
+
const later = comparison(column, operator, value, dialect, parameter);
|
|
226
|
+
alternatives.push('(' + [...prefix, '(' + expression(column, dialect) + ' IS NULL OR ' + later + ')'].join(' AND ') + ')');
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
clauses.push(alternatives.length ? '(' + alternatives.join(' OR ') + ')' : 'FALSE');
|
|
230
|
+
}
|
|
231
|
+
const where = clauses.length ? ' WHERE ' + clauses.join(' AND ') : '';
|
|
232
|
+
const quote = QUOTE[dialect], from = ' FROM ' + quote(table) + (dialect === 'clickhouse' ? ' FINAL' : '');
|
|
233
|
+
if (count)
|
|
234
|
+
return 'SELECT ' + (dialect === 'postgres' ? 'CAST(count(*) AS text)' : 'toString(count())') + ' AS sde_count' + from + where;
|
|
235
|
+
// JSON transports otherwise lose non-finite floating values before a caller can see them.
|
|
236
|
+
const projection = plan.columns.map(column => {
|
|
237
|
+
const name = quote(column.name);
|
|
238
|
+
if (dialect === 'clickhouse' && ['timestamp', 'timestamptz'].includes(column.type)) {
|
|
239
|
+
return "toTimeZone(" + name + ", 'UTC') AS " + name;
|
|
240
|
+
}
|
|
241
|
+
if (column.type.startsWith('decimal(')) {
|
|
242
|
+
return (dialect === 'postgres' ? 'CAST(' + name + ' AS text)' : 'toString(' + name + ')') + ' AS ' + name;
|
|
243
|
+
}
|
|
244
|
+
return dialect === 'clickhouse' && ['float32', 'float64'].includes(column.type)
|
|
245
|
+
? 'toString(' + name + ') AS ' + name : name;
|
|
246
|
+
}).join(', ');
|
|
247
|
+
const direction = plan.descending ? 'DESC' : 'ASC';
|
|
248
|
+
const order = plan.order.map(column => expression(column, dialect) + ' ' + direction + ' NULLS LAST').join(', ');
|
|
249
|
+
return 'SELECT ' + projection + from + where + ' ORDER BY ' + order + ' LIMIT ' + parameter(plan.limit + 1);
|
|
250
|
+
}
|
|
251
|
+
export function summaryEngine(engine) {
|
|
252
|
+
if (!('summarizeRows' in engine) || typeof engine.summarizeRows !== 'function') {
|
|
253
|
+
throw new QueryRefused('this adapter does not support numeric summaries (summarizeRows)');
|
|
254
|
+
}
|
|
255
|
+
return engine;
|
|
256
|
+
}
|
|
257
|
+
export function summaryScale(column, meanScale) {
|
|
258
|
+
if (!Number.isInteger(meanScale) || meanScale < 0 || meanScale > 38)
|
|
259
|
+
throw new QueryRefused('meanScale must be an integer between 0 and 38');
|
|
260
|
+
if (column.type === 'int32' || column.type === 'int64')
|
|
261
|
+
return 0;
|
|
262
|
+
if (column.type.startsWith('decimal(')) {
|
|
263
|
+
const [precision, scale] = column.type.slice('decimal('.length, -1).split(',').map(Number);
|
|
264
|
+
if (precision <= 56)
|
|
265
|
+
return scale;
|
|
266
|
+
}
|
|
267
|
+
throw new QueryRefused('summaries require int32, int64 or decimal precision up to 56');
|
|
268
|
+
}
|
|
269
|
+
export function summarySql(table, plan, column, dialect, parameter) {
|
|
270
|
+
const scale = summaryScale(column, 0), quote = QUOTE[dialect], name = quote(column.name);
|
|
271
|
+
const target = dialect === 'postgres' ? 'numeric(76,' + scale + ')' : 'Nullable(Decimal(76,' + scale + '))';
|
|
272
|
+
const text = (value) => dialect === 'postgres' ? 'CAST(' + value + ' AS text)' : 'toString(' + value + ')';
|
|
273
|
+
const fields = [
|
|
274
|
+
text('count(*)') + ' AS sde_count', text('count(' + name + ')') + ' AS sde_present',
|
|
275
|
+
text('min(' + name + ')') + ' AS sde_min', text('max(' + name + ')') + ' AS sde_max',
|
|
276
|
+
text('sum(CAST(' + name + ' AS ' + target + '))') + ' AS sde_total',
|
|
277
|
+
];
|
|
278
|
+
const operators = { eq: '=', ge: '>=', lt: '<' };
|
|
279
|
+
const clauses = plan.filters.map(item => comparison(item.column, operators[item.operation], item.value, dialect, parameter));
|
|
280
|
+
return 'SELECT ' + fields.join(', ') + ' FROM ' + quote(table) + (dialect === 'clickhouse' ? ' FINAL' : '') +
|
|
281
|
+
(clauses.length ? ' WHERE ' + clauses.join(' AND ') : '');
|
|
282
|
+
}
|
|
283
|
+
function decimalInteger(value, scale) {
|
|
284
|
+
let integer = BigInt(value.text.replace('.', ''));
|
|
285
|
+
const shift = scale - value.scale;
|
|
286
|
+
if (shift < 0) {
|
|
287
|
+
const divisor = 10n ** BigInt(-shift);
|
|
288
|
+
if (integer % divisor !== 0n)
|
|
289
|
+
throw new Error('summary result has fractional digits outside the stored scale');
|
|
290
|
+
integer /= divisor;
|
|
291
|
+
}
|
|
292
|
+
else
|
|
293
|
+
integer *= 10n ** BigInt(shift);
|
|
294
|
+
return integer;
|
|
295
|
+
}
|
|
296
|
+
export function numericSummary(record, column, meanScale) {
|
|
297
|
+
const scale = summaryScale(column, meanScale);
|
|
298
|
+
const count = BigInt(String(record['sde_count'])), nonNullCount = BigInt(String(record['sde_present']));
|
|
299
|
+
if (nonNullCount < 0n || count < nonNullCount)
|
|
300
|
+
throw new Error('summary counts are inconsistent');
|
|
301
|
+
if (nonNullCount === 0n)
|
|
302
|
+
return { count, nonNullCount, minimum: null, maximum: null, total: null, mean: null };
|
|
303
|
+
const minimum = decimal(record['sde_min']), maximum = decimal(record['sde_max']), total = decimal(record['sde_total']);
|
|
304
|
+
const unscaled = decimalInteger(total, scale), absolute = unscaled < 0n ? -unscaled : unscaled;
|
|
305
|
+
const numerator = absolute * 10n ** BigInt(meanScale), denominator = nonNullCount * 10n ** BigInt(scale);
|
|
306
|
+
let rounded = numerator / denominator;
|
|
307
|
+
const remainder = numerator % denominator;
|
|
308
|
+
if (remainder * 2n > denominator || (remainder * 2n === denominator && rounded % 2n !== 0n))
|
|
309
|
+
rounded += 1n;
|
|
310
|
+
const digits = rounded.toString().padStart(meanScale + 1, '0'), point = digits.length - meanScale;
|
|
311
|
+
const mean = (unscaled < 0n ? '-' : '') + (meanScale === 0 ? digits : digits.slice(0, point) + '.' + digits.slice(point));
|
|
312
|
+
if (column.type === 'int32' || column.type === 'int64') {
|
|
313
|
+
const low = decimalInteger(minimum, 0), high = decimalInteger(maximum, 0);
|
|
314
|
+
return { count, nonNullCount, minimum: column.type === 'int32' ? Number(low) : low,
|
|
315
|
+
maximum: column.type === 'int32' ? Number(high) : high, total: decimalInteger(total, 0), mean };
|
|
316
|
+
}
|
|
317
|
+
function scaled(value) {
|
|
318
|
+
const coefficient = decimalInteger(value, scale), absolute = coefficient < 0n ? -coefficient : coefficient;
|
|
319
|
+
const digits = absolute.toString().padStart(scale + 1, '0'), point = digits.length - scale;
|
|
320
|
+
return (coefficient < 0n ? '-' : '') + (scale === 0 ? digits : digits.slice(0, point) + '.' + digits.slice(point));
|
|
321
|
+
}
|
|
322
|
+
return { count, nonNullCount, minimum: scaled(minimum), maximum: scaled(maximum), total: scaled(total), mean };
|
|
323
|
+
}
|
|
324
|
+
/** Preserve declared Decimal scale without routing the value through Number. */
|
|
325
|
+
export function readRow(columns, row) {
|
|
326
|
+
const result = { ...row };
|
|
327
|
+
for (const column of columns) {
|
|
328
|
+
const value = result[column.name];
|
|
329
|
+
if (value !== null && column.type.startsWith('decimal(')) {
|
|
330
|
+
const scale = Number(column.type.slice('decimal('.length, -1).split(',')[1]);
|
|
331
|
+
const coefficient = decimalInteger(decimal(value), scale);
|
|
332
|
+
const absolute = coefficient < 0n ? -coefficient : coefficient;
|
|
333
|
+
const digits = absolute.toString().padStart(scale + 1, '0'), point = digits.length - scale;
|
|
334
|
+
result[column.name] = (coefficient < 0n ? '-' : '') +
|
|
335
|
+
(scale === 0 ? digits : digits.slice(0, point) + '.' + digits.slice(point));
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return result;
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing: a lookup and three conditions, and deliberately nothing more.
|
|
3
|
+
*
|
|
4
|
+
* The library does not decide where an operation goes. The planner decided, ahead of time, for every
|
|
5
|
+
* shape the model admits, and put the answers in the placement map. This reads them.
|
|
6
|
+
*
|
|
7
|
+
* That division is exactly why four libraries are affordable. Decisions need telemetry, history, a
|
|
8
|
+
* cost model and an explanation, and they have to be reproducible - all of which live on the control
|
|
9
|
+
* plane, once. If the library decided anything, that judgement would have to be reimplemented in
|
|
10
|
+
* every language and kept identical forever.
|
|
11
|
+
*
|
|
12
|
+
* The three conditions that are not lookups are correctness, not judgement:
|
|
13
|
+
*
|
|
14
|
+
* 1. Writes go to the source materialisation.
|
|
15
|
+
* 2. An operation inside a transaction that has already written goes to the source, because a derived
|
|
16
|
+
* copy is behind by design and cannot show the write the caller just made.
|
|
17
|
+
* 3. An operation asking for no staleness goes to the source, for the same reason.
|
|
18
|
+
*/
|
|
19
|
+
import type { Materialization, PlacementMap } from './placement.js';
|
|
20
|
+
import type { OperationShape } from './shapes.js';
|
|
21
|
+
export interface ResolveOptions {
|
|
22
|
+
readonly inWriteTransaction?: boolean;
|
|
23
|
+
readonly fresh?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function resolve(map: PlacementMap, shape: OperationShape, options?: ResolveOptions): Materialization;
|
package/dist/routing.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing: a lookup and three conditions, and deliberately nothing more.
|
|
3
|
+
*
|
|
4
|
+
* The library does not decide where an operation goes. The planner decided, ahead of time, for every
|
|
5
|
+
* shape the model admits, and put the answers in the placement map. This reads them.
|
|
6
|
+
*
|
|
7
|
+
* That division is exactly why four libraries are affordable. Decisions need telemetry, history, a
|
|
8
|
+
* cost model and an explanation, and they have to be reproducible - all of which live on the control
|
|
9
|
+
* plane, once. If the library decided anything, that judgement would have to be reimplemented in
|
|
10
|
+
* every language and kept identical forever.
|
|
11
|
+
*
|
|
12
|
+
* The three conditions that are not lookups are correctness, not judgement:
|
|
13
|
+
*
|
|
14
|
+
* 1. Writes go to the source materialisation.
|
|
15
|
+
* 2. An operation inside a transaction that has already written goes to the source, because a derived
|
|
16
|
+
* copy is behind by design and cannot show the write the caller just made.
|
|
17
|
+
* 3. An operation asking for no staleness goes to the source, for the same reason.
|
|
18
|
+
*/
|
|
19
|
+
import { materializationById, placementOf } from './placement.js';
|
|
20
|
+
import { shapeId, WRITE_KINDS } from './shapes.js';
|
|
21
|
+
export function resolve(map, shape, options = {}) {
|
|
22
|
+
const placement = placementOf(map, shape.group);
|
|
23
|
+
if (WRITE_KINDS.has(shape.kind))
|
|
24
|
+
return placement.source;
|
|
25
|
+
if (options.inWriteTransaction === true || options.fresh === true)
|
|
26
|
+
return placement.source;
|
|
27
|
+
const target = map.routing[shapeId(shape)];
|
|
28
|
+
if (target === undefined) {
|
|
29
|
+
// Not an error. A map with no routing table is the normal shape of a hand-written one, and the
|
|
30
|
+
// source is always a correct answer - merely sometimes a slower one.
|
|
31
|
+
return placement.source;
|
|
32
|
+
}
|
|
33
|
+
return materializationById(placement, target);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../src/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAOlD,MAAM,UAAU,OAAO,CACrB,GAAiB,EACjB,KAAqB,EACrB,UAA0B,EAAE;IAE5B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAE/C,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC,MAAM,CAAA;IACxD,IAAI,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC,MAAM,CAAA;IAE1F,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,+FAA+F;QAC/F,qEAAqE;QACrE,OAAO,SAAS,CAAC,MAAM,CAAA;IACzB,CAAC;IACD,OAAO,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC"}
|