@lix-js/sdk 0.6.0-preview.2 → 0.6.0-preview.4
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/SKILL.md +46 -8
- package/dist/engine-wasm/wasm/lix_engine.d.ts +25 -1
- package/dist/engine-wasm/wasm/lix_engine.js +60 -2
- package/dist/engine-wasm/wasm/lix_engine.wasm +0 -0
- package/dist/engine-wasm/wasm/lix_engine.wasm.d.ts +5 -0
- package/dist/generated/builtin-schemas.d.ts +87 -162
- package/dist/generated/builtin-schemas.js +139 -236
- package/dist/open-lix.d.ts +10 -3
- package/dist/open-lix.js +39 -0
- package/dist-engine-src/src/binary_cas/types.rs +0 -6
- package/dist-engine-src/src/catalog/context.rs +412 -0
- package/dist-engine-src/src/catalog/mod.rs +10 -0
- package/dist-engine-src/src/catalog/schema.rs +4 -0
- package/dist-engine-src/src/catalog/snapshot.rs +1114 -0
- package/dist-engine-src/src/cel/mod.rs +1 -1
- package/dist-engine-src/src/cel/provider.rs +1 -1
- package/dist-engine-src/src/commit_graph/context.rs +328 -1015
- package/dist-engine-src/src/commit_graph/mod.rs +2 -3
- package/dist-engine-src/src/commit_graph/types.rs +7 -43
- package/dist-engine-src/src/commit_graph/walker.rs +57 -81
- package/dist-engine-src/src/commit_store/codec.rs +887 -0
- package/dist-engine-src/src/commit_store/context.rs +944 -0
- package/dist-engine-src/src/commit_store/materialization.rs +84 -0
- package/dist-engine-src/src/commit_store/mod.rs +16 -0
- package/dist-engine-src/src/commit_store/storage.rs +600 -0
- package/dist-engine-src/src/commit_store/types.rs +215 -0
- package/dist-engine-src/src/common/identity.rs +15 -5
- package/dist-engine-src/src/common/json_pointer.rs +67 -0
- package/dist-engine-src/src/common/metadata.rs +17 -12
- package/dist-engine-src/src/common/mod.rs +5 -5
- package/dist-engine-src/src/domain.rs +324 -0
- package/dist-engine-src/src/engine.rs +29 -43
- package/dist-engine-src/src/entity_identity.rs +238 -118
- package/dist-engine-src/src/functions/context.rs +17 -52
- package/dist-engine-src/src/functions/deterministic.rs +1 -1
- package/dist-engine-src/src/functions/mod.rs +1 -1
- package/dist-engine-src/src/functions/provider.rs +4 -4
- package/dist-engine-src/src/functions/state.rs +39 -66
- package/dist-engine-src/src/functions/types.rs +1 -1
- package/dist-engine-src/src/init.rs +204 -151
- package/dist-engine-src/src/json_store/context.rs +354 -60
- package/dist-engine-src/src/json_store/encoded.rs +6 -6
- package/dist-engine-src/src/json_store/mod.rs +4 -1
- package/dist-engine-src/src/json_store/store.rs +884 -11
- package/dist-engine-src/src/json_store/types.rs +166 -1
- package/dist-engine-src/src/lib.rs +11 -10
- package/dist-engine-src/src/live_state/context.rs +608 -830
- package/dist-engine-src/src/live_state/mod.rs +3 -3
- package/dist-engine-src/src/live_state/overlay.rs +7 -7
- package/dist-engine-src/src/live_state/reader.rs +5 -5
- package/dist-engine-src/src/live_state/types.rs +19 -36
- package/dist-engine-src/src/live_state/visibility.rs +19 -14
- package/dist-engine-src/src/plugin/archive.rs +3 -6
- package/dist-engine-src/src/plugin/install.rs +0 -18
- package/dist-engine-src/src/plugin/plugin_manifest.json +0 -1
- package/dist-engine-src/src/schema/annotations/defaults.rs +2 -7
- package/dist-engine-src/src/schema/builtin/lix_account.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_active_account.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_binary_blob_ref.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_change.json +11 -10
- package/dist-engine-src/src/schema/builtin/lix_change_author.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_commit.json +8 -46
- package/dist-engine-src/src/schema/builtin/lix_commit_edge.json +29 -22
- package/dist-engine-src/src/schema/builtin/lix_directory_descriptor.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_file_descriptor.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_key_value.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_label.json +10 -3
- package/dist-engine-src/src/schema/builtin/lix_label_assignment.json +74 -0
- package/dist-engine-src/src/schema/builtin/lix_registered_schema.json +2 -8
- package/dist-engine-src/src/schema/builtin/lix_version_descriptor.json +0 -1
- package/dist-engine-src/src/schema/builtin/lix_version_ref.json +0 -1
- package/dist-engine-src/src/schema/builtin/mod.rs +10 -59
- package/dist-engine-src/src/schema/compatibility.rs +787 -0
- package/dist-engine-src/src/schema/definition.json +47 -17
- package/dist-engine-src/src/schema/definition.rs +202 -96
- package/dist-engine-src/src/schema/key.rs +9 -77
- package/dist-engine-src/src/schema/mod.rs +4 -4
- package/dist-engine-src/src/schema/tests.rs +133 -92
- package/dist-engine-src/src/session/context.rs +86 -48
- package/dist-engine-src/src/session/create_version.rs +22 -14
- package/dist-engine-src/src/session/execute.rs +117 -23
- package/dist-engine-src/src/session/merge/apply.rs +4 -4
- package/dist-engine-src/src/session/merge/conflicts.rs +3 -2
- package/dist-engine-src/src/session/merge/stats.rs +1 -1
- package/dist-engine-src/src/session/merge/version.rs +35 -45
- package/dist-engine-src/src/session/mod.rs +9 -7
- package/dist-engine-src/src/session/optimization9_sql2_bench.rs +100 -0
- package/dist-engine-src/src/session/switch_version.rs +17 -28
- package/dist-engine-src/src/session/transaction.rs +76 -0
- package/dist-engine-src/src/sql2/change_provider.rs +14 -20
- package/dist-engine-src/src/sql2/classify.rs +75 -48
- package/dist-engine-src/src/sql2/context.rs +22 -18
- package/dist-engine-src/src/sql2/directory_history_provider.rs +28 -20
- package/dist-engine-src/src/sql2/directory_provider.rs +131 -83
- package/dist-engine-src/src/sql2/entity_history_provider.rs +10 -14
- package/dist-engine-src/src/sql2/entity_provider.rs +680 -169
- package/dist-engine-src/src/sql2/error.rs +24 -5
- package/dist-engine-src/src/sql2/execute.rs +426 -272
- package/dist-engine-src/src/sql2/file_history_provider.rs +29 -21
- package/dist-engine-src/src/sql2/file_provider.rs +533 -108
- package/dist-engine-src/src/sql2/filesystem_planner.rs +58 -94
- package/dist-engine-src/src/sql2/filesystem_visibility.rs +37 -23
- package/dist-engine-src/src/sql2/history_projection.rs +3 -27
- package/dist-engine-src/src/sql2/history_provider.rs +11 -17
- package/dist-engine-src/src/sql2/history_route.rs +22 -8
- package/dist-engine-src/src/sql2/lix_state_provider.rs +178 -96
- package/dist-engine-src/src/sql2/mod.rs +8 -4
- package/dist-engine-src/src/sql2/predicate_typecheck.rs +246 -0
- package/dist-engine-src/src/sql2/public_bind/assignment.rs +46 -0
- package/dist-engine-src/src/sql2/public_bind/capability.rs +41 -0
- package/dist-engine-src/src/sql2/public_bind/dml.rs +172 -0
- package/dist-engine-src/src/sql2/public_bind/mod.rs +26 -0
- package/dist-engine-src/src/sql2/public_bind/table.rs +168 -0
- package/dist-engine-src/src/sql2/read_only.rs +10 -12
- package/dist-engine-src/src/sql2/session.rs +7 -10
- package/dist-engine-src/src/sql2/udfs/lix_timestamp.rs +76 -0
- package/dist-engine-src/src/sql2/udfs/mod.rs +8 -1
- package/dist-engine-src/src/sql2/udfs/public_call.rs +238 -0
- package/dist-engine-src/src/sql2/version_provider.rs +46 -31
- package/dist-engine-src/src/sql2/version_scope.rs +4 -4
- package/dist-engine-src/src/storage_bench.rs +1782 -325
- package/dist-engine-src/src/test_support.rs +183 -36
- package/dist-engine-src/src/tracked_state/by_file_index.rs +20 -24
- package/dist-engine-src/src/tracked_state/codec.rs +1519 -181
- package/dist-engine-src/src/tracked_state/context.rs +1155 -271
- package/dist-engine-src/src/tracked_state/diff.rs +249 -57
- package/dist-engine-src/src/tracked_state/materialization.rs +365 -103
- package/dist-engine-src/src/tracked_state/materializer.rs +488 -0
- package/dist-engine-src/src/tracked_state/merge.rs +37 -19
- package/dist-engine-src/src/tracked_state/mod.rs +8 -7
- package/dist-engine-src/src/tracked_state/storage.rs +138 -6
- package/dist-engine-src/src/tracked_state/tree.rs +695 -252
- package/dist-engine-src/src/tracked_state/types.rs +176 -6
- package/dist-engine-src/src/transaction/commit.rs +695 -435
- package/dist-engine-src/src/transaction/context.rs +551 -310
- package/dist-engine-src/src/transaction/live_state_overlay.rs +9 -8
- package/dist-engine-src/src/transaction/mod.rs +2 -0
- package/dist-engine-src/src/transaction/normalization.rs +311 -447
- package/dist-engine-src/src/transaction/prep.rs +37 -0
- package/dist-engine-src/src/transaction/schema_resolver.rs +93 -71
- package/dist-engine-src/src/transaction/staging.rs +701 -406
- package/dist-engine-src/src/transaction/types.rs +231 -122
- package/dist-engine-src/src/transaction/validation.rs +2717 -1698
- package/dist-engine-src/src/untracked_state/codec.rs +40 -96
- package/dist-engine-src/src/untracked_state/context.rs +21 -5
- package/dist-engine-src/src/untracked_state/materialization.rs +10 -104
- package/dist-engine-src/src/untracked_state/mod.rs +3 -5
- package/dist-engine-src/src/untracked_state/storage.rs +105 -57
- package/dist-engine-src/src/untracked_state/types.rs +63 -13
- package/dist-engine-src/src/version/context.rs +1 -13
- package/dist-engine-src/src/version/lifecycle.rs +221 -0
- package/dist-engine-src/src/version/mod.rs +3 -2
- package/dist-engine-src/src/version/refs.rs +12 -103
- package/dist-engine-src/src/version/stage_rows.rs +15 -19
- package/package.json +1 -1
- package/dist-engine-src/src/changelog/codec.rs +0 -321
- package/dist-engine-src/src/changelog/context.rs +0 -92
- package/dist-engine-src/src/changelog/materialization.rs +0 -121
- package/dist-engine-src/src/changelog/mod.rs +0 -13
- package/dist-engine-src/src/changelog/reader.rs +0 -20
- package/dist-engine-src/src/changelog/storage.rs +0 -220
- package/dist-engine-src/src/changelog/types.rs +0 -38
- package/dist-engine-src/src/schema/builtin/lix_change_set.json +0 -18
- package/dist-engine-src/src/schema/builtin/lix_change_set_element.json +0 -75
- package/dist-engine-src/src/schema/builtin/lix_entity_label.json +0 -63
- package/dist-engine-src/src/schema_registry.rs +0 -294
- package/dist-engine-src/src/sql2/commit_derived_provider.rs +0 -591
- package/dist-engine-src/src/tracked_state/rebuild.rs +0 -771
- package/dist-engine-src/src/tracked_state/tree_types.rs +0 -176
|
@@ -21,7 +21,9 @@ use datafusion::physical_plan::{
|
|
|
21
21
|
use futures_util::{stream, TryStreamExt};
|
|
22
22
|
use serde_json::Value as JsonValue;
|
|
23
23
|
|
|
24
|
-
use crate::live_state::{
|
|
24
|
+
use crate::live_state::{
|
|
25
|
+
LiveStateFilter, LiveStateReader, LiveStateScanRequest, MaterializedLiveStateRow,
|
|
26
|
+
};
|
|
25
27
|
use crate::sql2::dml::{InsertExec, InsertSink};
|
|
26
28
|
use crate::sql2::record_batch::record_batch_with_row_count;
|
|
27
29
|
use crate::sql2::write_normalization::{InsertCell, SqlCell, UpdateAssignmentValues};
|
|
@@ -29,7 +31,8 @@ use crate::sql2::{
|
|
|
29
31
|
SqlWriteContext, WriteAccess, WriteContextLiveStateReader, WriteContextVersionRefReader,
|
|
30
32
|
};
|
|
31
33
|
use crate::transaction::types::{
|
|
32
|
-
LogicalPrimaryKey,
|
|
34
|
+
LogicalPrimaryKey, TransactionWrite, TransactionWriteMode, TransactionWriteOperation,
|
|
35
|
+
TransactionWriteOrigin, TransactionWriteRow,
|
|
33
36
|
};
|
|
34
37
|
use crate::version::{
|
|
35
38
|
version_descriptor_stage_row, version_descriptor_tombstone_row, version_ref_stage_row,
|
|
@@ -268,8 +271,8 @@ impl InsertSink for LixVersionInsertSink {
|
|
|
268
271
|
|
|
269
272
|
if !rows.is_empty() {
|
|
270
273
|
self.write_ctx
|
|
271
|
-
.stage_write(
|
|
272
|
-
mode:
|
|
274
|
+
.stage_write(TransactionWrite::Rows {
|
|
275
|
+
mode: TransactionWriteMode::Insert,
|
|
273
276
|
rows,
|
|
274
277
|
})
|
|
275
278
|
.await
|
|
@@ -397,8 +400,8 @@ impl ExecutionPlan for LixVersionDeleteExec {
|
|
|
397
400
|
|
|
398
401
|
if !rows.is_empty() {
|
|
399
402
|
write_ctx
|
|
400
|
-
.stage_write(
|
|
401
|
-
mode:
|
|
403
|
+
.stage_write(TransactionWrite::Rows {
|
|
404
|
+
mode: TransactionWriteMode::Replace,
|
|
402
405
|
rows,
|
|
403
406
|
})
|
|
404
407
|
.await
|
|
@@ -540,8 +543,8 @@ impl ExecutionPlan for LixVersionUpdateExec {
|
|
|
540
543
|
|
|
541
544
|
if !rows.is_empty() {
|
|
542
545
|
write_ctx
|
|
543
|
-
.stage_write(
|
|
544
|
-
mode:
|
|
546
|
+
.stage_write(TransactionWrite::Rows {
|
|
547
|
+
mode: TransactionWriteMode::Replace,
|
|
545
548
|
rows,
|
|
546
549
|
})
|
|
547
550
|
.await
|
|
@@ -717,7 +720,7 @@ struct VersionDescriptor {
|
|
|
717
720
|
hidden: bool,
|
|
718
721
|
}
|
|
719
722
|
|
|
720
|
-
fn parse_descriptor(row: &
|
|
723
|
+
fn parse_descriptor(row: &MaterializedLiveStateRow) -> Result<VersionDescriptor, LixError> {
|
|
721
724
|
let snapshot = parse_snapshot(row, "lix_version_descriptor")?;
|
|
722
725
|
let id = snapshot
|
|
723
726
|
.get("id")
|
|
@@ -741,7 +744,7 @@ fn parse_descriptor(row: &LiveStateRow) -> Result<VersionDescriptor, LixError> {
|
|
|
741
744
|
Ok(VersionDescriptor { id, name, hidden })
|
|
742
745
|
}
|
|
743
746
|
|
|
744
|
-
fn parse_snapshot(row: &
|
|
747
|
+
fn parse_snapshot(row: &MaterializedLiveStateRow, schema_key: &str) -> Result<JsonValue, LixError> {
|
|
745
748
|
let snapshot_content = row.snapshot_content.as_deref().ok_or_else(|| {
|
|
746
749
|
LixError::new(
|
|
747
750
|
"LIX_ERROR_UNKNOWN",
|
|
@@ -903,7 +906,10 @@ fn version_update_rows_from_batch(
|
|
|
903
906
|
.collect()
|
|
904
907
|
}
|
|
905
908
|
|
|
906
|
-
fn version_stage_rows(
|
|
909
|
+
fn version_stage_rows(
|
|
910
|
+
row: VersionRow,
|
|
911
|
+
origin: Option<TransactionWriteOrigin>,
|
|
912
|
+
) -> Vec<TransactionWriteRow> {
|
|
907
913
|
vec![
|
|
908
914
|
with_origin(
|
|
909
915
|
version_descriptor_stage_row(&row.id, &row.name, row.hidden),
|
|
@@ -913,33 +919,42 @@ fn version_stage_rows(row: VersionRow, origin: Option<StageRowOrigin>) -> Vec<St
|
|
|
913
919
|
]
|
|
914
920
|
}
|
|
915
921
|
|
|
916
|
-
fn version_tombstone_rows(row: VersionRow) -> Vec<
|
|
917
|
-
let origin = Some(lix_version_origin(
|
|
922
|
+
fn version_tombstone_rows(row: VersionRow) -> Vec<TransactionWriteRow> {
|
|
923
|
+
let origin = Some(lix_version_origin(
|
|
924
|
+
TransactionWriteOperation::Delete,
|
|
925
|
+
&row.id,
|
|
926
|
+
));
|
|
918
927
|
vec![
|
|
919
928
|
with_origin(version_descriptor_tombstone_row(&row.id), origin.clone()),
|
|
920
929
|
with_origin(version_ref_tombstone_row(&row.id), origin),
|
|
921
930
|
]
|
|
922
931
|
}
|
|
923
932
|
|
|
924
|
-
fn version_insert_stage_rows(row: VersionRow) -> Vec<
|
|
925
|
-
let origin = lix_version_origin(
|
|
933
|
+
fn version_insert_stage_rows(row: VersionRow) -> Vec<TransactionWriteRow> {
|
|
934
|
+
let origin = lix_version_origin(TransactionWriteOperation::Insert, &row.id);
|
|
926
935
|
version_stage_rows(row, Some(origin))
|
|
927
936
|
}
|
|
928
937
|
|
|
929
|
-
fn version_update_stage_rows(row: VersionRow) -> Vec<
|
|
930
|
-
let origin = lix_version_origin(
|
|
938
|
+
fn version_update_stage_rows(row: VersionRow) -> Vec<TransactionWriteRow> {
|
|
939
|
+
let origin = lix_version_origin(TransactionWriteOperation::Update, &row.id);
|
|
931
940
|
version_stage_rows(row, Some(origin))
|
|
932
941
|
}
|
|
933
942
|
|
|
934
|
-
fn with_origin(
|
|
943
|
+
fn with_origin(
|
|
944
|
+
mut row: TransactionWriteRow,
|
|
945
|
+
origin: Option<TransactionWriteOrigin>,
|
|
946
|
+
) -> TransactionWriteRow {
|
|
935
947
|
row.origin = origin;
|
|
936
948
|
row
|
|
937
949
|
}
|
|
938
950
|
|
|
939
|
-
fn lix_version_origin(
|
|
940
|
-
|
|
951
|
+
fn lix_version_origin(
|
|
952
|
+
action: TransactionWriteOperation,
|
|
953
|
+
version_id: &str,
|
|
954
|
+
) -> TransactionWriteOrigin {
|
|
955
|
+
TransactionWriteOrigin {
|
|
941
956
|
surface: "lix_version".to_string(),
|
|
942
|
-
operation,
|
|
957
|
+
operation: action,
|
|
943
958
|
primary_key: Some(LogicalPrimaryKey {
|
|
944
959
|
columns: vec!["id".to_string()],
|
|
945
960
|
values: vec![version_id.to_string()],
|
|
@@ -1013,11 +1028,11 @@ fn required_string_value(
|
|
|
1013
1028
|
batch: &RecordBatch,
|
|
1014
1029
|
row_index: usize,
|
|
1015
1030
|
column_name: &str,
|
|
1016
|
-
|
|
1031
|
+
action: &str,
|
|
1017
1032
|
) -> Result<String> {
|
|
1018
|
-
optional_string_value(batch, row_index, column_name,
|
|
1033
|
+
optional_string_value(batch, row_index, column_name, action)?.ok_or_else(|| {
|
|
1019
1034
|
DataFusionError::Execution(format!(
|
|
1020
|
-
"{
|
|
1035
|
+
"{action} lix_version requires non-null text column '{column_name}'"
|
|
1021
1036
|
))
|
|
1022
1037
|
})
|
|
1023
1038
|
}
|
|
@@ -1026,7 +1041,7 @@ fn optional_string_value(
|
|
|
1026
1041
|
batch: &RecordBatch,
|
|
1027
1042
|
row_index: usize,
|
|
1028
1043
|
column_name: &str,
|
|
1029
|
-
|
|
1044
|
+
action: &str,
|
|
1030
1045
|
) -> Result<Option<String>> {
|
|
1031
1046
|
match optional_scalar_value(batch, row_index, column_name)? {
|
|
1032
1047
|
None
|
|
@@ -1038,7 +1053,7 @@ fn optional_string_value(
|
|
|
1038
1053
|
| Some(ScalarValue::Utf8View(Some(value)))
|
|
1039
1054
|
| Some(ScalarValue::LargeUtf8(Some(value))) => Ok(Some(value)),
|
|
1040
1055
|
Some(other) => Err(DataFusionError::Execution(format!(
|
|
1041
|
-
"{
|
|
1056
|
+
"{action} lix_version expected text-compatible column '{column_name}', got {other:?}"
|
|
1042
1057
|
))),
|
|
1043
1058
|
}
|
|
1044
1059
|
}
|
|
@@ -1047,11 +1062,11 @@ fn required_bool_value(
|
|
|
1047
1062
|
batch: &RecordBatch,
|
|
1048
1063
|
row_index: usize,
|
|
1049
1064
|
column_name: &str,
|
|
1050
|
-
|
|
1065
|
+
action: &str,
|
|
1051
1066
|
) -> Result<bool> {
|
|
1052
|
-
optional_bool_value(batch, row_index, column_name,
|
|
1067
|
+
optional_bool_value(batch, row_index, column_name, action)?.ok_or_else(|| {
|
|
1053
1068
|
DataFusionError::Execution(format!(
|
|
1054
|
-
"{
|
|
1069
|
+
"{action} lix_version requires non-null boolean column '{column_name}'"
|
|
1055
1070
|
))
|
|
1056
1071
|
})
|
|
1057
1072
|
}
|
|
@@ -1060,13 +1075,13 @@ fn optional_bool_value(
|
|
|
1060
1075
|
batch: &RecordBatch,
|
|
1061
1076
|
row_index: usize,
|
|
1062
1077
|
column_name: &str,
|
|
1063
|
-
|
|
1078
|
+
action: &str,
|
|
1064
1079
|
) -> Result<Option<bool>> {
|
|
1065
1080
|
match optional_scalar_value(batch, row_index, column_name)? {
|
|
1066
1081
|
None | Some(ScalarValue::Null) | Some(ScalarValue::Boolean(None)) => Ok(None),
|
|
1067
1082
|
Some(ScalarValue::Boolean(Some(value))) => Ok(Some(value)),
|
|
1068
1083
|
Some(other) => Err(DataFusionError::Execution(format!(
|
|
1069
|
-
"{
|
|
1084
|
+
"{action} lix_version expected boolean column '{column_name}', got {other:?}"
|
|
1070
1085
|
))),
|
|
1071
1086
|
}
|
|
1072
1087
|
}
|
|
@@ -50,12 +50,12 @@ impl VersionBinding {
|
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
pub(crate) fn require_active_version_id(&self,
|
|
53
|
+
pub(crate) fn require_active_version_id(&self, action: &str) -> Result<String, LixError> {
|
|
54
54
|
match self {
|
|
55
55
|
Self::Active { version_id } => Ok(version_id.clone()),
|
|
56
56
|
Self::Explicit => Err(LixError::new(
|
|
57
57
|
"LIX_ERROR_UNKNOWN",
|
|
58
|
-
format!("{
|
|
58
|
+
format!("{action} is only supported for active-version SQL surfaces"),
|
|
59
59
|
)),
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -65,7 +65,7 @@ pub(crate) fn resolve_write_version_scope(
|
|
|
65
65
|
explicit_global: Option<bool>,
|
|
66
66
|
explicit_version_id: Option<String>,
|
|
67
67
|
fallback_version_id: Option<&str>,
|
|
68
|
-
|
|
68
|
+
action: &str,
|
|
69
69
|
surface: &str,
|
|
70
70
|
) -> Result<WriteVersionScope, DataFusionError> {
|
|
71
71
|
if explicit_global == Some(true) {
|
|
@@ -86,7 +86,7 @@ pub(crate) fn resolve_write_version_scope(
|
|
|
86
86
|
let version_id = explicit_version_id
|
|
87
87
|
.or_else(|| fallback_version_id.map(ToOwned::to_owned))
|
|
88
88
|
.ok_or_else(|| {
|
|
89
|
-
DataFusionError::Execution(format!("{
|
|
89
|
+
DataFusionError::Execution(format!("{action} requires lixcol_version_id"))
|
|
90
90
|
})?;
|
|
91
91
|
if explicit_global == Some(false) && version_id == GLOBAL_VERSION_ID {
|
|
92
92
|
return Err(DataFusionError::Execution(format!(
|