@sixb/sqlite 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +193 -48
- package/dist/index.js.map +6 -6
- package/dist/migrations.d.ts.map +1 -1
- package/dist/ontology-storage/materialization-state.d.ts.map +1 -1
- package/dist/workflow-run-storage.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/migrations/002-workflow-run-output.sql +27 -0
- package/src/migrations/003-merge-sync-runs.sql +71 -0
- package/src/migrations.ts +7 -1
- package/src/ontology-storage/materialization-state.ts +81 -42
- package/src/sync-run-storage.ts +2 -2
- package/src/workflow-run-storage.ts +7 -2
package/dist/migrations.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAIrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAGV,YAAY,EACZ,aAAa,EACb,oBAAoB,EACrB,MAAM,oBAAoB,CAAA;AAwB3B,eAAO,MAAM,yBAAyB,sBAAsB,CAAA;AAC5D,eAAO,MAAM,mBAAmB,mBAAmB,CAAA;AAEnD,eAAO,MAAM,uBAAuB,wBAOlC,CAAA;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAQ9E;AAED,wBAAgB,UAAU,CACxB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAC1C,OAAO,GAAE,oBAAyB,GACjC,aAAa,CAAC,QAAQ,CAAC,CAEzB;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAS3D;AAED,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE,CAOzF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAA;CAC5C,GAAG,eAAe,CAoBlB;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1E;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialization-state.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAGV,eAAe,EACf,iBAAiB,EAEjB,kBAAkB,EACnB,MAAM,qCAAqC,CAAA;AAc5C,OAAO,KAAK,EACV,6BAA6B,EAC7B,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,4BAA4B,EAM5B,oBAAoB,EACrB,MAAM,oBAAoB,CAAA;AAU3B,eAAO,MAAM,iCAAiC,kCAAkC,CAAA;AAChF,eAAO,MAAM,6BAA6B,8BAA8B,CAAA;AAwDxE,MAAM,MAAM,mBAAmB,GAC3B;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;IACvB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAA;CAC5B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAA;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC/B,CAAA;AAEL,UAAU,wBAAwB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAA;IAC3C,QAAQ,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,qBAAa,gCAAgC;IAEzC,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,QAAQ,CAAC,SAAS,EAAE,MAAM;gBADT,EAAE,EAAE,QAAQ,EACpB,SAAS,EAAE,MAAM;IAG5B,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,0BAA0B;IAI/D,YAAY,CAAC,IAAI,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,0BAA0B,EAAE;
|
|
1
|
+
{"version":3,"file":"materialization-state.d.ts","sourceRoot":"","sources":["../../src/ontology-storage/materialization-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-run-storage.d.ts","sourceRoot":"","sources":["../src/workflow-run-storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,OAAO,KAAK,EACV,+BAA+B,EAC/B,kDAAkD,EAClD,yCAAyC,EACzC,+BAA+B,EAC/B,+BAA+B,EAC/B,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,yBAAyB,EACzB,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,gCAAgC,EAChC,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,oBAAoB,CAAA;AAW3B,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAA;AAEvB,MAAM,WAAW,+BAA+B;IAC9C,mFAAmF;IACnF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gEAAgE;IAChE,UAAU,CAAC,EAAE,qBAAqB,CAAA;CACnC;AAED,qBAAa,wBAAyB,YAAW,kBAAkB;IACjE,QAAQ,CAAC,KAAK,EAAE,4BAA4B,CAAA;IAC5C,QAAQ,CAAC,UAAU,EAAE,iCAAiC,CAAA;IAEtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAU;gBAEjB,OAAO,GAAE,+BAAoC;IAYnD,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgD/D,KAAK,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmG/D,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmBnE,yBAAyB,CAC7B,KAAK,EAAE,yCAAyC,GAC/C,OAAO,CAAC,iBAAiB,CAAC;IAqBvB,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-run-storage.d.ts","sourceRoot":"","sources":["../src/workflow-run-storage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sixb/sqlite",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "SQLite storage provider for Sixb",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sixb",
|
|
@@ -35,10 +35,11 @@
|
|
|
35
35
|
"test": "bun test",
|
|
36
36
|
"prepack": "bun run build"
|
|
37
37
|
},
|
|
38
|
-
"
|
|
39
|
-
"@sixb/core": "0.1.
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"@sixb/core": "0.1.1"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
+
"@sixb/core": "0.1.1",
|
|
42
43
|
"@types/bun": "latest",
|
|
43
44
|
"typescript": "^5.7.0"
|
|
44
45
|
},
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
ALTER TABLE workflow_runs ADD COLUMN output TEXT;
|
|
2
|
+
|
|
3
|
+
UPDATE workflow_runs AS run
|
|
4
|
+
SET output = CASE
|
|
5
|
+
WHEN EXISTS (
|
|
6
|
+
SELECT 1
|
|
7
|
+
FROM workflow_node_runs AS node
|
|
8
|
+
WHERE node.project_id = run.project_id
|
|
9
|
+
AND node.workflow_run_id = run.id
|
|
10
|
+
AND node.status = 'succeeded'
|
|
11
|
+
AND node.node_type <> 'action'
|
|
12
|
+
) THEN COALESCE(
|
|
13
|
+
(
|
|
14
|
+
SELECT node.output
|
|
15
|
+
FROM workflow_node_runs AS node
|
|
16
|
+
WHERE node.project_id = run.project_id
|
|
17
|
+
AND node.workflow_run_id = run.id
|
|
18
|
+
AND node.status = 'succeeded'
|
|
19
|
+
AND node.node_type <> 'action'
|
|
20
|
+
ORDER BY node.node_index DESC, node.id DESC
|
|
21
|
+
LIMIT 1
|
|
22
|
+
),
|
|
23
|
+
'{}'
|
|
24
|
+
)
|
|
25
|
+
ELSE run.input
|
|
26
|
+
END
|
|
27
|
+
WHERE run.status = 'succeeded';
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
DROP INDEX idx_sync_runs_project_started;
|
|
2
|
+
DROP INDEX idx_sync_runs_project_dataset_started;
|
|
3
|
+
DROP INDEX idx_sync_runs_project_sync_started;
|
|
4
|
+
DROP INDEX idx_sync_runs_project_status_started;
|
|
5
|
+
|
|
6
|
+
ALTER TABLE sync_runs RENAME TO sync_runs_before_merge_mode;
|
|
7
|
+
|
|
8
|
+
CREATE TABLE sync_runs (
|
|
9
|
+
project_id TEXT NOT NULL,
|
|
10
|
+
id TEXT NOT NULL,
|
|
11
|
+
sync_id TEXT NOT NULL,
|
|
12
|
+
dataset_id TEXT NOT NULL,
|
|
13
|
+
mode TEXT NOT NULL CHECK (mode IN ('snapshot', 'append', 'merge')),
|
|
14
|
+
status TEXT NOT NULL CHECK (status IN ('running', 'succeeded', 'failed', 'cancelled')),
|
|
15
|
+
started_at TEXT NOT NULL,
|
|
16
|
+
finished_at TEXT,
|
|
17
|
+
rows_read INTEGER CHECK (rows_read IS NULL OR rows_read >= 0),
|
|
18
|
+
output_version_id TEXT,
|
|
19
|
+
expected_latest_version_id TEXT,
|
|
20
|
+
commit_message TEXT,
|
|
21
|
+
error_name TEXT,
|
|
22
|
+
error_message TEXT,
|
|
23
|
+
checkpoint TEXT,
|
|
24
|
+
PRIMARY KEY (project_id, id)
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
INSERT INTO sync_runs (
|
|
28
|
+
project_id,
|
|
29
|
+
id,
|
|
30
|
+
sync_id,
|
|
31
|
+
dataset_id,
|
|
32
|
+
mode,
|
|
33
|
+
status,
|
|
34
|
+
started_at,
|
|
35
|
+
finished_at,
|
|
36
|
+
rows_read,
|
|
37
|
+
output_version_id,
|
|
38
|
+
expected_latest_version_id,
|
|
39
|
+
commit_message,
|
|
40
|
+
error_name,
|
|
41
|
+
error_message,
|
|
42
|
+
checkpoint
|
|
43
|
+
)
|
|
44
|
+
SELECT
|
|
45
|
+
project_id,
|
|
46
|
+
id,
|
|
47
|
+
sync_id,
|
|
48
|
+
dataset_id,
|
|
49
|
+
mode,
|
|
50
|
+
status,
|
|
51
|
+
started_at,
|
|
52
|
+
finished_at,
|
|
53
|
+
rows_read,
|
|
54
|
+
output_version_id,
|
|
55
|
+
expected_latest_version_id,
|
|
56
|
+
commit_message,
|
|
57
|
+
error_name,
|
|
58
|
+
error_message,
|
|
59
|
+
checkpoint
|
|
60
|
+
FROM sync_runs_before_merge_mode;
|
|
61
|
+
|
|
62
|
+
DROP TABLE sync_runs_before_merge_mode;
|
|
63
|
+
|
|
64
|
+
CREATE INDEX idx_sync_runs_project_started
|
|
65
|
+
ON sync_runs(project_id, started_at DESC);
|
|
66
|
+
CREATE INDEX idx_sync_runs_project_dataset_started
|
|
67
|
+
ON sync_runs(project_id, dataset_id, started_at DESC);
|
|
68
|
+
CREATE INDEX idx_sync_runs_project_sync_started
|
|
69
|
+
ON sync_runs(project_id, sync_id, started_at DESC);
|
|
70
|
+
CREATE INDEX idx_sync_runs_project_status_started
|
|
71
|
+
ON sync_runs(project_id, status, started_at DESC);
|
package/src/migrations.ts
CHANGED
|
@@ -17,6 +17,8 @@ import {
|
|
|
17
17
|
step,
|
|
18
18
|
} from "@sixb/core/storage"
|
|
19
19
|
import initialSchemaSql from "./migrations/001-initial-schema.sql" with { type: "text" }
|
|
20
|
+
import workflowRunOutputSql from "./migrations/002-workflow-run-output.sql" with { type: "text" }
|
|
21
|
+
import mergeSyncRunsSql from "./migrations/003-merge-sync-runs.sql" with { type: "text" }
|
|
20
22
|
|
|
21
23
|
const MIGRATIONS_TABLE_SQL = `
|
|
22
24
|
CREATE TABLE IF NOT EXISTS sixb_migrations (
|
|
@@ -36,7 +38,11 @@ export const SQLITE_STORAGE_FILE = "storage.sqlite"
|
|
|
36
38
|
|
|
37
39
|
export const sqliteStorageMigrations = defineMigrations({
|
|
38
40
|
adapterId: SQLITE_STORAGE_ADAPTER_ID,
|
|
39
|
-
steps: [
|
|
41
|
+
steps: [
|
|
42
|
+
sqliteSql("001-initial-schema", initialSchemaSql),
|
|
43
|
+
sqliteSql("002-workflow-run-output", workflowRunOutputSql),
|
|
44
|
+
sqliteSql("003-merge-sync-runs", mergeSyncRunsSql),
|
|
45
|
+
],
|
|
40
46
|
})
|
|
41
47
|
|
|
42
48
|
export function sqliteStoragePath(basePath: string): string {
|
|
@@ -142,33 +142,44 @@ export class SqliteMaterializationStateReader {
|
|
|
142
142
|
json_extract(value, '$.primaryId') AS primary_id
|
|
143
143
|
FROM json_each(?)
|
|
144
144
|
`
|
|
145
|
+
// Keep the JSON request set on the outer side of each lookup. SQLite cannot estimate the
|
|
146
|
+
// cardinality of json_each() and otherwise scans every project row once per requested key.
|
|
147
|
+
// CROSS JOIN deliberately fixes the loop order so the existing composite indexes are used.
|
|
145
148
|
const effectiveRows = this.db
|
|
146
149
|
.query(
|
|
147
150
|
`WITH requested AS (${requestedObjects})
|
|
148
|
-
SELECT objects.* FROM
|
|
149
|
-
JOIN
|
|
150
|
-
|
|
151
|
+
SELECT objects.* FROM requested
|
|
152
|
+
CROSS JOIN objects
|
|
153
|
+
ON objects.project_id = ?
|
|
154
|
+
AND objects.object_type_id = requested.object_type_id
|
|
155
|
+
AND objects.primary_id = requested.primary_id`
|
|
151
156
|
)
|
|
152
157
|
.all(requested, this.projectId) as EffectiveObjectRow[]
|
|
153
158
|
const sourceRows = this.db
|
|
154
159
|
.query(
|
|
155
160
|
`WITH requested AS (${requestedObjects})
|
|
156
|
-
SELECT rows.* FROM
|
|
157
|
-
JOIN
|
|
161
|
+
SELECT rows.* FROM requested
|
|
162
|
+
CROSS JOIN ontology_source_rows AS rows
|
|
163
|
+
ON rows.project_id = ?
|
|
164
|
+
AND rows.entity_kind = 'object'
|
|
165
|
+
AND rows.object_type_id = requested.object_type_id
|
|
166
|
+
AND rows.primary_id = requested.primary_id
|
|
158
167
|
JOIN ontology_sources AS sources
|
|
159
168
|
ON sources.project_id = rows.project_id
|
|
160
169
|
AND sources.source_id = rows.source_id
|
|
161
170
|
AND sources.materialization_id = rows.materialization_id
|
|
162
|
-
WHERE
|
|
163
|
-
AND sources.status = 'active'`
|
|
171
|
+
WHERE sources.status = 'active'`
|
|
164
172
|
)
|
|
165
173
|
.all(requested, this.projectId) as SqliteOntologySourceAssertionRow[]
|
|
166
174
|
const overrideRows = this.db
|
|
167
175
|
.query(
|
|
168
176
|
`WITH requested AS (${requestedObjects})
|
|
169
|
-
SELECT overrides.* FROM
|
|
170
|
-
JOIN
|
|
171
|
-
|
|
177
|
+
SELECT overrides.* FROM requested
|
|
178
|
+
CROSS JOIN ontology_overrides AS overrides
|
|
179
|
+
ON overrides.project_id = ?
|
|
180
|
+
AND overrides.entity_kind = 'object'
|
|
181
|
+
AND overrides.object_type_id = requested.object_type_id
|
|
182
|
+
AND overrides.primary_id = requested.primary_id`
|
|
172
183
|
)
|
|
173
184
|
.all(requested, this.projectId) as ObjectOverrideRow[]
|
|
174
185
|
const telemetryRows = this.db
|
|
@@ -180,11 +191,11 @@ export class SqliteMaterializationStateReader {
|
|
|
180
191
|
timeseries.property_id
|
|
181
192
|
ORDER BY timeseries.at DESC
|
|
182
193
|
) AS rank
|
|
183
|
-
FROM
|
|
184
|
-
JOIN
|
|
185
|
-
ON
|
|
186
|
-
AND
|
|
187
|
-
|
|
194
|
+
FROM requested
|
|
195
|
+
CROSS JOIN timeseries
|
|
196
|
+
ON timeseries.project_id = ?
|
|
197
|
+
AND timeseries.object_type_id = requested.object_type_id
|
|
198
|
+
AND timeseries.object_id = requested.primary_id
|
|
188
199
|
)
|
|
189
200
|
SELECT * FROM ranked WHERE rank = 1`
|
|
190
201
|
)
|
|
@@ -261,34 +272,47 @@ export class SqliteMaterializationStateReader {
|
|
|
261
272
|
const effectiveRows = this.db
|
|
262
273
|
.query(
|
|
263
274
|
`WITH requested AS (${effectiveRequest})
|
|
264
|
-
SELECT links.* FROM
|
|
265
|
-
JOIN
|
|
266
|
-
|
|
275
|
+
SELECT links.* FROM requested
|
|
276
|
+
CROSS JOIN links
|
|
277
|
+
ON links.project_id = ?
|
|
278
|
+
AND links.source_type_id = requested.source_type_id
|
|
279
|
+
AND links.source_id = requested.source_id
|
|
280
|
+
AND links.link_id = requested.link_id
|
|
281
|
+
AND links.target_type_id = requested.target_type_id
|
|
282
|
+
AND links.target_id = requested.target_id`
|
|
267
283
|
)
|
|
268
284
|
.all(requested, this.projectId) as EffectiveLinkRow[]
|
|
269
285
|
const sourceRows = this.db
|
|
270
286
|
.query(
|
|
271
287
|
`WITH requested AS (${sourceRequest})
|
|
272
|
-
SELECT rows.* FROM
|
|
273
|
-
JOIN
|
|
274
|
-
|
|
275
|
-
|
|
288
|
+
SELECT rows.* FROM requested
|
|
289
|
+
CROSS JOIN ontology_source_rows AS rows
|
|
290
|
+
ON rows.project_id = ?
|
|
291
|
+
AND rows.entity_kind = 'link'
|
|
292
|
+
AND rows.source_type_id = requested.source_type_id
|
|
293
|
+
AND rows.source_primary_id = requested.source_primary_id
|
|
294
|
+
AND rows.link_id = requested.link_id
|
|
295
|
+
AND rows.target_type_id = requested.target_type_id
|
|
296
|
+
AND rows.target_primary_id = requested.target_primary_id
|
|
276
297
|
JOIN ontology_sources AS sources
|
|
277
298
|
ON sources.project_id = rows.project_id
|
|
278
299
|
AND sources.source_id = rows.source_id
|
|
279
300
|
AND sources.materialization_id = rows.materialization_id
|
|
280
|
-
WHERE
|
|
281
|
-
AND sources.status = 'active'`
|
|
301
|
+
WHERE sources.status = 'active'`
|
|
282
302
|
)
|
|
283
303
|
.all(requested, this.projectId) as SqliteOntologySourceAssertionRow[]
|
|
284
304
|
const overrideRows = this.db
|
|
285
305
|
.query(
|
|
286
306
|
`WITH requested AS (${sourceRequest})
|
|
287
|
-
SELECT overrides.* FROM
|
|
288
|
-
JOIN
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
307
|
+
SELECT overrides.* FROM requested
|
|
308
|
+
CROSS JOIN ontology_overrides AS overrides
|
|
309
|
+
ON overrides.project_id = ?
|
|
310
|
+
AND overrides.entity_kind = 'link'
|
|
311
|
+
AND overrides.source_type_id = requested.source_type_id
|
|
312
|
+
AND overrides.source_primary_id = requested.source_primary_id
|
|
313
|
+
AND overrides.link_id = requested.link_id
|
|
314
|
+
AND overrides.target_type_id = requested.target_type_id
|
|
315
|
+
AND overrides.target_primary_id = requested.target_primary_id`
|
|
292
316
|
)
|
|
293
317
|
.all(requested, this.projectId) as LinkOverrideRow[]
|
|
294
318
|
const effective = new Map(
|
|
@@ -337,9 +361,13 @@ export class SqliteMaterializationStateReader {
|
|
|
337
361
|
json_extract(value, '$.at') AS at
|
|
338
362
|
FROM json_each(?)
|
|
339
363
|
)
|
|
340
|
-
SELECT timeseries.* FROM
|
|
341
|
-
JOIN
|
|
342
|
-
|
|
364
|
+
SELECT timeseries.* FROM requested
|
|
365
|
+
CROSS JOIN timeseries
|
|
366
|
+
ON timeseries.project_id = ?
|
|
367
|
+
AND timeseries.object_type_id = requested.object_type_id
|
|
368
|
+
AND timeseries.object_id = requested.object_id
|
|
369
|
+
AND timeseries.property_id = requested.property_id
|
|
370
|
+
AND timeseries.at = requested.at`
|
|
343
371
|
)
|
|
344
372
|
.all(requested, this.projectId) as TelemetryRow[]
|
|
345
373
|
const found = new Map(
|
|
@@ -382,9 +410,12 @@ export class SqliteMaterializationStateReader {
|
|
|
382
410
|
FROM json_each(?)
|
|
383
411
|
)
|
|
384
412
|
SELECT requested.scope_sort_key, links.*
|
|
385
|
-
FROM
|
|
386
|
-
JOIN
|
|
387
|
-
|
|
413
|
+
FROM requested
|
|
414
|
+
CROSS JOIN links
|
|
415
|
+
ON links.project_id = ?
|
|
416
|
+
AND links.source_type_id = requested.source_type_id
|
|
417
|
+
AND links.source_id = requested.source_id
|
|
418
|
+
AND links.link_id = requested.link_id
|
|
388
419
|
ORDER BY requested.scope_sort_key, ${linkSortExpression("links")}
|
|
389
420
|
`
|
|
390
421
|
)
|
|
@@ -610,22 +641,30 @@ export class SqliteMaterializationStateReader {
|
|
|
610
641
|
if (materializationIds.length === 0 || refs.length === 0) {
|
|
611
642
|
return { owned: new Set(), byMaterialization: new Map() }
|
|
612
643
|
}
|
|
613
|
-
const
|
|
644
|
+
const requestedEntities = canonicalJson(
|
|
645
|
+
refs.map((ref) => ({ entityKind: ref.kind, entityKey: projectionEntityKey(ref) }))
|
|
646
|
+
)
|
|
614
647
|
const requestedMaterializations = canonicalJson([...new Set(materializationIds)])
|
|
615
648
|
const rows = this.db
|
|
616
649
|
.query(
|
|
617
650
|
`WITH requested_entities AS (
|
|
618
|
-
SELECT value AS
|
|
651
|
+
SELECT DISTINCT json_extract(value, '$.entityKind') AS entity_kind,
|
|
652
|
+
json_extract(value, '$.entityKey') AS entity_key
|
|
653
|
+
FROM json_each(?)
|
|
619
654
|
), requested_materializations AS (
|
|
620
655
|
SELECT value AS materialization_id FROM json_each(?)
|
|
621
656
|
)
|
|
622
|
-
SELECT rows.* FROM
|
|
623
|
-
JOIN requested_entities
|
|
624
|
-
JOIN
|
|
625
|
-
|
|
657
|
+
SELECT rows.* FROM requested_materializations
|
|
658
|
+
CROSS JOIN requested_entities
|
|
659
|
+
CROSS JOIN ontology_source_rows AS rows
|
|
660
|
+
ON rows.project_id = ?
|
|
661
|
+
AND rows.source_id = ?
|
|
662
|
+
AND rows.materialization_id = requested_materializations.materialization_id
|
|
663
|
+
AND rows.entity_kind = requested_entities.entity_kind
|
|
664
|
+
AND rows.entity_key = requested_entities.entity_key`
|
|
626
665
|
)
|
|
627
666
|
.all(
|
|
628
|
-
|
|
667
|
+
requestedEntities,
|
|
629
668
|
requestedMaterializations,
|
|
630
669
|
this.projectId,
|
|
631
670
|
sourceId
|
package/src/sync-run-storage.ts
CHANGED
|
@@ -115,9 +115,9 @@ export class SqliteSyncRunStorage implements SyncRunStorage {
|
|
|
115
115
|
`[SixbSqlite] Sync run '${input.id}' output dataset '${input.output.datasetId}' does not match '${existing.dataset_id}'.`
|
|
116
116
|
)
|
|
117
117
|
}
|
|
118
|
-
if (!input.output &&
|
|
118
|
+
if (!input.output && input.rowsRead !== 0 && existing.mode !== "merge") {
|
|
119
119
|
throw new SyncRunError(
|
|
120
|
-
`[SixbSqlite] Sync run '${input.id}' may omit its output only for an
|
|
120
|
+
`[SixbSqlite] Sync run '${input.id}' may omit its output with rows read only for an initial merge no-op.`
|
|
121
121
|
)
|
|
122
122
|
}
|
|
123
123
|
}
|
|
@@ -290,14 +290,17 @@ export class SqliteWorkflowRunStorage implements WorkflowRunStorage {
|
|
|
290
290
|
SET
|
|
291
291
|
status = ?,
|
|
292
292
|
finished_at = ?,
|
|
293
|
-
|
|
294
|
-
|
|
293
|
+
output = ?,
|
|
294
|
+
error = ?,
|
|
295
|
+
execution_token = NULL,
|
|
296
|
+
execution_queue_lease_expires_at = NULL
|
|
295
297
|
WHERE project_id = ? AND id = ?
|
|
296
298
|
`
|
|
297
299
|
)
|
|
298
300
|
.run(
|
|
299
301
|
input.status,
|
|
300
302
|
(input.finishedAt ?? new Date()).toISOString(),
|
|
303
|
+
input.status === "succeeded" ? serializeRecord(input.output) : null,
|
|
301
304
|
input.status === "succeeded" ? null : (input.error ?? null),
|
|
302
305
|
input.projectId,
|
|
303
306
|
input.id
|
|
@@ -974,6 +977,7 @@ function rowToWorkflowRunRecord(row: WorkflowRunDatabaseRow): WorkflowRunRecord
|
|
|
974
977
|
workflowId: row.workflow_id,
|
|
975
978
|
status: row.status,
|
|
976
979
|
input: parseRecord(row.input),
|
|
980
|
+
output: row.output ? parseRecord(row.output) : undefined,
|
|
977
981
|
queuedAt: row.queued_at ? new Date(row.queued_at) : undefined,
|
|
978
982
|
startedAt: new Date(row.started_at),
|
|
979
983
|
finishedAt: row.finished_at ? new Date(row.finished_at) : undefined,
|
|
@@ -1039,6 +1043,7 @@ interface WorkflowRunDatabaseRow {
|
|
|
1039
1043
|
workflow_id: string
|
|
1040
1044
|
status: WorkflowRunRecord["status"]
|
|
1041
1045
|
input: string
|
|
1046
|
+
output: string | null
|
|
1042
1047
|
queued_at: string | null
|
|
1043
1048
|
started_at: string
|
|
1044
1049
|
finished_at: string | null
|