@lix-js/sdk 0.6.0-preview.4 → 0.6.0-preview.5
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 +1 -1
- package/SKILL.md +65 -64
- package/dist/engine-wasm/index.js +4 -4
- package/dist/engine-wasm/wasm/lix_engine.d.ts +5 -5
- package/dist/engine-wasm/wasm/lix_engine.js +130 -118
- package/dist/engine-wasm/wasm/lix_engine.wasm +0 -0
- package/dist/engine-wasm/wasm/lix_engine.wasm.d.ts +9 -8
- package/dist/generated/builtin-schemas.d.ts +69 -69
- package/dist/generated/builtin-schemas.js +94 -94
- package/dist/open-lix.d.ts +33 -26
- package/dist/open-lix.js +10 -10
- package/dist/sqlite/index.js +86 -30
- package/dist-engine-src/README.md +3 -3
- package/dist-engine-src/src/backend/capabilities.rs +67 -0
- package/dist-engine-src/src/backend/conformance/baseline.rs +1127 -0
- package/dist-engine-src/src/backend/conformance/factory.rs +93 -0
- package/dist-engine-src/src/backend/conformance/failure_tests.rs +608 -0
- package/dist-engine-src/src/backend/conformance/fixtures.rs +26 -0
- package/dist-engine-src/src/backend/conformance/mod.rs +75 -0
- package/dist-engine-src/src/backend/conformance/model.rs +28 -0
- package/dist-engine-src/src/backend/conformance/model_based.rs +257 -0
- package/dist-engine-src/src/backend/conformance/persistence.rs +204 -0
- package/dist-engine-src/src/backend/conformance/projection.rs +21 -0
- package/dist-engine-src/src/backend/conformance/pushdown.rs +24 -0
- package/dist-engine-src/src/backend/conformance/runner.rs +90 -0
- package/dist-engine-src/src/backend/conformance/scan.rs +24 -0
- package/dist-engine-src/src/backend/conformance/write.rs +16 -0
- package/dist-engine-src/src/backend/error.rs +94 -0
- package/dist-engine-src/src/backend/in_memory.rs +670 -0
- package/dist-engine-src/src/backend/mod.rs +36 -9
- package/dist-engine-src/src/backend/predicate.rs +80 -0
- package/dist-engine-src/src/backend/traits.rs +260 -0
- package/dist-engine-src/src/backend/types.rs +224 -81
- package/dist-engine-src/src/binary_cas/context.rs +8 -8
- package/dist-engine-src/src/binary_cas/kv.rs +234 -259
- package/dist-engine-src/src/{version → branch}/context.rs +12 -12
- package/dist-engine-src/src/branch/lifecycle.rs +221 -0
- package/dist-engine-src/src/branch/mod.rs +13 -0
- package/dist-engine-src/src/branch/refs.rs +321 -0
- package/dist-engine-src/src/branch/stage_rows.rs +67 -0
- package/dist-engine-src/src/branch/types.rs +21 -0
- package/dist-engine-src/src/catalog/context.rs +18 -18
- package/dist-engine-src/src/catalog/snapshot.rs +8 -8
- package/dist-engine-src/src/changelog/bench_support.rs +785 -0
- package/dist-engine-src/src/changelog/change.rs +1 -0
- package/dist-engine-src/src/changelog/codec.rs +497 -0
- package/dist-engine-src/src/changelog/commit.rs +1 -0
- package/dist-engine-src/src/changelog/context.rs +1614 -0
- package/dist-engine-src/src/changelog/mod.rs +29 -0
- package/dist-engine-src/src/changelog/store.rs +163 -0
- package/dist-engine-src/src/changelog/test_support.rs +54 -0
- package/dist-engine-src/src/changelog/types.rs +213 -0
- package/dist-engine-src/src/commit_graph/context.rs +317 -274
- package/dist-engine-src/src/commit_graph/mod.rs +2 -4
- package/dist-engine-src/src/commit_graph/types.rs +22 -42
- package/dist-engine-src/src/commit_graph/walker.rs +133 -103
- package/dist-engine-src/src/common/error.rs +52 -18
- package/dist-engine-src/src/common/identity.rs +2 -2
- package/dist-engine-src/src/common/mod.rs +1 -1
- package/dist-engine-src/src/domain.rs +42 -46
- package/dist-engine-src/src/engine.rs +74 -96
- package/dist-engine-src/src/{entity_identity.rs → entity_pk.rs} +89 -92
- package/dist-engine-src/src/functions/context.rs +56 -52
- package/dist-engine-src/src/functions/state.rs +51 -52
- package/dist-engine-src/src/init.rs +288 -154
- package/dist-engine-src/src/json_store/context.rs +15 -266
- package/dist-engine-src/src/json_store/mod.rs +26 -0
- package/dist-engine-src/src/json_store/store.rs +103 -718
- package/dist-engine-src/src/json_store/types.rs +4 -9
- package/dist-engine-src/src/lib.rs +49 -19
- package/dist-engine-src/src/live_state/context.rs +654 -790
- package/dist-engine-src/src/live_state/mod.rs +9 -3
- package/dist-engine-src/src/live_state/overlay.rs +4 -4
- package/dist-engine-src/src/live_state/types.rs +30 -21
- package/dist-engine-src/src/live_state/visibility.rs +514 -71
- package/dist-engine-src/src/plugin/install.rs +48 -48
- package/dist-engine-src/src/plugin/manifest.rs +7 -7
- package/dist-engine-src/src/plugin/materializer.rs +0 -275
- package/dist-engine-src/src/plugin/plugin_manifest.json +4 -3
- package/dist-engine-src/src/schema/builtin/lix_binary_blob_ref.json +2 -2
- package/dist-engine-src/src/schema/builtin/lix_branch_descriptor.json +34 -0
- package/dist-engine-src/src/schema/builtin/lix_branch_ref.json +48 -0
- package/dist-engine-src/src/schema/builtin/lix_change.json +3 -3
- package/dist-engine-src/src/schema/builtin/lix_commit.json +1 -1
- package/dist-engine-src/src/schema/builtin/lix_label_assignment.json +6 -6
- package/dist-engine-src/src/schema/builtin/mod.rs +18 -20
- package/dist-engine-src/src/schema/compatibility.rs +11 -11
- package/dist-engine-src/src/schema/definition.json +2 -2
- package/dist-engine-src/src/schema/definition.rs +5 -5
- package/dist-engine-src/src/schema/key.rs +3 -3
- package/dist-engine-src/src/schema/mod.rs +1 -1
- package/dist-engine-src/src/schema/tests.rs +18 -18
- package/dist-engine-src/src/session/context.rs +803 -148
- package/dist-engine-src/src/session/create_branch.rs +94 -0
- package/dist-engine-src/src/session/execute.rs +223 -83
- package/dist-engine-src/src/session/merge/analysis.rs +9 -3
- package/dist-engine-src/src/session/merge/{version.rs → branch.rs} +119 -129
- package/dist-engine-src/src/session/merge/conflicts.rs +2 -2
- package/dist-engine-src/src/session/merge/mod.rs +5 -6
- package/dist-engine-src/src/session/merge/stats.rs +7 -11
- package/dist-engine-src/src/session/mod.rs +15 -12
- package/dist-engine-src/src/session/switch_branch.rs +113 -0
- package/dist-engine-src/src/session/transaction.rs +495 -14
- package/dist-engine-src/src/sql2/{classify.rs → bind/classify.rs} +3 -75
- package/dist-engine-src/src/sql2/bind/error.rs +5 -0
- package/dist-engine-src/src/sql2/bind/expr.rs +29 -0
- package/dist-engine-src/src/sql2/bind/mod.rs +12 -0
- package/dist-engine-src/src/sql2/{udfs/public_call.rs → bind/public_udf.rs} +71 -3
- package/dist-engine-src/src/sql2/bind/read.rs +65 -0
- package/dist-engine-src/src/sql2/bind/statement.rs +2236 -0
- package/dist-engine-src/src/sql2/bind/table.rs +273 -0
- package/dist-engine-src/src/sql2/bind/write.rs +86 -0
- package/dist-engine-src/src/sql2/branch_scope.rs +436 -0
- package/dist-engine-src/src/sql2/catalog/capability.rs +20 -0
- package/dist-engine-src/src/sql2/catalog/entity_surface.rs +296 -0
- package/dist-engine-src/src/sql2/catalog/mod.rs +15 -0
- package/dist-engine-src/src/sql2/catalog/registry.rs +556 -0
- package/dist-engine-src/src/sql2/catalog/schema.rs +88 -0
- package/dist-engine-src/src/sql2/catalog/surface.rs +41 -0
- package/dist-engine-src/src/sql2/change_materialization.rs +122 -0
- package/dist-engine-src/src/sql2/context.rs +36 -30
- package/dist-engine-src/src/sql2/error.rs +1 -1
- package/dist-engine-src/src/sql2/exec/bound_public_write.rs +1593 -0
- package/dist-engine-src/src/sql2/exec/datafusion.rs +5266 -0
- package/dist-engine-src/src/sql2/exec/fast_write.rs +82 -0
- package/dist-engine-src/src/sql2/exec/mod.rs +24 -0
- package/dist-engine-src/src/sql2/exec/write.rs +661 -0
- package/dist-engine-src/src/sql2/filesystem_planner.rs +72 -77
- package/dist-engine-src/src/sql2/filesystem_visibility.rs +21 -21
- package/dist-engine-src/src/sql2/history_projection.rs +8 -8
- package/dist-engine-src/src/sql2/history_route.rs +35 -31
- package/dist-engine-src/src/sql2/mod.rs +28 -23
- package/dist-engine-src/src/sql2/optimize/datafusion.rs +1 -0
- package/dist-engine-src/src/sql2/optimize/mod.rs +2 -0
- package/dist-engine-src/src/sql2/optimize/simple_write.rs +116 -0
- package/dist-engine-src/src/sql2/parse/mod.rs +69 -0
- package/dist-engine-src/src/sql2/parse/normalize.rs +1 -0
- package/dist-engine-src/src/sql2/plan/branch_scope.rs +24 -0
- package/dist-engine-src/src/sql2/plan/mod.rs +5 -0
- package/dist-engine-src/src/sql2/plan/predicate.rs +22 -0
- package/dist-engine-src/src/sql2/plan/write.rs +147 -0
- package/dist-engine-src/src/sql2/predicate_typecheck.rs +258 -0
- package/dist-engine-src/src/sql2/{version_provider.rs → providers/branch.rs} +218 -214
- package/dist-engine-src/src/sql2/{change_provider.rs → providers/change.rs} +156 -42
- package/dist-engine-src/src/sql2/{directory_provider.rs → providers/directory.rs} +291 -322
- package/dist-engine-src/src/sql2/{directory_history_provider.rs → providers/directory_history.rs} +56 -42
- package/dist-engine-src/src/sql2/providers/entity.rs +1484 -0
- package/dist-engine-src/src/sql2/{entity_history_provider.rs → providers/entity_history.rs} +43 -31
- package/dist-engine-src/src/sql2/{file_provider.rs → providers/file.rs} +323 -316
- package/dist-engine-src/src/sql2/{file_history_provider.rs → providers/file_history.rs} +60 -46
- package/dist-engine-src/src/sql2/{history_provider.rs → providers/history.rs} +46 -32
- package/dist-engine-src/src/sql2/{lix_state_provider.rs → providers/lix_state.rs} +359 -329
- package/dist-engine-src/src/sql2/providers/mod.rs +508 -0
- package/dist-engine-src/src/sql2/read_only.rs +2 -2
- package/dist-engine-src/src/sql2/session.rs +47 -96
- package/dist-engine-src/src/sql2/storage/constraints.rs +1 -0
- package/dist-engine-src/src/sql2/storage/mod.rs +1 -0
- package/dist-engine-src/src/sql2/test_support/differential.rs +712 -0
- package/dist-engine-src/src/sql2/test_support/generators.rs +354 -0
- package/dist-engine-src/src/sql2/test_support/mod.rs +2 -0
- package/dist-engine-src/src/sql2/udfs/{lix_active_version_commit_id.rs → lix_active_branch_commit_id.rs} +7 -7
- package/dist-engine-src/src/sql2/udfs/mod.rs +3 -6
- package/dist-engine-src/src/sql2/write_normalization.rs +45 -22
- package/dist-engine-src/src/storage/conformance.rs +399 -0
- package/dist-engine-src/src/storage/context.rs +552 -288
- package/dist-engine-src/src/storage/mod.rs +48 -10
- package/dist-engine-src/src/storage/point.rs +440 -0
- package/dist-engine-src/src/storage/read_scope.rs +43 -64
- package/dist-engine-src/src/storage/reader.rs +867 -0
- package/dist-engine-src/src/storage/scan.rs +784 -0
- package/dist-engine-src/src/storage/spaces.rs +236 -0
- package/dist-engine-src/src/storage/stats.rs +80 -0
- package/dist-engine-src/src/storage/write_set.rs +962 -0
- package/dist-engine-src/src/storage_bench.rs +136 -4828
- package/dist-engine-src/src/test_support.rs +360 -138
- package/dist-engine-src/src/tracked_state/bench_support.rs +394 -0
- package/dist-engine-src/src/tracked_state/codec.rs +155 -1057
- package/dist-engine-src/src/tracked_state/commit_root_rebuild.rs +358 -0
- package/dist-engine-src/src/tracked_state/context.rs +1927 -993
- package/dist-engine-src/src/tracked_state/diff.rs +1715 -261
- package/dist-engine-src/src/tracked_state/merge.rs +74 -88
- package/dist-engine-src/src/tracked_state/mod.rs +19 -16
- package/dist-engine-src/src/tracked_state/{materialization.rs → row_materialization.rs} +50 -178
- package/dist-engine-src/src/tracked_state/storage.rs +243 -191
- package/dist-engine-src/src/tracked_state/tree.rs +247 -371
- package/dist-engine-src/src/tracked_state/types.rs +49 -42
- package/dist-engine-src/src/transaction/bench_support.rs +407 -0
- package/dist-engine-src/src/transaction/commit.rs +821 -713
- package/dist-engine-src/src/transaction/context.rs +705 -600
- package/dist-engine-src/src/transaction/mod.rs +13 -2
- package/dist-engine-src/src/transaction/normalization.rs +63 -76
- package/dist-engine-src/src/transaction/prep.rs +13 -13
- package/dist-engine-src/src/transaction/schema_resolver.rs +19 -5
- package/dist-engine-src/src/transaction/staging.rs +228 -434
- package/dist-engine-src/src/transaction/types.rs +41 -98
- package/dist-engine-src/src/transaction/validation.rs +382 -446
- package/dist-engine-src/src/untracked_state/codec.rs +337 -29
- package/dist-engine-src/src/untracked_state/context.rs +7 -7
- package/dist-engine-src/src/untracked_state/materialization.rs +2 -2
- package/dist-engine-src/src/untracked_state/mod.rs +1 -1
- package/dist-engine-src/src/untracked_state/storage.rs +659 -157
- package/dist-engine-src/src/untracked_state/types.rs +21 -21
- package/package.json +71 -68
- package/dist-engine-src/src/backend/kv.rs +0 -358
- package/dist-engine-src/src/backend/testing.rs +0 -658
- package/dist-engine-src/src/commit_store/codec.rs +0 -887
- package/dist-engine-src/src/commit_store/context.rs +0 -944
- package/dist-engine-src/src/commit_store/materialization.rs +0 -84
- package/dist-engine-src/src/commit_store/mod.rs +0 -16
- package/dist-engine-src/src/commit_store/storage.rs +0 -600
- package/dist-engine-src/src/commit_store/types.rs +0 -215
- package/dist-engine-src/src/schema/builtin/lix_version_descriptor.json +0 -34
- package/dist-engine-src/src/schema/builtin/lix_version_ref.json +0 -48
- package/dist-engine-src/src/session/create_version.rs +0 -88
- package/dist-engine-src/src/session/merge/apply.rs +0 -23
- package/dist-engine-src/src/session/optimization9_sql2_bench.rs +0 -100
- package/dist-engine-src/src/session/switch_version.rs +0 -110
- package/dist-engine-src/src/sql2/entity_provider.rs +0 -3211
- package/dist-engine-src/src/sql2/execute.rs +0 -3533
- package/dist-engine-src/src/sql2/public_bind/assignment.rs +0 -46
- package/dist-engine-src/src/sql2/public_bind/capability.rs +0 -41
- package/dist-engine-src/src/sql2/public_bind/dml.rs +0 -172
- package/dist-engine-src/src/sql2/public_bind/mod.rs +0 -26
- package/dist-engine-src/src/sql2/public_bind/table.rs +0 -168
- package/dist-engine-src/src/sql2/version_scope.rs +0 -394
- package/dist-engine-src/src/storage/types.rs +0 -501
- package/dist-engine-src/src/tracked_state/by_file_index.rs +0 -98
- package/dist-engine-src/src/tracked_state/materializer.rs +0 -488
- package/dist-engine-src/src/transaction/live_state_overlay.rs +0 -35
- package/dist-engine-src/src/version/lifecycle.rs +0 -221
- package/dist-engine-src/src/version/mod.rs +0 -13
- package/dist-engine-src/src/version/refs.rs +0 -330
- package/dist-engine-src/src/version/stage_rows.rs +0 -67
- package/dist-engine-src/src/version/types.rs +0 -21
|
@@ -22,33 +22,36 @@ use tokio::sync::Mutex;
|
|
|
22
22
|
|
|
23
23
|
use crate::commit_graph::CommitGraphReader;
|
|
24
24
|
use crate::serialize_row_metadata;
|
|
25
|
+
use crate::sql2::change_materialization::MaterializedChange;
|
|
25
26
|
use crate::LixError;
|
|
26
27
|
|
|
27
|
-
use
|
|
28
|
-
|
|
29
|
-
parse_snapshot, string_array, EntityColumnType, EntityProviderVariant, EntitySurfaceSpec,
|
|
28
|
+
use crate::sql2::catalog::{
|
|
29
|
+
entity_surface_schema, EntityColumnType, EntitySurfaceShape, EntitySurfaceSpec,
|
|
30
30
|
};
|
|
31
|
-
use
|
|
32
|
-
use
|
|
31
|
+
use crate::sql2::history_projection::{tombstone_identity_column_value, HistoryIdentityProjection};
|
|
32
|
+
use crate::sql2::history_route::{
|
|
33
33
|
load_history_entries, parse_history_filter, HistoryColumnStyle, HistoryRoute,
|
|
34
34
|
HistoryViewDescriptor, HISTORY_COL_START_COMMIT_ID,
|
|
35
35
|
};
|
|
36
|
-
use
|
|
37
|
-
|
|
36
|
+
use crate::sql2::providers::entity::{
|
|
37
|
+
entity_f64_value, entity_i64_value, entity_json_text_value, parse_snapshot, string_array,
|
|
38
|
+
};
|
|
39
|
+
use crate::sql2::SqlHistoryQuerySource;
|
|
40
|
+
use crate::storage::StorageRead;
|
|
38
41
|
|
|
39
42
|
/// Schema-specific history surface backed directly by the commit graph.
|
|
40
43
|
///
|
|
41
44
|
/// The provider does not query `lix_state_history` through SQL. It uses the same
|
|
42
45
|
/// commit graph primitive as the generic history surface, then shapes canonical
|
|
43
46
|
/// changes into the typed entity columns for one registered schema.
|
|
44
|
-
pub(crate) struct EntityHistoryProvider {
|
|
47
|
+
pub(crate) struct EntityHistoryProvider<S> {
|
|
45
48
|
spec: Arc<EntitySurfaceSpec>,
|
|
46
49
|
schema: SchemaRef,
|
|
47
50
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
48
|
-
query_source:
|
|
51
|
+
query_source: SqlHistoryQuerySource<S>,
|
|
49
52
|
}
|
|
50
53
|
|
|
51
|
-
impl std::fmt::Debug for EntityHistoryProvider {
|
|
54
|
+
impl<S> std::fmt::Debug for EntityHistoryProvider<S> {
|
|
52
55
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
53
56
|
f.debug_struct("EntityHistoryProvider")
|
|
54
57
|
.field("schema_key", &self.spec.schema_key)
|
|
@@ -56,14 +59,14 @@ impl std::fmt::Debug for EntityHistoryProvider {
|
|
|
56
59
|
}
|
|
57
60
|
}
|
|
58
61
|
|
|
59
|
-
impl EntityHistoryProvider {
|
|
62
|
+
impl<S> EntityHistoryProvider<S> {
|
|
60
63
|
pub(crate) fn new(
|
|
61
64
|
spec: Arc<EntitySurfaceSpec>,
|
|
62
65
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
63
|
-
query_source:
|
|
66
|
+
query_source: SqlHistoryQuerySource<S>,
|
|
64
67
|
) -> Self {
|
|
65
68
|
Self {
|
|
66
|
-
schema: entity_surface_schema(&spec,
|
|
69
|
+
schema: entity_surface_schema(&spec, EntitySurfaceShape::History),
|
|
67
70
|
spec,
|
|
68
71
|
commit_graph,
|
|
69
72
|
query_source,
|
|
@@ -72,7 +75,10 @@ impl EntityHistoryProvider {
|
|
|
72
75
|
}
|
|
73
76
|
|
|
74
77
|
#[async_trait]
|
|
75
|
-
impl TableProvider for EntityHistoryProvider
|
|
78
|
+
impl<S> TableProvider for EntityHistoryProvider<S>
|
|
79
|
+
where
|
|
80
|
+
S: StorageRead + Clone + Send + Sync + 'static,
|
|
81
|
+
{
|
|
76
82
|
fn as_any(&self) -> &dyn Any {
|
|
77
83
|
self
|
|
78
84
|
}
|
|
@@ -121,17 +127,17 @@ impl TableProvider for EntityHistoryProvider {
|
|
|
121
127
|
}
|
|
122
128
|
}
|
|
123
129
|
|
|
124
|
-
struct EntityHistoryScanExec {
|
|
130
|
+
struct EntityHistoryScanExec<S> {
|
|
125
131
|
spec: Arc<EntitySurfaceSpec>,
|
|
126
132
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
127
|
-
query_source:
|
|
133
|
+
query_source: SqlHistoryQuerySource<S>,
|
|
128
134
|
schema: SchemaRef,
|
|
129
135
|
route: HistoryRoute,
|
|
130
136
|
limit: Option<usize>,
|
|
131
137
|
properties: Arc<PlanProperties>,
|
|
132
138
|
}
|
|
133
139
|
|
|
134
|
-
impl std::fmt::Debug for EntityHistoryScanExec {
|
|
140
|
+
impl<S> std::fmt::Debug for EntityHistoryScanExec<S> {
|
|
135
141
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
136
142
|
f.debug_struct("EntityHistoryScanExec")
|
|
137
143
|
.field("schema_key", &self.spec.schema_key)
|
|
@@ -141,11 +147,11 @@ impl std::fmt::Debug for EntityHistoryScanExec {
|
|
|
141
147
|
}
|
|
142
148
|
}
|
|
143
149
|
|
|
144
|
-
impl EntityHistoryScanExec {
|
|
150
|
+
impl<S> EntityHistoryScanExec<S> {
|
|
145
151
|
fn new(
|
|
146
152
|
spec: Arc<EntitySurfaceSpec>,
|
|
147
153
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
148
|
-
query_source:
|
|
154
|
+
query_source: SqlHistoryQuerySource<S>,
|
|
149
155
|
schema: SchemaRef,
|
|
150
156
|
route: HistoryRoute,
|
|
151
157
|
limit: Option<usize>,
|
|
@@ -168,7 +174,7 @@ impl EntityHistoryScanExec {
|
|
|
168
174
|
}
|
|
169
175
|
}
|
|
170
176
|
|
|
171
|
-
impl DisplayAs for EntityHistoryScanExec {
|
|
177
|
+
impl<S> DisplayAs for EntityHistoryScanExec<S> {
|
|
172
178
|
fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
173
179
|
match t {
|
|
174
180
|
DisplayFormatType::Default | DisplayFormatType::Verbose => write!(
|
|
@@ -181,7 +187,10 @@ impl DisplayAs for EntityHistoryScanExec {
|
|
|
181
187
|
}
|
|
182
188
|
}
|
|
183
189
|
|
|
184
|
-
impl ExecutionPlan for EntityHistoryScanExec
|
|
190
|
+
impl<S> ExecutionPlan for EntityHistoryScanExec<S>
|
|
191
|
+
where
|
|
192
|
+
S: StorageRead + Clone + Send + Sync + 'static,
|
|
193
|
+
{
|
|
185
194
|
fn name(&self) -> &str {
|
|
186
195
|
"EntityHistoryScanExec"
|
|
187
196
|
}
|
|
@@ -251,13 +260,16 @@ struct EntityHistoryRow {
|
|
|
251
260
|
depth: u32,
|
|
252
261
|
}
|
|
253
262
|
|
|
254
|
-
async fn load_entity_history_rows(
|
|
263
|
+
async fn load_entity_history_rows<S>(
|
|
255
264
|
spec: &EntitySurfaceSpec,
|
|
256
265
|
commit_graph: Arc<Mutex<Box<dyn CommitGraphReader>>>,
|
|
257
|
-
query_source:
|
|
266
|
+
query_source: SqlHistoryQuerySource<S>,
|
|
258
267
|
route: &HistoryRoute,
|
|
259
268
|
limit: Option<usize>,
|
|
260
|
-
) -> Result<Vec<EntityHistoryRow>, LixError>
|
|
269
|
+
) -> Result<Vec<EntityHistoryRow>, LixError>
|
|
270
|
+
where
|
|
271
|
+
S: StorageRead + Clone + Send + Sync + 'static,
|
|
272
|
+
{
|
|
261
273
|
let history_view_name = format!("{}_history", spec.schema_key);
|
|
262
274
|
let entries = load_history_entries(
|
|
263
275
|
HistoryViewDescriptor {
|
|
@@ -364,14 +376,14 @@ fn entity_history_column_value(
|
|
|
364
376
|
return Ok(snapshot.get(column_name).cloned());
|
|
365
377
|
}
|
|
366
378
|
|
|
367
|
-
let
|
|
379
|
+
let entity_pk = row.change.entity_pk.as_json_array_text().map_err(|error| {
|
|
368
380
|
DataFusionError::Execution(format!(
|
|
369
|
-
"sql2 entity history provider failed to project entity
|
|
381
|
+
"sql2 entity history provider failed to project entity pk: {error}"
|
|
370
382
|
))
|
|
371
383
|
})?;
|
|
372
384
|
tombstone_identity_column_value(
|
|
373
385
|
column_name,
|
|
374
|
-
&
|
|
386
|
+
&entity_pk,
|
|
375
387
|
HistoryIdentityProjection::PrimaryKeyPaths(&spec.primary_key_paths),
|
|
376
388
|
)
|
|
377
389
|
.map_err(|error| DataFusionError::Execution(error.to_string()))
|
|
@@ -382,14 +394,14 @@ fn entity_history_system_column_array(
|
|
|
382
394
|
rows: &[EntityHistoryRow],
|
|
383
395
|
) -> Result<ArrayRef> {
|
|
384
396
|
Ok(match column_name {
|
|
385
|
-
"
|
|
397
|
+
"entity_pk" => Arc::new(StringArray::from(
|
|
386
398
|
rows.iter()
|
|
387
399
|
.map(|row| {
|
|
388
400
|
Some(
|
|
389
401
|
row.change
|
|
390
|
-
.
|
|
402
|
+
.entity_pk
|
|
391
403
|
.as_json_array_text()
|
|
392
|
-
.expect("canonical change entity
|
|
404
|
+
.expect("canonical change entity primary key should project"),
|
|
393
405
|
)
|
|
394
406
|
})
|
|
395
407
|
.collect::<Vec<_>>(),
|
|
@@ -436,5 +448,5 @@ fn projected_schema(schema: &SchemaRef, projection: Option<&Vec<usize>>) -> Resu
|
|
|
436
448
|
}
|
|
437
449
|
|
|
438
450
|
fn lix_error_to_datafusion_error(error: LixError) -> DataFusionError {
|
|
439
|
-
|
|
451
|
+
crate::sql2::error::lix_error_to_datafusion_error(error)
|
|
440
452
|
}
|