From ac43df4ad5a7b921dfe48f0fcee3199891a69d2a Mon Sep 17 00:00:00 2001 From: David Zhao Date: Thu, 23 Jul 2026 16:26:11 +1000 Subject: [PATCH 01/10] Add proto message for configuring AST size --- proto/relationalai/lqp/v1/transactions.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/proto/relationalai/lqp/v1/transactions.proto b/proto/relationalai/lqp/v1/transactions.proto index 81b14a4f..3b758d96 100644 --- a/proto/relationalai/lqp/v1/transactions.proto +++ b/proto/relationalai/lqp/v1/transactions.proto @@ -16,6 +16,7 @@ message Transaction { message Configure { int64 semantics_version = 1; IVMConfig ivm_config = 2; + ASTSizeLimit = 3; } message IVMConfig { @@ -29,6 +30,11 @@ enum MaintenanceLevel { MAINTENANCE_LEVEL_ALL = 3; } +message ASTSizeLimit { + int64 warning_limit = 1; + int64 exception_limit = 2; +} + message Sync { repeated FragmentId fragments = 1; } From 33ca23c8d078309e19e74d313ad9ac732b7a2d82 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Thu, 23 Jul 2026 16:27:13 +1000 Subject: [PATCH 02/10] Whoops forgot field name --- proto/relationalai/lqp/v1/transactions.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/relationalai/lqp/v1/transactions.proto b/proto/relationalai/lqp/v1/transactions.proto index 3b758d96..5218264e 100644 --- a/proto/relationalai/lqp/v1/transactions.proto +++ b/proto/relationalai/lqp/v1/transactions.proto @@ -16,7 +16,7 @@ message Transaction { message Configure { int64 semantics_version = 1; IVMConfig ivm_config = 2; - ASTSizeLimit = 3; + ASTSizeLimit ast_size_limit = 3; } message IVMConfig { From 58b00449c21de646b771090c5083fb050b690072 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Thu, 23 Jul 2026 18:40:38 +1000 Subject: [PATCH 03/10] Add ASTSizeLimit to configure grammar Surfaces ASTSizeLimit.warning_limit and ASTSizeLimit.exception_limit as :ast_size.warning_limit and :ast_size.exception_limit keys in the configure dict. Both are omitted when zero (the default). Guards all access to ast_size_limit with has_proto_field since the field is only set when at least one limit is non-zero. Co-Authored-By: Claude Sonnet 4.6 --- meta/src/meta/grammar.y | 15 +++++++++++++++ tests/lqp/ast_size_limit.lqp | 13 +++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 tests/lqp/ast_size_limit.lqp diff --git a/meta/src/meta/grammar.y b/meta/src/meta/grammar.y index f5ef184d..ca442038 100644 --- a/meta/src/meta/grammar.y +++ b/meta/src/meta/grammar.y @@ -218,6 +218,7 @@ # or by parser internals, rather than being directly produced by grammar production rules. # Without these directives, the validator would report errors that these message types have # no grammar rules producing them. +%validator_ignore_completeness ASTSizeLimit %validator_ignore_completeness DebugInfo %validator_ignore_completeness IVMConfig %validator_ignore_completeness UInt128Value @@ -1681,9 +1682,11 @@ def construct_betree_info( def default_configure() -> transactions.Configure: ivm_config: transactions.IVMConfig = transactions.IVMConfig(level=transactions.MaintenanceLevel.MAINTENANCE_LEVEL_OFF) + ast_size_limit: transactions.ASTSizeLimit = transactions.ASTSizeLimit(warning_limit=0, exception_limit=0) return transactions.Configure( semantics_version=0, ivm_config=ivm_config, + ast_size_limit=ast_size_limit, ) def construct_configure(config_dict: Sequence[Tuple[String, logic.Value]]) -> transactions.Configure: @@ -1702,9 +1705,13 @@ def construct_configure(config_dict: Sequence[Tuple[String, logic.Value]]) -> tr maintenance_level = transactions.MaintenanceLevel.MAINTENANCE_LEVEL_OFF ivm_config: transactions.IVMConfig = transactions.IVMConfig(level=maintenance_level) semantics_version: int = _extract_value_int64(builtin.dict_get(config, "semantics_version"), 0) + warning_limit: int = _extract_value_int64(builtin.dict_get(config, "ast_size.warning_limit"), 0) + exception_limit: int = _extract_value_int64(builtin.dict_get(config, "ast_size.exception_limit"), 0) + ast_size_limit: transactions.ASTSizeLimit = transactions.ASTSizeLimit(warning_limit=warning_limit, exception_limit=exception_limit) return transactions.Configure( semantics_version=semantics_version, ivm_config=ivm_config, + ast_size_limit=ast_size_limit, ) def construct_export_csv_config( @@ -1777,6 +1784,10 @@ def is_default_configure(cfg: transactions.Configure) -> bool: return False if cfg.ivm_config.level != transactions.MaintenanceLevel.MAINTENANCE_LEVEL_OFF: return False + if cfg.ast_size_limit.warning_limit != 0: + return False + if cfg.ast_size_limit.exception_limit != 0: + return False return True @@ -1789,6 +1800,10 @@ def deconstruct_configure(msg: transactions.Configure) -> List[Tuple[String, log elif msg.ivm_config.level == transactions.MaintenanceLevel.MAINTENANCE_LEVEL_OFF: builtin.list_push(result, builtin.tuple("ivm.maintenance_level", _make_value_string("off"))) builtin.list_push(result, builtin.tuple("semantics_version", _make_value_int64(msg.semantics_version))) + if msg.ast_size_limit.warning_limit != 0: + builtin.list_push(result, builtin.tuple("ast_size.warning_limit", _make_value_int64(msg.ast_size_limit.warning_limit))) + if msg.ast_size_limit.exception_limit != 0: + builtin.list_push(result, builtin.tuple("ast_size.exception_limit", _make_value_int64(msg.ast_size_limit.exception_limit))) return builtin.list_sort(result) diff --git a/tests/lqp/ast_size_limit.lqp b/tests/lqp/ast_size_limit.lqp new file mode 100644 index 00000000..9f2e2c33 --- /dev/null +++ b/tests/lqp/ast_size_limit.lqp @@ -0,0 +1,13 @@ +(transaction + (configure + { :ast_size.exception_limit 1000 + :ast_size.warning_limit 500 + :ivm.maintenance_level "off" + :semantics_version 0}) + (epoch + (writes + (define + (fragment :f1 + (def :output ([v::INT] (+ 1 1 v)))))) + (reads + (output :output :output)))) From 3ce87320387d4942cbc31a2cea6adf61ede4257e Mon Sep 17 00:00:00 2001 From: David Zhao Date: Thu, 23 Jul 2026 18:40:44 +1000 Subject: [PATCH 04/10] Add ASTSizeLimit equality and extend Configure equality in Julia SDK Co-Authored-By: Claude Sonnet 4.6 --- sdks/julia/LogicalQueryProtocol.jl/src/equality.jl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/sdks/julia/LogicalQueryProtocol.jl/src/equality.jl b/sdks/julia/LogicalQueryProtocol.jl/src/equality.jl index 39c46cb8..1c9cbc41 100644 --- a/sdks/julia/LogicalQueryProtocol.jl/src/equality.jl +++ b/sdks/julia/LogicalQueryProtocol.jl/src/equality.jl @@ -493,10 +493,15 @@ Base.:(==)(a::IVMConfig, b::IVMConfig) = a.level == b.level Base.hash(a::IVMConfig, h::UInt) = hash(a.level, h) Base.isequal(a::IVMConfig, b::IVMConfig) = isequal(a.level, b.level) +# ASTSizeLimit +Base.:(==)(a::ASTSizeLimit, b::ASTSizeLimit) = a.warning_limit == b.warning_limit && a.exception_limit == b.exception_limit +Base.hash(a::ASTSizeLimit, h::UInt) = hash(a.exception_limit, hash(a.warning_limit, h)) +Base.isequal(a::ASTSizeLimit, b::ASTSizeLimit) = isequal(a.warning_limit, b.warning_limit) && isequal(a.exception_limit, b.exception_limit) + # Configure -Base.:(==)(a::Configure, b::Configure) = a.semantics_version == b.semantics_version && a.ivm_config == b.ivm_config -Base.hash(a::Configure, h::UInt) = hash(a.ivm_config, hash(a.semantics_version, h)) -Base.isequal(a::Configure, b::Configure) = isequal(a.semantics_version, b.semantics_version) && isequal(a.ivm_config, b.ivm_config) +Base.:(==)(a::Configure, b::Configure) = a.semantics_version == b.semantics_version && a.ivm_config == b.ivm_config && a.ast_size_limit == b.ast_size_limit +Base.hash(a::Configure, h::UInt) = hash(a.ast_size_limit, hash(a.ivm_config, hash(a.semantics_version, h))) +Base.isequal(a::Configure, b::Configure) = isequal(a.semantics_version, b.semantics_version) && isequal(a.ivm_config, b.ivm_config) && isequal(a.ast_size_limit, b.ast_size_limit) # Epoch Base.:(==)(a::Epoch, b::Epoch) = a.writes == b.writes && a.reads == b.reads From 047616a4d40761e4cd63db858ea5d2093de2db2e Mon Sep 17 00:00:00 2001 From: David Zhao Date: Thu, 23 Jul 2026 18:40:49 +1000 Subject: [PATCH 05/10] Regenerate parsers, printers, and test snapshots Co-Authored-By: Claude Sonnet 4.6 --- sdks/go/src/lqp/v1/transactions.pb.go | 804 ++++++++++-------- sdks/go/src/parser.go | 92 +- sdks/go/src/pretty.go | 196 +++-- .../relationalai/lqp/v1/transactions_pb.jl | 57 +- .../LogicalQueryProtocol.jl/src/parser.jl | 84 +- .../LogicalQueryProtocol.jl/src/pretty.jl | 211 +++-- sdks/python/src/lqp/gen/parser.py | 84 +- sdks/python/src/lqp/gen/pretty.py | 176 ++-- .../src/lqp/proto/v1/transactions_pb2.py | 96 ++- .../src/lqp/proto/v1/transactions_pb2.pyi | 14 +- sdks/python/uv.lock | 2 +- tests/bin/ast_size_limit.bin | Bin 0 -> 188 bytes tests/pretty/ast_size_limit.lqp | 10 + tests/pretty_debug/ast_size_limit.lqp | 16 + 14 files changed, 1043 insertions(+), 799 deletions(-) create mode 100644 tests/bin/ast_size_limit.bin create mode 100644 tests/pretty/ast_size_limit.lqp create mode 100644 tests/pretty_debug/ast_size_limit.lqp diff --git a/sdks/go/src/lqp/v1/transactions.pb.go b/sdks/go/src/lqp/v1/transactions.pb.go index 04d576e3..8e2a6ce3 100644 --- a/sdks/go/src/lqp/v1/transactions.pb.go +++ b/sdks/go/src/lqp/v1/transactions.pb.go @@ -137,6 +137,7 @@ type Configure struct { state protoimpl.MessageState `protogen:"open.v1"` SemanticsVersion int64 `protobuf:"varint,1,opt,name=semantics_version,json=semanticsVersion,proto3" json:"semantics_version,omitempty"` IvmConfig *IVMConfig `protobuf:"bytes,2,opt,name=ivm_config,json=ivmConfig,proto3" json:"ivm_config,omitempty"` + AstSizeLimit *ASTSizeLimit `protobuf:"bytes,3,opt,name=ast_size_limit,json=astSizeLimit,proto3" json:"ast_size_limit,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -185,6 +186,13 @@ func (x *Configure) GetIvmConfig() *IVMConfig { return nil } +func (x *Configure) GetAstSizeLimit() *ASTSizeLimit { + if x != nil { + return x.AstSizeLimit + } + return nil +} + type IVMConfig struct { state protoimpl.MessageState `protogen:"open.v1"` Level MaintenanceLevel `protobuf:"varint,1,opt,name=level,proto3,enum=relationalai.lqp.v1.MaintenanceLevel" json:"level,omitempty"` @@ -229,6 +237,58 @@ func (x *IVMConfig) GetLevel() MaintenanceLevel { return MaintenanceLevel_MAINTENANCE_LEVEL_UNSPECIFIED } +type ASTSizeLimit struct { + state protoimpl.MessageState `protogen:"open.v1"` + WarningLimit int64 `protobuf:"varint,1,opt,name=warning_limit,json=warningLimit,proto3" json:"warning_limit,omitempty"` + ExceptionLimit int64 `protobuf:"varint,2,opt,name=exception_limit,json=exceptionLimit,proto3" json:"exception_limit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ASTSizeLimit) Reset() { + *x = ASTSizeLimit{} + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ASTSizeLimit) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ASTSizeLimit) ProtoMessage() {} + +func (x *ASTSizeLimit) ProtoReflect() protoreflect.Message { + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ASTSizeLimit.ProtoReflect.Descriptor instead. +func (*ASTSizeLimit) Descriptor() ([]byte, []int) { + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{3} +} + +func (x *ASTSizeLimit) GetWarningLimit() int64 { + if x != nil { + return x.WarningLimit + } + return 0 +} + +func (x *ASTSizeLimit) GetExceptionLimit() int64 { + if x != nil { + return x.ExceptionLimit + } + return 0 +} + type Sync struct { state protoimpl.MessageState `protogen:"open.v1"` Fragments []*FragmentId `protobuf:"bytes,1,rep,name=fragments,proto3" json:"fragments,omitempty"` @@ -238,7 +298,7 @@ type Sync struct { func (x *Sync) Reset() { *x = Sync{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[3] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -250,7 +310,7 @@ func (x *Sync) String() string { func (*Sync) ProtoMessage() {} func (x *Sync) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[3] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -263,7 +323,7 @@ func (x *Sync) ProtoReflect() protoreflect.Message { // Deprecated: Use Sync.ProtoReflect.Descriptor instead. func (*Sync) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{3} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{4} } func (x *Sync) GetFragments() []*FragmentId { @@ -283,7 +343,7 @@ type Epoch struct { func (x *Epoch) Reset() { *x = Epoch{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[4] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -295,7 +355,7 @@ func (x *Epoch) String() string { func (*Epoch) ProtoMessage() {} func (x *Epoch) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[4] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -308,7 +368,7 @@ func (x *Epoch) ProtoReflect() protoreflect.Message { // Deprecated: Use Epoch.ProtoReflect.Descriptor instead. func (*Epoch) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{4} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{5} } func (x *Epoch) GetWrites() []*Write { @@ -340,7 +400,7 @@ type Write struct { func (x *Write) Reset() { *x = Write{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[5] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -352,7 +412,7 @@ func (x *Write) String() string { func (*Write) ProtoMessage() {} func (x *Write) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[5] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -365,7 +425,7 @@ func (x *Write) ProtoReflect() protoreflect.Message { // Deprecated: Use Write.ProtoReflect.Descriptor instead. func (*Write) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{5} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{6} } func (x *Write) GetWriteType() isWrite_WriteType { @@ -448,7 +508,7 @@ type Define struct { func (x *Define) Reset() { *x = Define{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[6] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -460,7 +520,7 @@ func (x *Define) String() string { func (*Define) ProtoMessage() {} func (x *Define) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[6] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -473,7 +533,7 @@ func (x *Define) ProtoReflect() protoreflect.Message { // Deprecated: Use Define.ProtoReflect.Descriptor instead. func (*Define) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{6} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{7} } func (x *Define) GetFragment() *Fragment { @@ -492,7 +552,7 @@ type Undefine struct { func (x *Undefine) Reset() { *x = Undefine{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[7] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -504,7 +564,7 @@ func (x *Undefine) String() string { func (*Undefine) ProtoMessage() {} func (x *Undefine) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[7] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -517,7 +577,7 @@ func (x *Undefine) ProtoReflect() protoreflect.Message { // Deprecated: Use Undefine.ProtoReflect.Descriptor instead. func (*Undefine) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{7} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{8} } func (x *Undefine) GetFragmentId() *FragmentId { @@ -536,7 +596,7 @@ type Context struct { func (x *Context) Reset() { *x = Context{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[8] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -548,7 +608,7 @@ func (x *Context) String() string { func (*Context) ProtoMessage() {} func (x *Context) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[8] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -561,7 +621,7 @@ func (x *Context) ProtoReflect() protoreflect.Message { // Deprecated: Use Context.ProtoReflect.Descriptor instead. func (*Context) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{8} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{9} } func (x *Context) GetRelations() []*RelationId { @@ -583,7 +643,7 @@ type SnapshotMapping struct { func (x *SnapshotMapping) Reset() { *x = SnapshotMapping{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[9] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -595,7 +655,7 @@ func (x *SnapshotMapping) String() string { func (*SnapshotMapping) ProtoMessage() {} func (x *SnapshotMapping) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[9] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -608,7 +668,7 @@ func (x *SnapshotMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use SnapshotMapping.ProtoReflect.Descriptor instead. func (*SnapshotMapping) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{9} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{10} } func (x *SnapshotMapping) GetDestinationPath() []string { @@ -639,7 +699,7 @@ type Snapshot struct { func (x *Snapshot) Reset() { *x = Snapshot{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[10] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -651,7 +711,7 @@ func (x *Snapshot) String() string { func (*Snapshot) ProtoMessage() {} func (x *Snapshot) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[10] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -664,7 +724,7 @@ func (x *Snapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use Snapshot.ProtoReflect.Descriptor instead. func (*Snapshot) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{10} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{11} } func (x *Snapshot) GetMappings() []*SnapshotMapping { @@ -707,7 +767,7 @@ type ExportCSVConfig struct { func (x *ExportCSVConfig) Reset() { *x = ExportCSVConfig{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -719,7 +779,7 @@ func (x *ExportCSVConfig) String() string { func (*ExportCSVConfig) ProtoMessage() {} func (x *ExportCSVConfig) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -732,7 +792,7 @@ func (x *ExportCSVConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportCSVConfig.ProtoReflect.Descriptor instead. func (*ExportCSVConfig) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{11} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{12} } func (x *ExportCSVConfig) GetPath() string { @@ -829,7 +889,7 @@ type ExportCSVColumn struct { func (x *ExportCSVColumn) Reset() { *x = ExportCSVColumn{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -841,7 +901,7 @@ func (x *ExportCSVColumn) String() string { func (*ExportCSVColumn) ProtoMessage() {} func (x *ExportCSVColumn) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -854,7 +914,7 @@ func (x *ExportCSVColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportCSVColumn.ProtoReflect.Descriptor instead. func (*ExportCSVColumn) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{12} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{13} } func (x *ExportCSVColumn) GetColumnName() string { @@ -880,7 +940,7 @@ type ExportCSVColumns struct { func (x *ExportCSVColumns) Reset() { *x = ExportCSVColumns{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -892,7 +952,7 @@ func (x *ExportCSVColumns) String() string { func (*ExportCSVColumns) ProtoMessage() {} func (x *ExportCSVColumns) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -905,7 +965,7 @@ func (x *ExportCSVColumns) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportCSVColumns.ProtoReflect.Descriptor instead. func (*ExportCSVColumns) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{13} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{14} } func (x *ExportCSVColumns) GetColumns() []*ExportCSVColumn { @@ -928,7 +988,7 @@ type ExportCSVSource struct { func (x *ExportCSVSource) Reset() { *x = ExportCSVSource{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -940,7 +1000,7 @@ func (x *ExportCSVSource) String() string { func (*ExportCSVSource) ProtoMessage() {} func (x *ExportCSVSource) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -953,7 +1013,7 @@ func (x *ExportCSVSource) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportCSVSource.ProtoReflect.Descriptor instead. func (*ExportCSVSource) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{14} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{15} } func (x *ExportCSVSource) GetCsvSource() isExportCSVSource_CsvSource { @@ -1012,7 +1072,7 @@ type ExportIcebergConfig struct { func (x *ExportIcebergConfig) Reset() { *x = ExportIcebergConfig{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1024,7 +1084,7 @@ func (x *ExportIcebergConfig) String() string { func (*ExportIcebergConfig) ProtoMessage() {} func (x *ExportIcebergConfig) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1037,7 +1097,7 @@ func (x *ExportIcebergConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportIcebergConfig.ProtoReflect.Descriptor instead. func (*ExportIcebergConfig) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{15} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{16} } func (x *ExportIcebergConfig) GetLocator() *IcebergLocator { @@ -1105,7 +1165,7 @@ type Read struct { func (x *Read) Reset() { *x = Read{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1117,7 +1177,7 @@ func (x *Read) String() string { func (*Read) ProtoMessage() {} func (x *Read) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1130,7 +1190,7 @@ func (x *Read) ProtoReflect() protoreflect.Message { // Deprecated: Use Read.ProtoReflect.Descriptor instead. func (*Read) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{16} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{17} } func (x *Read) GetReadType() isRead_ReadType { @@ -1228,7 +1288,7 @@ type Demand struct { func (x *Demand) Reset() { *x = Demand{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1240,7 +1300,7 @@ func (x *Demand) String() string { func (*Demand) ProtoMessage() {} func (x *Demand) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1253,7 +1313,7 @@ func (x *Demand) ProtoReflect() protoreflect.Message { // Deprecated: Use Demand.ProtoReflect.Descriptor instead. func (*Demand) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{17} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{18} } func (x *Demand) GetRelationId() *RelationId { @@ -1273,7 +1333,7 @@ type Output struct { func (x *Output) Reset() { *x = Output{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[18] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1285,7 +1345,7 @@ func (x *Output) String() string { func (*Output) ProtoMessage() {} func (x *Output) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[18] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1298,7 +1358,7 @@ func (x *Output) ProtoReflect() protoreflect.Message { // Deprecated: Use Output.ProtoReflect.Descriptor instead. func (*Output) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{18} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{19} } func (x *Output) GetName() string { @@ -1328,7 +1388,7 @@ type Export struct { func (x *Export) Reset() { *x = Export{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[19] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1340,7 +1400,7 @@ func (x *Export) String() string { func (*Export) ProtoMessage() {} func (x *Export) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[19] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1353,7 +1413,7 @@ func (x *Export) ProtoReflect() protoreflect.Message { // Deprecated: Use Export.ProtoReflect.Descriptor instead. func (*Export) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{19} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{20} } func (x *Export) GetExportConfig() isExport_ExportConfig { @@ -1407,7 +1467,7 @@ type WhatIf struct { func (x *WhatIf) Reset() { *x = WhatIf{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[20] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1419,7 +1479,7 @@ func (x *WhatIf) String() string { func (*WhatIf) ProtoMessage() {} func (x *WhatIf) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[20] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1432,7 +1492,7 @@ func (x *WhatIf) ProtoReflect() protoreflect.Message { // Deprecated: Use WhatIf.ProtoReflect.Descriptor instead. func (*WhatIf) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{20} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{21} } func (x *WhatIf) GetBranch() string { @@ -1459,7 +1519,7 @@ type Abort struct { func (x *Abort) Reset() { *x = Abort{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[21] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1471,7 +1531,7 @@ func (x *Abort) String() string { func (*Abort) ProtoMessage() {} func (x *Abort) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[21] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1484,7 +1544,7 @@ func (x *Abort) ProtoReflect() protoreflect.Message { // Deprecated: Use Abort.ProtoReflect.Descriptor instead. func (*Abort) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{21} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{22} } func (x *Abort) GetName() string { @@ -1524,247 +1584,257 @@ var file_relationalai_lqp_v1_transactions_proto_rawDesc = string([]byte{ 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x79, - 0x6e, 0x63, 0x22, 0x77, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, - 0x2b, 0x0a, 0x11, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x65, 0x6d, 0x61, - 0x6e, 0x74, 0x69, 0x63, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0a, - 0x69, 0x76, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, - 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x56, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x09, 0x69, 0x76, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x48, 0x0a, 0x09, 0x49, - 0x56, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, - 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x45, 0x0a, 0x04, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x3d, 0x0a, - 0x09, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, - 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x52, 0x09, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x6c, 0x0a, 0x05, - 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x52, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x72, 0x65, 0x61, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x61, 0x64, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x05, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, - 0x65, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x75, - 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x6e, 0x63, 0x22, 0xc0, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, + 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x65, 0x6d, + 0x61, 0x6e, 0x74, 0x69, 0x63, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, + 0x0a, 0x69, 0x76, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, + 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x56, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x09, 0x69, 0x76, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0e, + 0x61, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x53, 0x54, 0x53, 0x69, + 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0c, 0x61, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x48, 0x0a, 0x09, 0x49, 0x56, 0x4d, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, + 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, + 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, + 0x5c, 0x0a, 0x0c, 0x41, 0x53, 0x54, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x65, + 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x45, 0x0a, + 0x04, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x3d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x46, + 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x09, 0x66, 0x72, 0x61, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x22, 0x6c, 0x0a, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, + 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x08, - 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x48, 0x00, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, - 0x0c, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, - 0x04, 0x10, 0x05, 0x22, 0x43, 0x0a, 0x06, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x39, 0x0a, - 0x08, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, - 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, - 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4c, 0x0a, 0x08, 0x55, 0x6e, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x0a, 0x66, 0x72, 0x61, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x22, 0x86, 0x01, 0x0a, 0x0f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, - 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x74, 0x68, 0x12, - 0x48, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x08, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, - 0x80, 0x06, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x43, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x43, 0x53, 0x56, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x63, 0x73, 0x76, 0x53, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x53, 0x56, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x63, 0x73, 0x76, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, - 0x0b, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x0e, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x2f, 0x0a, 0x11, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0f, 0x73, 0x79, - 0x6e, 0x74, 0x61, 0x78, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x6f, 0x77, 0x88, 0x01, 0x01, - 0x12, 0x37, 0x0a, 0x15, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, - 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x03, 0x52, 0x13, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x79, 0x6e, - 0x74, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x04, 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x88, 0x01, - 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x6f, 0x74, - 0x65, 0x63, 0x68, 0x61, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0f, 0x73, - 0x79, 0x6e, 0x74, 0x61, 0x78, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x63, 0x68, 0x61, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x30, 0x0a, 0x11, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x65, 0x73, 0x63, 0x61, - 0x70, 0x65, 0x63, 0x68, 0x61, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, - 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x63, 0x68, 0x61, 0x72, - 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, - 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x77, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, - 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x79, 0x6e, 0x74, - 0x61, 0x78, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x63, 0x68, 0x61, 0x72, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x63, 0x68, - 0x61, 0x72, 0x22, 0x74, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, + 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x05, 0x72, 0x65, 0x61, + 0x64, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x05, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x06, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x08, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, + 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, + 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, + 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x48, 0x00, 0x52, 0x08, 0x73, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x43, 0x0a, 0x06, 0x44, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, + 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x22, 0x4c, 0x0a, 0x08, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x40, 0x0a, 0x0b, + 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, + 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x52, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x48, + 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x09, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x0f, 0x53, 0x6e, 0x61, + 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, + 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x74, 0x68, 0x12, 0x48, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, + 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x64, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x40, 0x0a, + 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, + 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x80, 0x06, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, + 0x36, 0x0a, 0x17, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x15, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x52, 0x0a, 0x10, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x07, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xa9, 0x01, 0x0a, - 0x0f, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x48, 0x0a, 0x0b, 0x67, 0x6e, 0x66, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x52, 0x09, 0x63, 0x73, 0x76, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0a, + 0x63, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, + 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x09, 0x63, 0x73, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0c, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, + 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, + 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0d, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x25, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x73, 0x79, 0x6e, 0x74, 0x61, + 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x02, 0x52, 0x0f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x48, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x52, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x73, 0x79, 0x6e, 0x74, + 0x61, 0x78, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x13, 0x73, 0x79, 0x6e, 0x74, 0x61, + 0x78, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x69, + 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x74, 0x61, + 0x78, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x79, 0x6e, + 0x74, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x63, 0x68, 0x61, 0x72, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x51, 0x75, 0x6f, + 0x74, 0x65, 0x63, 0x68, 0x61, 0x72, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x73, 0x79, 0x6e, + 0x74, 0x61, 0x78, 0x5f, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x63, 0x68, 0x61, 0x72, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x45, 0x73, + 0x63, 0x61, 0x70, 0x65, 0x63, 0x68, 0x61, 0x72, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x5f, 0x72, 0x6f, 0x77, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x42, + 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, + 0x63, 0x68, 0x61, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, + 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x63, 0x68, 0x61, 0x72, 0x22, 0x74, 0x0a, 0x0f, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1f, 0x0a, + 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, + 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, + 0x22, 0x52, 0x0a, 0x10, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, - 0x67, 0x6e, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, + 0x53, 0x56, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x67, 0x6e, 0x66, 0x5f, + 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x48, 0x00, - 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x42, 0x0c, 0x0a, 0x0a, 0x63, 0x73, - 0x76, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xa8, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x3d, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, - 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, - 0x41, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, - 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x6e, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, - 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, - 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, - 0x13, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, - 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x10, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, - 0x69, 0x65, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x4a, 0x04, 0x08, - 0x04, 0x10, 0x05, 0x22, 0xa4, 0x02, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x06, - 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6d, - 0x61, 0x6e, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x48, 0x00, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x77, 0x68, - 0x61, 0x74, 0x5f, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, - 0x31, 0x2e, 0x57, 0x68, 0x61, 0x74, 0x49, 0x66, 0x48, 0x00, 0x52, 0x06, 0x77, 0x68, 0x61, 0x74, - 0x49, 0x66, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, - 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, - 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, - 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0b, 0x0a, - 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x06, 0x44, 0x65, - 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, + 0x65, 0x66, 0x42, 0x0c, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x22, 0xa8, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x63, 0x65, 0x62, 0x65, + 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, + 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, + 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, + 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x09, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x08, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x13, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x68, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xa4, 0x02, 0x0a, 0x04, + 0x52, 0x65, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6d, 0x61, 0x6e, + 0x64, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, + 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x77, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x66, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x68, 0x61, 0x74, 0x49, 0x66, + 0x48, 0x00, 0x52, 0x06, 0x77, 0x68, 0x61, 0x74, 0x49, 0x66, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x62, + 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb3, 0x01, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x12, 0x45, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 0x63, - 0x73, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x0e, 0x69, 0x63, 0x65, 0x62, - 0x65, 0x72, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, - 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x63, 0x65, - 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x63, - 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x52, 0x0a, 0x06, - 0x57, 0x68, 0x61, 0x74, 0x49, 0x66, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x30, - 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x41, 0x62, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x35, + 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, + 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x06, 0x65, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x06, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x0b, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, + 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, + 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, + 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb3, + 0x01, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x45, 0x0a, 0x0a, 0x63, 0x73, 0x76, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, - 0x22, 0x5d, 0x0a, 0x05, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, - 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, - 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x2a, - 0x87, 0x01, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x1d, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, - 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, 0x54, - 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x46, 0x46, - 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, - 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x19, - 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, - 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x03, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x41, 0x49, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x2d, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x64, 0x6b, 0x73, - 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x6c, 0x71, 0x70, 0x2f, 0x76, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 0x63, 0x73, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x51, 0x0a, 0x0e, 0x69, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x22, 0x52, 0x0a, 0x06, 0x57, 0x68, 0x61, 0x74, 0x49, 0x66, 0x12, 0x16, + 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, + 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x5d, 0x0a, 0x05, 0x41, 0x62, 0x6f, 0x72, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x2a, 0x87, 0x01, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, + 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x1d, + 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, + 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, + 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, + 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, + 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, + 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x4c, 0x4c, 0x10, + 0x03, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x49, 0x2f, 0x6c, 0x6f, 0x67, + 0x69, 0x63, 0x61, 0x6c, 0x2d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x64, 0x6b, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x72, 0x63, 0x2f, + 0x6c, 0x71, 0x70, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1780,84 +1850,86 @@ func file_relationalai_lqp_v1_transactions_proto_rawDescGZIP() []byte { } var file_relationalai_lqp_v1_transactions_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_relationalai_lqp_v1_transactions_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_relationalai_lqp_v1_transactions_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_relationalai_lqp_v1_transactions_proto_goTypes = []any{ (MaintenanceLevel)(0), // 0: relationalai.lqp.v1.MaintenanceLevel (*Transaction)(nil), // 1: relationalai.lqp.v1.Transaction (*Configure)(nil), // 2: relationalai.lqp.v1.Configure (*IVMConfig)(nil), // 3: relationalai.lqp.v1.IVMConfig - (*Sync)(nil), // 4: relationalai.lqp.v1.Sync - (*Epoch)(nil), // 5: relationalai.lqp.v1.Epoch - (*Write)(nil), // 6: relationalai.lqp.v1.Write - (*Define)(nil), // 7: relationalai.lqp.v1.Define - (*Undefine)(nil), // 8: relationalai.lqp.v1.Undefine - (*Context)(nil), // 9: relationalai.lqp.v1.Context - (*SnapshotMapping)(nil), // 10: relationalai.lqp.v1.SnapshotMapping - (*Snapshot)(nil), // 11: relationalai.lqp.v1.Snapshot - (*ExportCSVConfig)(nil), // 12: relationalai.lqp.v1.ExportCSVConfig - (*ExportCSVColumn)(nil), // 13: relationalai.lqp.v1.ExportCSVColumn - (*ExportCSVColumns)(nil), // 14: relationalai.lqp.v1.ExportCSVColumns - (*ExportCSVSource)(nil), // 15: relationalai.lqp.v1.ExportCSVSource - (*ExportIcebergConfig)(nil), // 16: relationalai.lqp.v1.ExportIcebergConfig - (*Read)(nil), // 17: relationalai.lqp.v1.Read - (*Demand)(nil), // 18: relationalai.lqp.v1.Demand - (*Output)(nil), // 19: relationalai.lqp.v1.Output - (*Export)(nil), // 20: relationalai.lqp.v1.Export - (*WhatIf)(nil), // 21: relationalai.lqp.v1.WhatIf - (*Abort)(nil), // 22: relationalai.lqp.v1.Abort - nil, // 23: relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntry - (*FragmentId)(nil), // 24: relationalai.lqp.v1.FragmentId - (*Fragment)(nil), // 25: relationalai.lqp.v1.Fragment - (*RelationId)(nil), // 26: relationalai.lqp.v1.RelationId - (*CSVConfig)(nil), // 27: relationalai.lqp.v1.CSVConfig - (*IcebergLocator)(nil), // 28: relationalai.lqp.v1.IcebergLocator - (*IcebergCatalogConfig)(nil), // 29: relationalai.lqp.v1.IcebergCatalogConfig + (*ASTSizeLimit)(nil), // 4: relationalai.lqp.v1.ASTSizeLimit + (*Sync)(nil), // 5: relationalai.lqp.v1.Sync + (*Epoch)(nil), // 6: relationalai.lqp.v1.Epoch + (*Write)(nil), // 7: relationalai.lqp.v1.Write + (*Define)(nil), // 8: relationalai.lqp.v1.Define + (*Undefine)(nil), // 9: relationalai.lqp.v1.Undefine + (*Context)(nil), // 10: relationalai.lqp.v1.Context + (*SnapshotMapping)(nil), // 11: relationalai.lqp.v1.SnapshotMapping + (*Snapshot)(nil), // 12: relationalai.lqp.v1.Snapshot + (*ExportCSVConfig)(nil), // 13: relationalai.lqp.v1.ExportCSVConfig + (*ExportCSVColumn)(nil), // 14: relationalai.lqp.v1.ExportCSVColumn + (*ExportCSVColumns)(nil), // 15: relationalai.lqp.v1.ExportCSVColumns + (*ExportCSVSource)(nil), // 16: relationalai.lqp.v1.ExportCSVSource + (*ExportIcebergConfig)(nil), // 17: relationalai.lqp.v1.ExportIcebergConfig + (*Read)(nil), // 18: relationalai.lqp.v1.Read + (*Demand)(nil), // 19: relationalai.lqp.v1.Demand + (*Output)(nil), // 20: relationalai.lqp.v1.Output + (*Export)(nil), // 21: relationalai.lqp.v1.Export + (*WhatIf)(nil), // 22: relationalai.lqp.v1.WhatIf + (*Abort)(nil), // 23: relationalai.lqp.v1.Abort + nil, // 24: relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntry + (*FragmentId)(nil), // 25: relationalai.lqp.v1.FragmentId + (*Fragment)(nil), // 26: relationalai.lqp.v1.Fragment + (*RelationId)(nil), // 27: relationalai.lqp.v1.RelationId + (*CSVConfig)(nil), // 28: relationalai.lqp.v1.CSVConfig + (*IcebergLocator)(nil), // 29: relationalai.lqp.v1.IcebergLocator + (*IcebergCatalogConfig)(nil), // 30: relationalai.lqp.v1.IcebergCatalogConfig } var file_relationalai_lqp_v1_transactions_proto_depIdxs = []int32{ - 5, // 0: relationalai.lqp.v1.Transaction.epochs:type_name -> relationalai.lqp.v1.Epoch + 6, // 0: relationalai.lqp.v1.Transaction.epochs:type_name -> relationalai.lqp.v1.Epoch 2, // 1: relationalai.lqp.v1.Transaction.configure:type_name -> relationalai.lqp.v1.Configure - 4, // 2: relationalai.lqp.v1.Transaction.sync:type_name -> relationalai.lqp.v1.Sync + 5, // 2: relationalai.lqp.v1.Transaction.sync:type_name -> relationalai.lqp.v1.Sync 3, // 3: relationalai.lqp.v1.Configure.ivm_config:type_name -> relationalai.lqp.v1.IVMConfig - 0, // 4: relationalai.lqp.v1.IVMConfig.level:type_name -> relationalai.lqp.v1.MaintenanceLevel - 24, // 5: relationalai.lqp.v1.Sync.fragments:type_name -> relationalai.lqp.v1.FragmentId - 6, // 6: relationalai.lqp.v1.Epoch.writes:type_name -> relationalai.lqp.v1.Write - 17, // 7: relationalai.lqp.v1.Epoch.reads:type_name -> relationalai.lqp.v1.Read - 7, // 8: relationalai.lqp.v1.Write.define:type_name -> relationalai.lqp.v1.Define - 8, // 9: relationalai.lqp.v1.Write.undefine:type_name -> relationalai.lqp.v1.Undefine - 9, // 10: relationalai.lqp.v1.Write.context:type_name -> relationalai.lqp.v1.Context - 11, // 11: relationalai.lqp.v1.Write.snapshot:type_name -> relationalai.lqp.v1.Snapshot - 25, // 12: relationalai.lqp.v1.Define.fragment:type_name -> relationalai.lqp.v1.Fragment - 24, // 13: relationalai.lqp.v1.Undefine.fragment_id:type_name -> relationalai.lqp.v1.FragmentId - 26, // 14: relationalai.lqp.v1.Context.relations:type_name -> relationalai.lqp.v1.RelationId - 26, // 15: relationalai.lqp.v1.SnapshotMapping.source_relation:type_name -> relationalai.lqp.v1.RelationId - 10, // 16: relationalai.lqp.v1.Snapshot.mappings:type_name -> relationalai.lqp.v1.SnapshotMapping - 15, // 17: relationalai.lqp.v1.ExportCSVConfig.csv_source:type_name -> relationalai.lqp.v1.ExportCSVSource - 27, // 18: relationalai.lqp.v1.ExportCSVConfig.csv_config:type_name -> relationalai.lqp.v1.CSVConfig - 13, // 19: relationalai.lqp.v1.ExportCSVConfig.data_columns:type_name -> relationalai.lqp.v1.ExportCSVColumn - 26, // 20: relationalai.lqp.v1.ExportCSVColumn.column_data:type_name -> relationalai.lqp.v1.RelationId - 13, // 21: relationalai.lqp.v1.ExportCSVColumns.columns:type_name -> relationalai.lqp.v1.ExportCSVColumn - 14, // 22: relationalai.lqp.v1.ExportCSVSource.gnf_columns:type_name -> relationalai.lqp.v1.ExportCSVColumns - 26, // 23: relationalai.lqp.v1.ExportCSVSource.table_def:type_name -> relationalai.lqp.v1.RelationId - 28, // 24: relationalai.lqp.v1.ExportIcebergConfig.locator:type_name -> relationalai.lqp.v1.IcebergLocator - 29, // 25: relationalai.lqp.v1.ExportIcebergConfig.config:type_name -> relationalai.lqp.v1.IcebergCatalogConfig - 26, // 26: relationalai.lqp.v1.ExportIcebergConfig.table_def:type_name -> relationalai.lqp.v1.RelationId - 23, // 27: relationalai.lqp.v1.ExportIcebergConfig.table_properties:type_name -> relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntry - 18, // 28: relationalai.lqp.v1.Read.demand:type_name -> relationalai.lqp.v1.Demand - 19, // 29: relationalai.lqp.v1.Read.output:type_name -> relationalai.lqp.v1.Output - 21, // 30: relationalai.lqp.v1.Read.what_if:type_name -> relationalai.lqp.v1.WhatIf - 22, // 31: relationalai.lqp.v1.Read.abort:type_name -> relationalai.lqp.v1.Abort - 20, // 32: relationalai.lqp.v1.Read.export:type_name -> relationalai.lqp.v1.Export - 26, // 33: relationalai.lqp.v1.Demand.relation_id:type_name -> relationalai.lqp.v1.RelationId - 26, // 34: relationalai.lqp.v1.Output.relation_id:type_name -> relationalai.lqp.v1.RelationId - 12, // 35: relationalai.lqp.v1.Export.csv_config:type_name -> relationalai.lqp.v1.ExportCSVConfig - 16, // 36: relationalai.lqp.v1.Export.iceberg_config:type_name -> relationalai.lqp.v1.ExportIcebergConfig - 5, // 37: relationalai.lqp.v1.WhatIf.epoch:type_name -> relationalai.lqp.v1.Epoch - 26, // 38: relationalai.lqp.v1.Abort.relation_id:type_name -> relationalai.lqp.v1.RelationId - 39, // [39:39] is the sub-list for method output_type - 39, // [39:39] is the sub-list for method input_type - 39, // [39:39] is the sub-list for extension type_name - 39, // [39:39] is the sub-list for extension extendee - 0, // [0:39] is the sub-list for field type_name + 4, // 4: relationalai.lqp.v1.Configure.ast_size_limit:type_name -> relationalai.lqp.v1.ASTSizeLimit + 0, // 5: relationalai.lqp.v1.IVMConfig.level:type_name -> relationalai.lqp.v1.MaintenanceLevel + 25, // 6: relationalai.lqp.v1.Sync.fragments:type_name -> relationalai.lqp.v1.FragmentId + 7, // 7: relationalai.lqp.v1.Epoch.writes:type_name -> relationalai.lqp.v1.Write + 18, // 8: relationalai.lqp.v1.Epoch.reads:type_name -> relationalai.lqp.v1.Read + 8, // 9: relationalai.lqp.v1.Write.define:type_name -> relationalai.lqp.v1.Define + 9, // 10: relationalai.lqp.v1.Write.undefine:type_name -> relationalai.lqp.v1.Undefine + 10, // 11: relationalai.lqp.v1.Write.context:type_name -> relationalai.lqp.v1.Context + 12, // 12: relationalai.lqp.v1.Write.snapshot:type_name -> relationalai.lqp.v1.Snapshot + 26, // 13: relationalai.lqp.v1.Define.fragment:type_name -> relationalai.lqp.v1.Fragment + 25, // 14: relationalai.lqp.v1.Undefine.fragment_id:type_name -> relationalai.lqp.v1.FragmentId + 27, // 15: relationalai.lqp.v1.Context.relations:type_name -> relationalai.lqp.v1.RelationId + 27, // 16: relationalai.lqp.v1.SnapshotMapping.source_relation:type_name -> relationalai.lqp.v1.RelationId + 11, // 17: relationalai.lqp.v1.Snapshot.mappings:type_name -> relationalai.lqp.v1.SnapshotMapping + 16, // 18: relationalai.lqp.v1.ExportCSVConfig.csv_source:type_name -> relationalai.lqp.v1.ExportCSVSource + 28, // 19: relationalai.lqp.v1.ExportCSVConfig.csv_config:type_name -> relationalai.lqp.v1.CSVConfig + 14, // 20: relationalai.lqp.v1.ExportCSVConfig.data_columns:type_name -> relationalai.lqp.v1.ExportCSVColumn + 27, // 21: relationalai.lqp.v1.ExportCSVColumn.column_data:type_name -> relationalai.lqp.v1.RelationId + 14, // 22: relationalai.lqp.v1.ExportCSVColumns.columns:type_name -> relationalai.lqp.v1.ExportCSVColumn + 15, // 23: relationalai.lqp.v1.ExportCSVSource.gnf_columns:type_name -> relationalai.lqp.v1.ExportCSVColumns + 27, // 24: relationalai.lqp.v1.ExportCSVSource.table_def:type_name -> relationalai.lqp.v1.RelationId + 29, // 25: relationalai.lqp.v1.ExportIcebergConfig.locator:type_name -> relationalai.lqp.v1.IcebergLocator + 30, // 26: relationalai.lqp.v1.ExportIcebergConfig.config:type_name -> relationalai.lqp.v1.IcebergCatalogConfig + 27, // 27: relationalai.lqp.v1.ExportIcebergConfig.table_def:type_name -> relationalai.lqp.v1.RelationId + 24, // 28: relationalai.lqp.v1.ExportIcebergConfig.table_properties:type_name -> relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntry + 19, // 29: relationalai.lqp.v1.Read.demand:type_name -> relationalai.lqp.v1.Demand + 20, // 30: relationalai.lqp.v1.Read.output:type_name -> relationalai.lqp.v1.Output + 22, // 31: relationalai.lqp.v1.Read.what_if:type_name -> relationalai.lqp.v1.WhatIf + 23, // 32: relationalai.lqp.v1.Read.abort:type_name -> relationalai.lqp.v1.Abort + 21, // 33: relationalai.lqp.v1.Read.export:type_name -> relationalai.lqp.v1.Export + 27, // 34: relationalai.lqp.v1.Demand.relation_id:type_name -> relationalai.lqp.v1.RelationId + 27, // 35: relationalai.lqp.v1.Output.relation_id:type_name -> relationalai.lqp.v1.RelationId + 13, // 36: relationalai.lqp.v1.Export.csv_config:type_name -> relationalai.lqp.v1.ExportCSVConfig + 17, // 37: relationalai.lqp.v1.Export.iceberg_config:type_name -> relationalai.lqp.v1.ExportIcebergConfig + 6, // 38: relationalai.lqp.v1.WhatIf.epoch:type_name -> relationalai.lqp.v1.Epoch + 27, // 39: relationalai.lqp.v1.Abort.relation_id:type_name -> relationalai.lqp.v1.RelationId + 40, // [40:40] is the sub-list for method output_type + 40, // [40:40] is the sub-list for method input_type + 40, // [40:40] is the sub-list for extension type_name + 40, // [40:40] is the sub-list for extension extendee + 0, // [0:40] is the sub-list for field type_name } func init() { file_relationalai_lqp_v1_transactions_proto_init() } @@ -1868,26 +1940,26 @@ func file_relationalai_lqp_v1_transactions_proto_init() { file_relationalai_lqp_v1_fragments_proto_init() file_relationalai_lqp_v1_logic_proto_init() file_relationalai_lqp_v1_transactions_proto_msgTypes[0].OneofWrappers = []any{} - file_relationalai_lqp_v1_transactions_proto_msgTypes[5].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[6].OneofWrappers = []any{ (*Write_Define)(nil), (*Write_Undefine)(nil), (*Write_Context)(nil), (*Write_Snapshot)(nil), } - file_relationalai_lqp_v1_transactions_proto_msgTypes[11].OneofWrappers = []any{} - file_relationalai_lqp_v1_transactions_proto_msgTypes[14].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[12].OneofWrappers = []any{} + file_relationalai_lqp_v1_transactions_proto_msgTypes[15].OneofWrappers = []any{ (*ExportCSVSource_GnfColumns)(nil), (*ExportCSVSource_TableDef)(nil), } - file_relationalai_lqp_v1_transactions_proto_msgTypes[15].OneofWrappers = []any{} - file_relationalai_lqp_v1_transactions_proto_msgTypes[16].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[16].OneofWrappers = []any{} + file_relationalai_lqp_v1_transactions_proto_msgTypes[17].OneofWrappers = []any{ (*Read_Demand)(nil), (*Read_Output)(nil), (*Read_WhatIf)(nil), (*Read_Abort)(nil), (*Read_Export)(nil), } - file_relationalai_lqp_v1_transactions_proto_msgTypes[19].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[20].OneofWrappers = []any{ (*Export_CsvConfig)(nil), (*Export_IcebergConfig)(nil), } @@ -1897,7 +1969,7 @@ func file_relationalai_lqp_v1_transactions_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_relationalai_lqp_v1_transactions_proto_rawDesc), len(file_relationalai_lqp_v1_transactions_proto_rawDesc)), NumEnums: 1, - NumMessages: 23, + NumMessages: 24, NumExtensions: 0, NumServices: 0, }, diff --git a/sdks/go/src/parser.go b/sdks/go/src/parser.go index eadde440..70a8830f 100644 --- a/sdks/go/src/parser.go +++ b/sdks/go/src/parser.go @@ -858,8 +858,10 @@ func (p *Parser) construct_betree_info(key_types []*pb.Type, value_types []*pb.T func (p *Parser) default_configure() *pb.Configure { _t2263 := &pb.IVMConfig{Level: pb.MaintenanceLevel_MAINTENANCE_LEVEL_OFF} ivm_config := _t2263 - _t2264 := &pb.Configure{SemanticsVersion: 0, IvmConfig: ivm_config} - return _t2264 + _t2264 := &pb.ASTSizeLimit{WarningLimit: 0, ExceptionLimit: 0} + ast_size_limit := _t2264 + _t2265 := &pb.Configure{SemanticsVersion: 0, IvmConfig: ivm_config, AstSizeLimit: ast_size_limit} + return _t2265 } func (p *Parser) construct_configure(config_dict [][]interface{}) *pb.Configure { @@ -881,66 +883,72 @@ func (p *Parser) construct_configure(config_dict [][]interface{}) *pb.Configure } } } - _t2265 := &pb.IVMConfig{Level: maintenance_level} - ivm_config := _t2265 - _t2266 := p._extract_value_int64(dictGetValue(config, "semantics_version"), 0) - semantics_version := _t2266 - _t2267 := &pb.Configure{SemanticsVersion: semantics_version, IvmConfig: ivm_config} - return _t2267 + _t2266 := &pb.IVMConfig{Level: maintenance_level} + ivm_config := _t2266 + _t2267 := p._extract_value_int64(dictGetValue(config, "semantics_version"), 0) + semantics_version := _t2267 + _t2268 := p._extract_value_int64(dictGetValue(config, "ast_size.warning_limit"), 0) + warning_limit := _t2268 + _t2269 := p._extract_value_int64(dictGetValue(config, "ast_size.exception_limit"), 0) + exception_limit := _t2269 + _t2270 := &pb.ASTSizeLimit{WarningLimit: warning_limit, ExceptionLimit: exception_limit} + ast_size_limit := _t2270 + _t2271 := &pb.Configure{SemanticsVersion: semantics_version, IvmConfig: ivm_config, AstSizeLimit: ast_size_limit} + return _t2271 } func (p *Parser) construct_export_csv_config(path string, columns []*pb.ExportCSVColumn, config_dict [][]interface{}) *pb.ExportCSVConfig { config := dictFromList(config_dict) - _t2268 := p._extract_value_int64(dictGetValue(config, "partition_size"), 0) - partition_size := _t2268 - _t2269 := p._extract_value_string(dictGetValue(config, "compression"), "") - compression := _t2269 - _t2270 := p._extract_value_boolean(dictGetValue(config, "syntax_header_row"), true) - syntax_header_row := _t2270 - _t2271 := p._extract_value_string(dictGetValue(config, "syntax_missing_string"), "") - syntax_missing_string := _t2271 - _t2272 := p._extract_value_string(dictGetValue(config, "syntax_delim"), ",") - syntax_delim := _t2272 - _t2273 := p._extract_value_string(dictGetValue(config, "syntax_quotechar"), "\"") - syntax_quotechar := _t2273 - _t2274 := p._extract_value_string(dictGetValue(config, "syntax_escapechar"), "\\") - syntax_escapechar := _t2274 - _t2275 := &pb.ExportCSVConfig{Path: path, DataColumns: columns, PartitionSize: ptr(partition_size), Compression: ptr(compression), SyntaxHeaderRow: ptr(syntax_header_row), SyntaxMissingString: ptr(syntax_missing_string), SyntaxDelim: ptr(syntax_delim), SyntaxQuotechar: ptr(syntax_quotechar), SyntaxEscapechar: ptr(syntax_escapechar)} - return _t2275 + _t2272 := p._extract_value_int64(dictGetValue(config, "partition_size"), 0) + partition_size := _t2272 + _t2273 := p._extract_value_string(dictGetValue(config, "compression"), "") + compression := _t2273 + _t2274 := p._extract_value_boolean(dictGetValue(config, "syntax_header_row"), true) + syntax_header_row := _t2274 + _t2275 := p._extract_value_string(dictGetValue(config, "syntax_missing_string"), "") + syntax_missing_string := _t2275 + _t2276 := p._extract_value_string(dictGetValue(config, "syntax_delim"), ",") + syntax_delim := _t2276 + _t2277 := p._extract_value_string(dictGetValue(config, "syntax_quotechar"), "\"") + syntax_quotechar := _t2277 + _t2278 := p._extract_value_string(dictGetValue(config, "syntax_escapechar"), "\\") + syntax_escapechar := _t2278 + _t2279 := &pb.ExportCSVConfig{Path: path, DataColumns: columns, PartitionSize: ptr(partition_size), Compression: ptr(compression), SyntaxHeaderRow: ptr(syntax_header_row), SyntaxMissingString: ptr(syntax_missing_string), SyntaxDelim: ptr(syntax_delim), SyntaxQuotechar: ptr(syntax_quotechar), SyntaxEscapechar: ptr(syntax_escapechar)} + return _t2279 } func (p *Parser) construct_export_csv_config_with_location(location []interface{}, csv_source *pb.ExportCSVSource, csv_config *pb.CSVConfig) *pb.ExportCSVConfig { - _t2276 := &pb.ExportCSVConfig{Path: location[0].(string), TransactionOutputName: location[1].(string), CsvSource: csv_source, CsvConfig: csv_config} - return _t2276 + _t2280 := &pb.ExportCSVConfig{Path: location[0].(string), TransactionOutputName: location[1].(string), CsvSource: csv_source, CsvConfig: csv_config} + return _t2280 } func (p *Parser) construct_iceberg_catalog_config(catalog_uri string, scope_opt *string, property_pairs [][]interface{}, auth_property_pairs [][]interface{}) *pb.IcebergCatalogConfig { props := stringMapFromPairs(property_pairs) auth_props := stringMapFromPairs(auth_property_pairs) - _t2277 := &pb.IcebergCatalogConfig{CatalogUri: catalog_uri, Scope: ptr(deref(scope_opt, "")), Properties: props, AuthProperties: auth_props} - return _t2277 + _t2281 := &pb.IcebergCatalogConfig{CatalogUri: catalog_uri, Scope: ptr(deref(scope_opt, "")), Properties: props, AuthProperties: auth_props} + return _t2281 } func (p *Parser) construct_iceberg_data(locator *pb.IcebergLocator, config *pb.IcebergCatalogConfig, columns []*pb.GNFColumn, from_snapshot_opt *string, to_snapshot_opt *string, returns_delta bool) *pb.IcebergData { - _t2278 := &pb.IcebergData{Locator: locator, Config: config, Columns: columns, FromSnapshot: ptr(deref(from_snapshot_opt, "")), ToSnapshot: ptr(deref(to_snapshot_opt, "")), ReturnsDelta: returns_delta} - return _t2278 + _t2282 := &pb.IcebergData{Locator: locator, Config: config, Columns: columns, FromSnapshot: ptr(deref(from_snapshot_opt, "")), ToSnapshot: ptr(deref(to_snapshot_opt, "")), ReturnsDelta: returns_delta} + return _t2282 } func (p *Parser) construct_export_iceberg_config_full(locator *pb.IcebergLocator, config *pb.IcebergCatalogConfig, table_def *pb.RelationId, table_property_pairs [][]interface{}, config_dict [][]interface{}) *pb.ExportIcebergConfig { - _t2279 := config_dict + _t2283 := config_dict if config_dict == nil { - _t2279 = [][]interface{}{} - } - cfg := dictFromList(_t2279) - _t2280 := p._extract_value_string(dictGetValue(cfg, "prefix"), "") - prefix := _t2280 - _t2281 := p._extract_value_int64(dictGetValue(cfg, "target_file_size_bytes"), 0) - target_file_size_bytes := _t2281 - _t2282 := p._extract_value_string(dictGetValue(cfg, "compression"), "") - compression := _t2282 + _t2283 = [][]interface{}{} + } + cfg := dictFromList(_t2283) + _t2284 := p._extract_value_string(dictGetValue(cfg, "prefix"), "") + prefix := _t2284 + _t2285 := p._extract_value_int64(dictGetValue(cfg, "target_file_size_bytes"), 0) + target_file_size_bytes := _t2285 + _t2286 := p._extract_value_string(dictGetValue(cfg, "compression"), "") + compression := _t2286 table_props := stringMapFromPairs(table_property_pairs) - _t2283 := &pb.ExportIcebergConfig{Locator: locator, Config: config, TableDef: table_def, Prefix: ptr(prefix), TargetFileSizeBytes: ptr(target_file_size_bytes), Compression: compression, TableProperties: table_props} - return _t2283 + _t2287 := &pb.ExportIcebergConfig{Locator: locator, Config: config, TableDef: table_def, Prefix: ptr(prefix), TargetFileSizeBytes: ptr(target_file_size_bytes), Compression: compression, TableProperties: table_props} + return _t2287 } // --- Parse functions --- diff --git a/sdks/go/src/pretty.go b/sdks/go/src/pretty.go index f9018ec0..d316ae17 100644 --- a/sdks/go/src/pretty.go +++ b/sdks/go/src/pretty.go @@ -418,135 +418,143 @@ func (p *PrettyPrinter) deconstruct_configure(msg *pb.Configure) [][]interface{} } _t1856 := p._make_value_int64(msg.GetSemanticsVersion()) result = append(result, []interface{}{"semantics_version", _t1856}) + if msg.GetAstSizeLimit().GetWarningLimit() != 0 { + _t1857 := p._make_value_int64(msg.GetAstSizeLimit().GetWarningLimit()) + result = append(result, []interface{}{"ast_size.warning_limit", _t1857}) + } + if msg.GetAstSizeLimit().GetExceptionLimit() != 0 { + _t1858 := p._make_value_int64(msg.GetAstSizeLimit().GetExceptionLimit()) + result = append(result, []interface{}{"ast_size.exception_limit", _t1858}) + } return listSort(result) } func (p *PrettyPrinter) deconstruct_csv_config(msg *pb.CSVConfig) [][]interface{} { result := [][]interface{}{} - _t1857 := p._make_value_int32(msg.GetHeaderRow()) - result = append(result, []interface{}{"csv_header_row", _t1857}) - _t1858 := p._make_value_int64(msg.GetSkip()) - result = append(result, []interface{}{"csv_skip", _t1858}) + _t1859 := p._make_value_int32(msg.GetHeaderRow()) + result = append(result, []interface{}{"csv_header_row", _t1859}) + _t1860 := p._make_value_int64(msg.GetSkip()) + result = append(result, []interface{}{"csv_skip", _t1860}) if msg.GetNewLine() != "" { - _t1859 := p._make_value_string(msg.GetNewLine()) - result = append(result, []interface{}{"csv_new_line", _t1859}) - } - _t1860 := p._make_value_string(msg.GetDelimiter()) - result = append(result, []interface{}{"csv_delimiter", _t1860}) - _t1861 := p._make_value_string(msg.GetQuotechar()) - result = append(result, []interface{}{"csv_quotechar", _t1861}) - _t1862 := p._make_value_string(msg.GetEscapechar()) - result = append(result, []interface{}{"csv_escapechar", _t1862}) + _t1861 := p._make_value_string(msg.GetNewLine()) + result = append(result, []interface{}{"csv_new_line", _t1861}) + } + _t1862 := p._make_value_string(msg.GetDelimiter()) + result = append(result, []interface{}{"csv_delimiter", _t1862}) + _t1863 := p._make_value_string(msg.GetQuotechar()) + result = append(result, []interface{}{"csv_quotechar", _t1863}) + _t1864 := p._make_value_string(msg.GetEscapechar()) + result = append(result, []interface{}{"csv_escapechar", _t1864}) if msg.GetComment() != "" { - _t1863 := p._make_value_string(msg.GetComment()) - result = append(result, []interface{}{"csv_comment", _t1863}) + _t1865 := p._make_value_string(msg.GetComment()) + result = append(result, []interface{}{"csv_comment", _t1865}) } for _, missing_string := range msg.GetMissingStrings() { - _t1864 := p._make_value_string(missing_string) - result = append(result, []interface{}{"csv_missing_strings", _t1864}) - } - _t1865 := p._make_value_string(msg.GetDecimalSeparator()) - result = append(result, []interface{}{"csv_decimal_separator", _t1865}) - _t1866 := p._make_value_string(msg.GetEncoding()) - result = append(result, []interface{}{"csv_encoding", _t1866}) - _t1867 := p._make_value_string(msg.GetCompression()) - result = append(result, []interface{}{"csv_compression", _t1867}) + _t1866 := p._make_value_string(missing_string) + result = append(result, []interface{}{"csv_missing_strings", _t1866}) + } + _t1867 := p._make_value_string(msg.GetDecimalSeparator()) + result = append(result, []interface{}{"csv_decimal_separator", _t1867}) + _t1868 := p._make_value_string(msg.GetEncoding()) + result = append(result, []interface{}{"csv_encoding", _t1868}) + _t1869 := p._make_value_string(msg.GetCompression()) + result = append(result, []interface{}{"csv_compression", _t1869}) if msg.GetPartitionSizeMb() != 0 { - _t1868 := p._make_value_int64(msg.GetPartitionSizeMb()) - result = append(result, []interface{}{"csv_partition_size_mb", _t1868}) + _t1870 := p._make_value_int64(msg.GetPartitionSizeMb()) + result = append(result, []interface{}{"csv_partition_size_mb", _t1870}) } return listSort(result) } func (p *PrettyPrinter) deconstruct_csv_storage_integration_optional(msg *pb.CSVConfig) [][]interface{} { - var _t1869 interface{} + var _t1871 interface{} if !(hasProtoField(msg, "storage_integration")) { return nil } - _ = _t1869 + _ = _t1871 si := msg.GetStorageIntegration() result := [][]interface{}{} if si.GetProvider() != "" { - _t1870 := p._make_value_string(si.GetProvider()) - result = append(result, []interface{}{"provider", _t1870}) + _t1872 := p._make_value_string(si.GetProvider()) + result = append(result, []interface{}{"provider", _t1872}) } if si.GetAzureSasToken() != "" { - _t1871 := p._make_value_string("***") - result = append(result, []interface{}{"azure_sas_token", _t1871}) + _t1873 := p._make_value_string("***") + result = append(result, []interface{}{"azure_sas_token", _t1873}) } if si.GetS3Region() != "" { - _t1872 := p._make_value_string(si.GetS3Region()) - result = append(result, []interface{}{"s3_region", _t1872}) + _t1874 := p._make_value_string(si.GetS3Region()) + result = append(result, []interface{}{"s3_region", _t1874}) } if si.GetS3AccessKeyId() != "" { - _t1873 := p._make_value_string("***") - result = append(result, []interface{}{"s3_access_key_id", _t1873}) + _t1875 := p._make_value_string("***") + result = append(result, []interface{}{"s3_access_key_id", _t1875}) } if si.GetS3SecretAccessKey() != "" { - _t1874 := p._make_value_string("***") - result = append(result, []interface{}{"s3_secret_access_key", _t1874}) + _t1876 := p._make_value_string("***") + result = append(result, []interface{}{"s3_secret_access_key", _t1876}) } return listSort(result) } func (p *PrettyPrinter) deconstruct_betree_info_config(msg *pb.BeTreeInfo) [][]interface{} { result := [][]interface{}{} - _t1875 := p._make_value_float64(msg.GetStorageConfig().GetEpsilon()) - result = append(result, []interface{}{"betree_config_epsilon", _t1875}) - _t1876 := p._make_value_int64(msg.GetStorageConfig().GetMaxPivots()) - result = append(result, []interface{}{"betree_config_max_pivots", _t1876}) - _t1877 := p._make_value_int64(msg.GetStorageConfig().GetMaxDeltas()) - result = append(result, []interface{}{"betree_config_max_deltas", _t1877}) - _t1878 := p._make_value_int64(msg.GetStorageConfig().GetMaxLeaf()) - result = append(result, []interface{}{"betree_config_max_leaf", _t1878}) + _t1877 := p._make_value_float64(msg.GetStorageConfig().GetEpsilon()) + result = append(result, []interface{}{"betree_config_epsilon", _t1877}) + _t1878 := p._make_value_int64(msg.GetStorageConfig().GetMaxPivots()) + result = append(result, []interface{}{"betree_config_max_pivots", _t1878}) + _t1879 := p._make_value_int64(msg.GetStorageConfig().GetMaxDeltas()) + result = append(result, []interface{}{"betree_config_max_deltas", _t1879}) + _t1880 := p._make_value_int64(msg.GetStorageConfig().GetMaxLeaf()) + result = append(result, []interface{}{"betree_config_max_leaf", _t1880}) if hasProtoField(msg.GetRelationLocator(), "root_pageid") { if msg.GetRelationLocator().GetRootPageid() != nil { - _t1879 := p._make_value_uint128(msg.GetRelationLocator().GetRootPageid()) - result = append(result, []interface{}{"betree_locator_root_pageid", _t1879}) + _t1881 := p._make_value_uint128(msg.GetRelationLocator().GetRootPageid()) + result = append(result, []interface{}{"betree_locator_root_pageid", _t1881}) } } if hasProtoField(msg.GetRelationLocator(), "inline_data") { if msg.GetRelationLocator().GetInlineData() != nil { - _t1880 := p._make_value_string(string(msg.GetRelationLocator().GetInlineData())) - result = append(result, []interface{}{"betree_locator_inline_data", _t1880}) + _t1882 := p._make_value_string(string(msg.GetRelationLocator().GetInlineData())) + result = append(result, []interface{}{"betree_locator_inline_data", _t1882}) } } - _t1881 := p._make_value_int64(msg.GetRelationLocator().GetElementCount()) - result = append(result, []interface{}{"betree_locator_element_count", _t1881}) - _t1882 := p._make_value_int64(msg.GetRelationLocator().GetTreeHeight()) - result = append(result, []interface{}{"betree_locator_tree_height", _t1882}) + _t1883 := p._make_value_int64(msg.GetRelationLocator().GetElementCount()) + result = append(result, []interface{}{"betree_locator_element_count", _t1883}) + _t1884 := p._make_value_int64(msg.GetRelationLocator().GetTreeHeight()) + result = append(result, []interface{}{"betree_locator_tree_height", _t1884}) return listSort(result) } func (p *PrettyPrinter) deconstruct_export_csv_config(msg *pb.ExportCSVConfig) [][]interface{} { result := [][]interface{}{} if msg.PartitionSize != nil { - _t1883 := p._make_value_int64(*msg.PartitionSize) - result = append(result, []interface{}{"partition_size", _t1883}) + _t1885 := p._make_value_int64(*msg.PartitionSize) + result = append(result, []interface{}{"partition_size", _t1885}) } if msg.Compression != nil { - _t1884 := p._make_value_string(*msg.Compression) - result = append(result, []interface{}{"compression", _t1884}) + _t1886 := p._make_value_string(*msg.Compression) + result = append(result, []interface{}{"compression", _t1886}) } if msg.SyntaxHeaderRow != nil { - _t1885 := p._make_value_boolean(*msg.SyntaxHeaderRow) - result = append(result, []interface{}{"syntax_header_row", _t1885}) + _t1887 := p._make_value_boolean(*msg.SyntaxHeaderRow) + result = append(result, []interface{}{"syntax_header_row", _t1887}) } if msg.SyntaxMissingString != nil { - _t1886 := p._make_value_string(*msg.SyntaxMissingString) - result = append(result, []interface{}{"syntax_missing_string", _t1886}) + _t1888 := p._make_value_string(*msg.SyntaxMissingString) + result = append(result, []interface{}{"syntax_missing_string", _t1888}) } if msg.SyntaxDelim != nil { - _t1887 := p._make_value_string(*msg.SyntaxDelim) - result = append(result, []interface{}{"syntax_delim", _t1887}) + _t1889 := p._make_value_string(*msg.SyntaxDelim) + result = append(result, []interface{}{"syntax_delim", _t1889}) } if msg.SyntaxQuotechar != nil { - _t1888 := p._make_value_string(*msg.SyntaxQuotechar) - result = append(result, []interface{}{"syntax_quotechar", _t1888}) + _t1890 := p._make_value_string(*msg.SyntaxQuotechar) + result = append(result, []interface{}{"syntax_quotechar", _t1890}) } if msg.SyntaxEscapechar != nil { - _t1889 := p._make_value_string(*msg.SyntaxEscapechar) - result = append(result, []interface{}{"syntax_escapechar", _t1889}) + _t1891 := p._make_value_string(*msg.SyntaxEscapechar) + result = append(result, []interface{}{"syntax_escapechar", _t1891}) } return listSort(result) } @@ -556,51 +564,51 @@ func (p *PrettyPrinter) mask_secret_value(pair []interface{}) string { } func (p *PrettyPrinter) deconstruct_iceberg_catalog_config_scope_optional(msg *pb.IcebergCatalogConfig) *string { - var _t1890 interface{} + var _t1892 interface{} if *msg.Scope != "" { return ptr(*msg.Scope) } - _ = _t1890 + _ = _t1892 return nil } func (p *PrettyPrinter) deconstruct_iceberg_data_from_snapshot_optional(msg *pb.IcebergData) *string { - var _t1891 interface{} + var _t1893 interface{} if *msg.FromSnapshot != "" { return ptr(*msg.FromSnapshot) } - _ = _t1891 + _ = _t1893 return nil } func (p *PrettyPrinter) deconstruct_iceberg_data_to_snapshot_optional(msg *pb.IcebergData) *string { - var _t1892 interface{} + var _t1894 interface{} if *msg.ToSnapshot != "" { return ptr(*msg.ToSnapshot) } - _ = _t1892 + _ = _t1894 return nil } func (p *PrettyPrinter) deconstruct_export_iceberg_config_optional(msg *pb.ExportIcebergConfig) [][]interface{} { result := [][]interface{}{} if *msg.Prefix != "" { - _t1893 := p._make_value_string(*msg.Prefix) - result = append(result, []interface{}{"prefix", _t1893}) + _t1895 := p._make_value_string(*msg.Prefix) + result = append(result, []interface{}{"prefix", _t1895}) } if *msg.TargetFileSizeBytes != 0 { - _t1894 := p._make_value_int64(*msg.TargetFileSizeBytes) - result = append(result, []interface{}{"target_file_size_bytes", _t1894}) + _t1896 := p._make_value_int64(*msg.TargetFileSizeBytes) + result = append(result, []interface{}{"target_file_size_bytes", _t1896}) } if msg.GetCompression() != "" { - _t1895 := p._make_value_string(msg.GetCompression()) - result = append(result, []interface{}{"compression", _t1895}) + _t1897 := p._make_value_string(msg.GetCompression()) + result = append(result, []interface{}{"compression", _t1897}) } - var _t1896 interface{} + var _t1898 interface{} if int64(len(result)) == 0 { return nil } - _ = _t1896 + _ = _t1898 return listSort(result) } @@ -611,11 +619,11 @@ func (p *PrettyPrinter) deconstruct_relation_id_string(msg *pb.RelationId) strin func (p *PrettyPrinter) deconstruct_relation_id_uint128(msg *pb.RelationId) *pb.UInt128Value { name := p.relationIdToString(msg) - var _t1897 interface{} + var _t1899 interface{} if name == nil { return p.relationIdToUint128(msg) } - _ = _t1897 + _ = _t1899 return nil } @@ -5301,8 +5309,8 @@ func (p *PrettyPrinter) pretty_debug_info(msg *pb.DebugInfo) interface{} { for _idx, _rid := range msg.GetIds() { p.newline() p.write("(") - _t1898 := &pb.UInt128Value{Low: _rid.GetIdLow(), High: _rid.GetIdHigh()} - p.pprintDispatch(_t1898) + _t1900 := &pb.UInt128Value{Low: _rid.GetIdLow(), High: _rid.GetIdHigh()} + p.pprintDispatch(_t1900) p.write(" ") p.write(p.formatStringValue(msg.GetOrigNames()[_idx])) p.write(")") @@ -5481,6 +5489,20 @@ func (p *PrettyPrinter) pretty_u_int128_value(msg *pb.UInt128Value) interface{} return nil } +func (p *PrettyPrinter) pretty_ast_size_limit(msg *pb.ASTSizeLimit) interface{} { + p.write("(ast_size_limit") + p.indentSexp() + p.newline() + p.write(":warning_limit ") + p.write(fmt.Sprintf("%d", msg.GetWarningLimit())) + p.newline() + p.write(":exception_limit ") + p.write(fmt.Sprintf("%d", msg.GetExceptionLimit())) + p.write(")") + p.dedent() + return nil +} + func (p *PrettyPrinter) pretty_export_csv_columns(msg *pb.ExportCSVColumns) interface{} { p.write("(export_csv_columns") p.indentSexp() @@ -5772,6 +5794,8 @@ func (p *PrettyPrinter) pprintDispatch(msg interface{}) { p.pretty_storage_integration(m) case *pb.UInt128Value: p.pretty_u_int128_value(m) + case *pb.ASTSizeLimit: + p.pretty_ast_size_limit(m) case *pb.ExportCSVColumns: p.pretty_export_csv_columns(m) case *pb.IVMConfig: diff --git a/sdks/julia/LogicalQueryProtocol.jl/src/gen/relationalai/lqp/v1/transactions_pb.jl b/sdks/julia/LogicalQueryProtocol.jl/src/gen/relationalai/lqp/v1/transactions_pb.jl index 58e7521b..4a7d5f37 100644 --- a/sdks/julia/LogicalQueryProtocol.jl/src/gen/relationalai/lqp/v1/transactions_pb.jl +++ b/sdks/julia/LogicalQueryProtocol.jl/src/gen/relationalai/lqp/v1/transactions_pb.jl @@ -6,9 +6,9 @@ using ProtoBuf: OneOf using ProtoBuf.EnumX: @enumx export ExportIcebergConfig, ExportCSVColumn, Demand, Undefine, MaintenanceLevel, Define -export Context, Sync, SnapshotMapping, Abort, Output, ExportCSVColumns, IVMConfig, Snapshot -export ExportCSVSource, Configure, Write, ExportCSVConfig, Export, Epoch, Read, Transaction -export WhatIf +export Context, Sync, SnapshotMapping, Abort, Output, ASTSizeLimit, ExportCSVColumns +export IVMConfig, Snapshot, ExportCSVSource, Configure, Write, ExportCSVConfig, Export +export Epoch, Read, Transaction, WhatIf abstract type var"##Abstract#Transaction" end abstract type var"##Abstract#Epoch" end abstract type var"##Abstract#Read" end @@ -388,6 +388,43 @@ function PB._encoded_size(x::Output) return encoded_size end +struct ASTSizeLimit + warning_limit::Int64 + exception_limit::Int64 +end +ASTSizeLimit(;warning_limit = zero(Int64), exception_limit = zero(Int64)) = ASTSizeLimit(warning_limit, exception_limit) +PB.default_values(::Type{ASTSizeLimit}) = (;warning_limit = zero(Int64), exception_limit = zero(Int64)) +PB.field_numbers(::Type{ASTSizeLimit}) = (;warning_limit = 1, exception_limit = 2) + +function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:ASTSizeLimit}, _endpos::Int=0, _group::Bool=false) + warning_limit = zero(Int64) + exception_limit = zero(Int64) + while !PB.message_done(d, _endpos, _group) + field_number, wire_type = PB.decode_tag(d) + if field_number == 1 + warning_limit = PB.decode(d, Int64) + elseif field_number == 2 + exception_limit = PB.decode(d, Int64) + else + Base.skip(d, wire_type) + end + end + return ASTSizeLimit(warning_limit, exception_limit) +end + +function PB.encode(e::PB.AbstractProtoEncoder, x::ASTSizeLimit) + initpos = position(e.io) + x.warning_limit != zero(Int64) && PB.encode(e, 1, x.warning_limit) + x.exception_limit != zero(Int64) && PB.encode(e, 2, x.exception_limit) + return position(e.io) - initpos +end +function PB._encoded_size(x::ASTSizeLimit) + encoded_size = 0 + x.warning_limit != zero(Int64) && (encoded_size += PB._encoded_size(x.warning_limit, 1)) + x.exception_limit != zero(Int64) && (encoded_size += PB._encoded_size(x.exception_limit, 2)) + return encoded_size +end + struct ExportCSVColumns columns::Vector{ExportCSVColumn} end @@ -536,37 +573,43 @@ end struct Configure semantics_version::Int64 ivm_config::Union{Nothing,IVMConfig} + ast_size_limit::Union{Nothing,ASTSizeLimit} end -Configure(;semantics_version = zero(Int64), ivm_config = nothing) = Configure(semantics_version, ivm_config) -PB.default_values(::Type{Configure}) = (;semantics_version = zero(Int64), ivm_config = nothing) -PB.field_numbers(::Type{Configure}) = (;semantics_version = 1, ivm_config = 2) +Configure(;semantics_version = zero(Int64), ivm_config = nothing, ast_size_limit = nothing) = Configure(semantics_version, ivm_config, ast_size_limit) +PB.default_values(::Type{Configure}) = (;semantics_version = zero(Int64), ivm_config = nothing, ast_size_limit = nothing) +PB.field_numbers(::Type{Configure}) = (;semantics_version = 1, ivm_config = 2, ast_size_limit = 3) function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:Configure}, _endpos::Int=0, _group::Bool=false) semantics_version = zero(Int64) ivm_config = Ref{Union{Nothing,IVMConfig}}(nothing) + ast_size_limit = Ref{Union{Nothing,ASTSizeLimit}}(nothing) while !PB.message_done(d, _endpos, _group) field_number, wire_type = PB.decode_tag(d) if field_number == 1 semantics_version = PB.decode(d, Int64) elseif field_number == 2 PB.decode!(d, ivm_config) + elseif field_number == 3 + PB.decode!(d, ast_size_limit) else Base.skip(d, wire_type) end end - return Configure(semantics_version, ivm_config[]) + return Configure(semantics_version, ivm_config[], ast_size_limit[]) end function PB.encode(e::PB.AbstractProtoEncoder, x::Configure) initpos = position(e.io) x.semantics_version != zero(Int64) && PB.encode(e, 1, x.semantics_version) !isnothing(x.ivm_config) && PB.encode(e, 2, x.ivm_config) + !isnothing(x.ast_size_limit) && PB.encode(e, 3, x.ast_size_limit) return position(e.io) - initpos end function PB._encoded_size(x::Configure) encoded_size = 0 x.semantics_version != zero(Int64) && (encoded_size += PB._encoded_size(x.semantics_version, 1)) !isnothing(x.ivm_config) && (encoded_size += PB._encoded_size(x.ivm_config, 2)) + !isnothing(x.ast_size_limit) && (encoded_size += PB._encoded_size(x.ast_size_limit, 3)) return encoded_size end diff --git a/sdks/julia/LogicalQueryProtocol.jl/src/parser.jl b/sdks/julia/LogicalQueryProtocol.jl/src/parser.jl index e6f0cfa0..d93e2455 100644 --- a/sdks/julia/LogicalQueryProtocol.jl/src/parser.jl +++ b/sdks/julia/LogicalQueryProtocol.jl/src/parser.jl @@ -559,8 +559,10 @@ end function default_configure(parser::ParserState)::Proto.Configure _t2249 = Proto.IVMConfig(level=Proto.MaintenanceLevel.MAINTENANCE_LEVEL_OFF) ivm_config = _t2249 - _t2250 = Proto.Configure(semantics_version=0, ivm_config=ivm_config) - return _t2250 + _t2250 = Proto.ASTSizeLimit(warning_limit=0, exception_limit=0) + ast_size_limit = _t2250 + _t2251 = Proto.Configure(semantics_version=0, ivm_config=ivm_config, ast_size_limit=ast_size_limit) + return _t2251 end function construct_configure(parser::ParserState, config_dict::Vector{Tuple{String, Proto.Value}})::Proto.Configure @@ -582,62 +584,68 @@ function construct_configure(parser::ParserState, config_dict::Vector{Tuple{Stri end end end - _t2251 = Proto.IVMConfig(level=maintenance_level) - ivm_config = _t2251 - _t2252 = _extract_value_int64(parser, get(config, "semantics_version", nothing), 0) - semantics_version = _t2252 - _t2253 = Proto.Configure(semantics_version=semantics_version, ivm_config=ivm_config) - return _t2253 + _t2252 = Proto.IVMConfig(level=maintenance_level) + ivm_config = _t2252 + _t2253 = _extract_value_int64(parser, get(config, "semantics_version", nothing), 0) + semantics_version = _t2253 + _t2254 = _extract_value_int64(parser, get(config, "ast_size.warning_limit", nothing), 0) + warning_limit = _t2254 + _t2255 = _extract_value_int64(parser, get(config, "ast_size.exception_limit", nothing), 0) + exception_limit = _t2255 + _t2256 = Proto.ASTSizeLimit(warning_limit=warning_limit, exception_limit=exception_limit) + ast_size_limit = _t2256 + _t2257 = Proto.Configure(semantics_version=semantics_version, ivm_config=ivm_config, ast_size_limit=ast_size_limit) + return _t2257 end function construct_export_csv_config(parser::ParserState, path::String, columns::Vector{Proto.ExportCSVColumn}, config_dict::Vector{Tuple{String, Proto.Value}})::Proto.ExportCSVConfig config = Dict(config_dict) - _t2254 = _extract_value_int64(parser, get(config, "partition_size", nothing), 0) - partition_size = _t2254 - _t2255 = _extract_value_string(parser, get(config, "compression", nothing), "") - compression = _t2255 - _t2256 = _extract_value_boolean(parser, get(config, "syntax_header_row", nothing), true) - syntax_header_row = _t2256 - _t2257 = _extract_value_string(parser, get(config, "syntax_missing_string", nothing), "") - syntax_missing_string = _t2257 - _t2258 = _extract_value_string(parser, get(config, "syntax_delim", nothing), ",") - syntax_delim = _t2258 - _t2259 = _extract_value_string(parser, get(config, "syntax_quotechar", nothing), "\"") - syntax_quotechar = _t2259 - _t2260 = _extract_value_string(parser, get(config, "syntax_escapechar", nothing), "\\") - syntax_escapechar = _t2260 - _t2261 = Proto.ExportCSVConfig(path=path, data_columns=columns, partition_size=partition_size, compression=compression, syntax_header_row=syntax_header_row, syntax_missing_string=syntax_missing_string, syntax_delim=syntax_delim, syntax_quotechar=syntax_quotechar, syntax_escapechar=syntax_escapechar) - return _t2261 + _t2258 = _extract_value_int64(parser, get(config, "partition_size", nothing), 0) + partition_size = _t2258 + _t2259 = _extract_value_string(parser, get(config, "compression", nothing), "") + compression = _t2259 + _t2260 = _extract_value_boolean(parser, get(config, "syntax_header_row", nothing), true) + syntax_header_row = _t2260 + _t2261 = _extract_value_string(parser, get(config, "syntax_missing_string", nothing), "") + syntax_missing_string = _t2261 + _t2262 = _extract_value_string(parser, get(config, "syntax_delim", nothing), ",") + syntax_delim = _t2262 + _t2263 = _extract_value_string(parser, get(config, "syntax_quotechar", nothing), "\"") + syntax_quotechar = _t2263 + _t2264 = _extract_value_string(parser, get(config, "syntax_escapechar", nothing), "\\") + syntax_escapechar = _t2264 + _t2265 = Proto.ExportCSVConfig(path=path, data_columns=columns, partition_size=partition_size, compression=compression, syntax_header_row=syntax_header_row, syntax_missing_string=syntax_missing_string, syntax_delim=syntax_delim, syntax_quotechar=syntax_quotechar, syntax_escapechar=syntax_escapechar) + return _t2265 end function construct_export_csv_config_with_location(parser::ParserState, location::Tuple{String, String}, csv_source::Proto.ExportCSVSource, csv_config::Proto.CSVConfig)::Proto.ExportCSVConfig - _t2262 = Proto.ExportCSVConfig(path=location[1], transaction_output_name=location[2], csv_source=csv_source, csv_config=csv_config) - return _t2262 + _t2266 = Proto.ExportCSVConfig(path=location[1], transaction_output_name=location[2], csv_source=csv_source, csv_config=csv_config) + return _t2266 end function construct_iceberg_catalog_config(parser::ParserState, catalog_uri::String, scope_opt::Union{Nothing, String}, property_pairs::Vector{Tuple{String, String}}, auth_property_pairs::Vector{Tuple{String, String}})::Proto.IcebergCatalogConfig props = Dict(property_pairs) auth_props = Dict(auth_property_pairs) - _t2263 = Proto.IcebergCatalogConfig(catalog_uri=catalog_uri, scope=(!isnothing(scope_opt) ? scope_opt : ""), properties=props, auth_properties=auth_props) - return _t2263 + _t2267 = Proto.IcebergCatalogConfig(catalog_uri=catalog_uri, scope=(!isnothing(scope_opt) ? scope_opt : ""), properties=props, auth_properties=auth_props) + return _t2267 end function construct_iceberg_data(parser::ParserState, locator::Proto.IcebergLocator, config::Proto.IcebergCatalogConfig, columns::Vector{Proto.GNFColumn}, from_snapshot_opt::Union{Nothing, String}, to_snapshot_opt::Union{Nothing, String}, returns_delta::Bool)::Proto.IcebergData - _t2264 = Proto.IcebergData(locator=locator, config=config, columns=columns, from_snapshot=(!isnothing(from_snapshot_opt) ? from_snapshot_opt : ""), to_snapshot=(!isnothing(to_snapshot_opt) ? to_snapshot_opt : ""), returns_delta=returns_delta) - return _t2264 + _t2268 = Proto.IcebergData(locator=locator, config=config, columns=columns, from_snapshot=(!isnothing(from_snapshot_opt) ? from_snapshot_opt : ""), to_snapshot=(!isnothing(to_snapshot_opt) ? to_snapshot_opt : ""), returns_delta=returns_delta) + return _t2268 end function construct_export_iceberg_config_full(parser::ParserState, locator::Proto.IcebergLocator, config::Proto.IcebergCatalogConfig, table_def::Proto.RelationId, table_property_pairs::Vector{Tuple{String, String}}, config_dict::Union{Nothing, Vector{Tuple{String, Proto.Value}}})::Proto.ExportIcebergConfig cfg = Dict((!isnothing(config_dict) ? config_dict : Tuple{String, Proto.Value}[])) - _t2265 = _extract_value_string(parser, get(cfg, "prefix", nothing), "") - prefix = _t2265 - _t2266 = _extract_value_int64(parser, get(cfg, "target_file_size_bytes", nothing), 0) - target_file_size_bytes = _t2266 - _t2267 = _extract_value_string(parser, get(cfg, "compression", nothing), "") - compression = _t2267 + _t2269 = _extract_value_string(parser, get(cfg, "prefix", nothing), "") + prefix = _t2269 + _t2270 = _extract_value_int64(parser, get(cfg, "target_file_size_bytes", nothing), 0) + target_file_size_bytes = _t2270 + _t2271 = _extract_value_string(parser, get(cfg, "compression", nothing), "") + compression = _t2271 table_props = Dict(table_property_pairs) - _t2268 = Proto.ExportIcebergConfig(locator=locator, config=config, table_def=table_def, prefix=prefix, target_file_size_bytes=target_file_size_bytes, compression=compression, table_properties=table_props) - return _t2268 + _t2272 = Proto.ExportIcebergConfig(locator=locator, config=config, table_def=table_def, prefix=prefix, target_file_size_bytes=target_file_size_bytes, compression=compression, table_properties=table_props) + return _t2272 end # --- Parse functions --- diff --git a/sdks/julia/LogicalQueryProtocol.jl/src/pretty.jl b/sdks/julia/LogicalQueryProtocol.jl/src/pretty.jl index 3ae409df..9eb0e7f5 100644 --- a/sdks/julia/LogicalQueryProtocol.jl/src/pretty.jl +++ b/sdks/julia/LogicalQueryProtocol.jl/src/pretty.jl @@ -446,42 +446,50 @@ function deconstruct_configure(pp::PrettyPrinter, msg::Proto.Configure)::Vector{ end _t1900 = _make_value_int64(pp, msg.semantics_version) push!(result, ("semantics_version", _t1900,)) + if msg.ast_size_limit.warning_limit != 0 + _t1901 = _make_value_int64(pp, msg.ast_size_limit.warning_limit) + push!(result, ("ast_size.warning_limit", _t1901,)) + end + if msg.ast_size_limit.exception_limit != 0 + _t1902 = _make_value_int64(pp, msg.ast_size_limit.exception_limit) + push!(result, ("ast_size.exception_limit", _t1902,)) + end return sort(result) end function deconstruct_csv_config(pp::PrettyPrinter, msg::Proto.CSVConfig)::Vector{Tuple{String, Proto.Value}} result = Tuple{String, Proto.Value}[] - _t1901 = _make_value_int32(pp, msg.header_row) - push!(result, ("csv_header_row", _t1901,)) - _t1902 = _make_value_int64(pp, msg.skip) - push!(result, ("csv_skip", _t1902,)) + _t1903 = _make_value_int32(pp, msg.header_row) + push!(result, ("csv_header_row", _t1903,)) + _t1904 = _make_value_int64(pp, msg.skip) + push!(result, ("csv_skip", _t1904,)) if msg.new_line != "" - _t1903 = _make_value_string(pp, msg.new_line) - push!(result, ("csv_new_line", _t1903,)) - end - _t1904 = _make_value_string(pp, msg.delimiter) - push!(result, ("csv_delimiter", _t1904,)) - _t1905 = _make_value_string(pp, msg.quotechar) - push!(result, ("csv_quotechar", _t1905,)) - _t1906 = _make_value_string(pp, msg.escapechar) - push!(result, ("csv_escapechar", _t1906,)) + _t1905 = _make_value_string(pp, msg.new_line) + push!(result, ("csv_new_line", _t1905,)) + end + _t1906 = _make_value_string(pp, msg.delimiter) + push!(result, ("csv_delimiter", _t1906,)) + _t1907 = _make_value_string(pp, msg.quotechar) + push!(result, ("csv_quotechar", _t1907,)) + _t1908 = _make_value_string(pp, msg.escapechar) + push!(result, ("csv_escapechar", _t1908,)) if msg.comment != "" - _t1907 = _make_value_string(pp, msg.comment) - push!(result, ("csv_comment", _t1907,)) + _t1909 = _make_value_string(pp, msg.comment) + push!(result, ("csv_comment", _t1909,)) end for missing_string in msg.missing_strings - _t1908 = _make_value_string(pp, missing_string) - push!(result, ("csv_missing_strings", _t1908,)) - end - _t1909 = _make_value_string(pp, msg.decimal_separator) - push!(result, ("csv_decimal_separator", _t1909,)) - _t1910 = _make_value_string(pp, msg.encoding) - push!(result, ("csv_encoding", _t1910,)) - _t1911 = _make_value_string(pp, msg.compression) - push!(result, ("csv_compression", _t1911,)) + _t1910 = _make_value_string(pp, missing_string) + push!(result, ("csv_missing_strings", _t1910,)) + end + _t1911 = _make_value_string(pp, msg.decimal_separator) + push!(result, ("csv_decimal_separator", _t1911,)) + _t1912 = _make_value_string(pp, msg.encoding) + push!(result, ("csv_encoding", _t1912,)) + _t1913 = _make_value_string(pp, msg.compression) + push!(result, ("csv_compression", _t1913,)) if msg.partition_size_mb != 0 - _t1912 = _make_value_int64(pp, msg.partition_size_mb) - push!(result, ("csv_partition_size_mb", _t1912,)) + _t1914 = _make_value_int64(pp, msg.partition_size_mb) + push!(result, ("csv_partition_size_mb", _t1914,)) end return sort(result) end @@ -490,91 +498,91 @@ function deconstruct_csv_storage_integration_optional(pp::PrettyPrinter, msg::Pr if !_has_proto_field(msg, Symbol("storage_integration")) return nothing else - _t1913 = nothing + _t1915 = nothing end si = msg.storage_integration result = Tuple{String, Proto.Value}[] if si.provider != "" - _t1914 = _make_value_string(pp, si.provider) - push!(result, ("provider", _t1914,)) + _t1916 = _make_value_string(pp, si.provider) + push!(result, ("provider", _t1916,)) end if si.azure_sas_token != "" - _t1915 = _make_value_string(pp, "***") - push!(result, ("azure_sas_token", _t1915,)) + _t1917 = _make_value_string(pp, "***") + push!(result, ("azure_sas_token", _t1917,)) end if si.s3_region != "" - _t1916 = _make_value_string(pp, si.s3_region) - push!(result, ("s3_region", _t1916,)) + _t1918 = _make_value_string(pp, si.s3_region) + push!(result, ("s3_region", _t1918,)) end if si.s3_access_key_id != "" - _t1917 = _make_value_string(pp, "***") - push!(result, ("s3_access_key_id", _t1917,)) + _t1919 = _make_value_string(pp, "***") + push!(result, ("s3_access_key_id", _t1919,)) end if si.s3_secret_access_key != "" - _t1918 = _make_value_string(pp, "***") - push!(result, ("s3_secret_access_key", _t1918,)) + _t1920 = _make_value_string(pp, "***") + push!(result, ("s3_secret_access_key", _t1920,)) end return sort(result) end function deconstruct_betree_info_config(pp::PrettyPrinter, msg::Proto.BeTreeInfo)::Vector{Tuple{String, Proto.Value}} result = Tuple{String, Proto.Value}[] - _t1919 = _make_value_float64(pp, msg.storage_config.epsilon) - push!(result, ("betree_config_epsilon", _t1919,)) - _t1920 = _make_value_int64(pp, msg.storage_config.max_pivots) - push!(result, ("betree_config_max_pivots", _t1920,)) - _t1921 = _make_value_int64(pp, msg.storage_config.max_deltas) - push!(result, ("betree_config_max_deltas", _t1921,)) - _t1922 = _make_value_int64(pp, msg.storage_config.max_leaf) - push!(result, ("betree_config_max_leaf", _t1922,)) + _t1921 = _make_value_float64(pp, msg.storage_config.epsilon) + push!(result, ("betree_config_epsilon", _t1921,)) + _t1922 = _make_value_int64(pp, msg.storage_config.max_pivots) + push!(result, ("betree_config_max_pivots", _t1922,)) + _t1923 = _make_value_int64(pp, msg.storage_config.max_deltas) + push!(result, ("betree_config_max_deltas", _t1923,)) + _t1924 = _make_value_int64(pp, msg.storage_config.max_leaf) + push!(result, ("betree_config_max_leaf", _t1924,)) if _has_proto_field(msg.relation_locator, Symbol("root_pageid")) if !isnothing(_get_oneof_field(msg.relation_locator, :root_pageid)) - _t1923 = _make_value_uint128(pp, _get_oneof_field(msg.relation_locator, :root_pageid)) - push!(result, ("betree_locator_root_pageid", _t1923,)) + _t1925 = _make_value_uint128(pp, _get_oneof_field(msg.relation_locator, :root_pageid)) + push!(result, ("betree_locator_root_pageid", _t1925,)) end end if _has_proto_field(msg.relation_locator, Symbol("inline_data")) if !isnothing(_get_oneof_field(msg.relation_locator, :inline_data)) - _t1924 = _make_value_string(pp, String(copy(_get_oneof_field(msg.relation_locator, :inline_data)))) - push!(result, ("betree_locator_inline_data", _t1924,)) + _t1926 = _make_value_string(pp, String(copy(_get_oneof_field(msg.relation_locator, :inline_data)))) + push!(result, ("betree_locator_inline_data", _t1926,)) end end - _t1925 = _make_value_int64(pp, msg.relation_locator.element_count) - push!(result, ("betree_locator_element_count", _t1925,)) - _t1926 = _make_value_int64(pp, msg.relation_locator.tree_height) - push!(result, ("betree_locator_tree_height", _t1926,)) + _t1927 = _make_value_int64(pp, msg.relation_locator.element_count) + push!(result, ("betree_locator_element_count", _t1927,)) + _t1928 = _make_value_int64(pp, msg.relation_locator.tree_height) + push!(result, ("betree_locator_tree_height", _t1928,)) return sort(result) end function deconstruct_export_csv_config(pp::PrettyPrinter, msg::Proto.ExportCSVConfig)::Vector{Tuple{String, Proto.Value}} result = Tuple{String, Proto.Value}[] if !isnothing(msg.partition_size) - _t1927 = _make_value_int64(pp, msg.partition_size) - push!(result, ("partition_size", _t1927,)) + _t1929 = _make_value_int64(pp, msg.partition_size) + push!(result, ("partition_size", _t1929,)) end if !isnothing(msg.compression) - _t1928 = _make_value_string(pp, msg.compression) - push!(result, ("compression", _t1928,)) + _t1930 = _make_value_string(pp, msg.compression) + push!(result, ("compression", _t1930,)) end if !isnothing(msg.syntax_header_row) - _t1929 = _make_value_boolean(pp, msg.syntax_header_row) - push!(result, ("syntax_header_row", _t1929,)) + _t1931 = _make_value_boolean(pp, msg.syntax_header_row) + push!(result, ("syntax_header_row", _t1931,)) end if !isnothing(msg.syntax_missing_string) - _t1930 = _make_value_string(pp, msg.syntax_missing_string) - push!(result, ("syntax_missing_string", _t1930,)) + _t1932 = _make_value_string(pp, msg.syntax_missing_string) + push!(result, ("syntax_missing_string", _t1932,)) end if !isnothing(msg.syntax_delim) - _t1931 = _make_value_string(pp, msg.syntax_delim) - push!(result, ("syntax_delim", _t1931,)) + _t1933 = _make_value_string(pp, msg.syntax_delim) + push!(result, ("syntax_delim", _t1933,)) end if !isnothing(msg.syntax_quotechar) - _t1932 = _make_value_string(pp, msg.syntax_quotechar) - push!(result, ("syntax_quotechar", _t1932,)) + _t1934 = _make_value_string(pp, msg.syntax_quotechar) + push!(result, ("syntax_quotechar", _t1934,)) end if !isnothing(msg.syntax_escapechar) - _t1933 = _make_value_string(pp, msg.syntax_escapechar) - push!(result, ("syntax_escapechar", _t1933,)) + _t1935 = _make_value_string(pp, msg.syntax_escapechar) + push!(result, ("syntax_escapechar", _t1935,)) end return sort(result) end @@ -587,7 +595,7 @@ function deconstruct_iceberg_catalog_config_scope_optional(pp::PrettyPrinter, ms if msg.scope != "" return msg.scope else - _t1934 = nothing + _t1936 = nothing end return nothing end @@ -596,7 +604,7 @@ function deconstruct_iceberg_data_from_snapshot_optional(pp::PrettyPrinter, msg: if msg.from_snapshot != "" return msg.from_snapshot else - _t1935 = nothing + _t1937 = nothing end return nothing end @@ -605,7 +613,7 @@ function deconstruct_iceberg_data_to_snapshot_optional(pp::PrettyPrinter, msg::P if msg.to_snapshot != "" return msg.to_snapshot else - _t1936 = nothing + _t1938 = nothing end return nothing end @@ -613,21 +621,21 @@ end function deconstruct_export_iceberg_config_optional(pp::PrettyPrinter, msg::Proto.ExportIcebergConfig)::Union{Nothing, Vector{Tuple{String, Proto.Value}}} result = Tuple{String, Proto.Value}[] if msg.prefix != "" - _t1937 = _make_value_string(pp, msg.prefix) - push!(result, ("prefix", _t1937,)) + _t1939 = _make_value_string(pp, msg.prefix) + push!(result, ("prefix", _t1939,)) end if msg.target_file_size_bytes != 0 - _t1938 = _make_value_int64(pp, msg.target_file_size_bytes) - push!(result, ("target_file_size_bytes", _t1938,)) + _t1940 = _make_value_int64(pp, msg.target_file_size_bytes) + push!(result, ("target_file_size_bytes", _t1940,)) end if msg.compression != "" - _t1939 = _make_value_string(pp, msg.compression) - push!(result, ("compression", _t1939,)) + _t1941 = _make_value_string(pp, msg.compression) + push!(result, ("compression", _t1941,)) end if length(result) == 0 return nothing else - _t1940 = nothing + _t1942 = nothing end return sort(result) end @@ -642,7 +650,7 @@ function deconstruct_relation_id_uint128(pp::PrettyPrinter, msg::Proto.RelationI if isnothing(name) return relation_id_to_uint128(pp, msg) else - _t1941 = nothing + _t1943 = nothing end return nothing end @@ -5369,12 +5377,12 @@ end function pretty_debug_info(pp::PrettyPrinter, msg::Proto.DebugInfo) write(pp, "(debug_info") indent_sexp!(pp) - for (i1942, _rid) in enumerate(msg.ids) - _idx = i1942 - 1 + for (i1944, _rid) in enumerate(msg.ids) + _idx = i1944 - 1 newline(pp) write(pp, "(") - _t1943 = Proto.UInt128Value(low=_rid.id_low, high=_rid.id_high) - _pprint_dispatch(pp, _t1943) + _t1945 = Proto.UInt128Value(low=_rid.id_low, high=_rid.id_high) + _pprint_dispatch(pp, _t1945) write(pp, " ") write(pp, format_string(DEFAULT_CONSTANT_FORMATTER, pp, msg.orig_names[_idx + 1])) write(pp, ")") @@ -5438,8 +5446,8 @@ function pretty_cdc_targets(pp::PrettyPrinter, msg::Proto.CDCTargets) indent_sexp!(pp) newline(pp) write(pp, ":inserts (") - for (i1944, _elem) in enumerate(msg.inserts) - _idx = i1944 - 1 + for (i1946, _elem) in enumerate(msg.inserts) + _idx = i1946 - 1 if (_idx > 0) write(pp, " ") end @@ -5448,8 +5456,8 @@ function pretty_cdc_targets(pp::PrettyPrinter, msg::Proto.CDCTargets) write(pp, ")") newline(pp) write(pp, ":deletes (") - for (i1945, _elem) in enumerate(msg.deletes) - _idx = i1945 - 1 + for (i1947, _elem) in enumerate(msg.deletes) + _idx = i1947 - 1 if (_idx > 0) write(pp, " ") end @@ -5473,8 +5481,8 @@ function pretty_functional_dependency(pp::PrettyPrinter, msg::Proto.FunctionalDe _pprint_dispatch(pp, msg.guard) newline(pp) write(pp, ":keys (") - for (i1946, _elem) in enumerate(msg.keys) - _idx = i1946 - 1 + for (i1948, _elem) in enumerate(msg.keys) + _idx = i1948 - 1 if (_idx > 0) write(pp, " ") end @@ -5483,8 +5491,8 @@ function pretty_functional_dependency(pp::PrettyPrinter, msg::Proto.FunctionalDe write(pp, ")") newline(pp) write(pp, ":values (") - for (i1947, _elem) in enumerate(msg.values) - _idx = i1947 - 1 + for (i1949, _elem) in enumerate(msg.values) + _idx = i1949 - 1 if (_idx > 0) write(pp, " ") end @@ -5510,8 +5518,8 @@ function pretty_plain_targets(pp::PrettyPrinter, msg::Proto.PlainTargets) indent_sexp!(pp) newline(pp) write(pp, ":targets (") - for (i1948, _elem) in enumerate(msg.targets) - _idx = i1948 - 1 + for (i1950, _elem) in enumerate(msg.targets) + _idx = i1950 - 1 if (_idx > 0) write(pp, " ") end @@ -5550,13 +5558,27 @@ function pretty_u_int128_value(pp::PrettyPrinter, msg::Proto.UInt128Value) return nothing end +function pretty_ast_size_limit(pp::PrettyPrinter, msg::Proto.ASTSizeLimit) + write(pp, "(ast_size_limit") + indent_sexp!(pp) + newline(pp) + write(pp, ":warning_limit ") + write(pp, string(msg.warning_limit)) + newline(pp) + write(pp, ":exception_limit ") + write(pp, string(msg.exception_limit)) + write(pp, ")") + dedent!(pp) + return nothing +end + function pretty_export_csv_columns(pp::PrettyPrinter, msg::Proto.ExportCSVColumns) write(pp, "(export_csv_columns") indent_sexp!(pp) newline(pp) write(pp, ":columns (") - for (i1949, _elem) in enumerate(msg.columns) - _idx = i1949 - 1 + for (i1951, _elem) in enumerate(msg.columns) + _idx = i1951 - 1 if (_idx > 0) write(pp, " ") end @@ -5722,6 +5744,7 @@ _pprint_dispatch(pp::PrettyPrinter, x::Proto.MissingValue) = pretty_missing_valu _pprint_dispatch(pp::PrettyPrinter, x::Proto.PlainTargets) = pretty_plain_targets(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.StorageIntegration) = pretty_storage_integration(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.UInt128Value) = pretty_u_int128_value(pp, x) +_pprint_dispatch(pp::PrettyPrinter, x::Proto.ASTSizeLimit) = pretty_ast_size_limit(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.ExportCSVColumns) = pretty_export_csv_columns(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.IVMConfig) = pretty_ivm_config(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.MaintenanceLevel.T) = pretty_maintenance_level(pp, x) diff --git a/sdks/python/src/lqp/gen/parser.py b/sdks/python/src/lqp/gen/parser.py index a1813ac1..f4608367 100644 --- a/sdks/python/src/lqp/gen/parser.py +++ b/sdks/python/src/lqp/gen/parser.py @@ -635,8 +635,10 @@ def construct_betree_info(self, key_types: Sequence[logic_pb2.Type], value_types def default_configure(self) -> transactions_pb2.Configure: _t2257 = transactions_pb2.IVMConfig(level=transactions_pb2.MaintenanceLevel.MAINTENANCE_LEVEL_OFF) ivm_config = _t2257 - _t2258 = transactions_pb2.Configure(semantics_version=0, ivm_config=ivm_config) - return _t2258 + _t2258 = transactions_pb2.ASTSizeLimit(warning_limit=0, exception_limit=0) + ast_size_limit = _t2258 + _t2259 = transactions_pb2.Configure(semantics_version=0, ivm_config=ivm_config, ast_size_limit=ast_size_limit) + return _t2259 def construct_configure(self, config_dict: Sequence[tuple[str, logic_pb2.Value]]) -> transactions_pb2.Configure: config = dict(config_dict) @@ -653,57 +655,63 @@ def construct_configure(self, config_dict: Sequence[tuple[str, logic_pb2.Value]] maintenance_level = transactions_pb2.MaintenanceLevel.MAINTENANCE_LEVEL_ALL else: maintenance_level = transactions_pb2.MaintenanceLevel.MAINTENANCE_LEVEL_OFF - _t2259 = transactions_pb2.IVMConfig(level=maintenance_level) - ivm_config = _t2259 - _t2260 = self._extract_value_int64(config.get("semantics_version"), 0) - semantics_version = _t2260 - _t2261 = transactions_pb2.Configure(semantics_version=semantics_version, ivm_config=ivm_config) - return _t2261 + _t2260 = transactions_pb2.IVMConfig(level=maintenance_level) + ivm_config = _t2260 + _t2261 = self._extract_value_int64(config.get("semantics_version"), 0) + semantics_version = _t2261 + _t2262 = self._extract_value_int64(config.get("ast_size.warning_limit"), 0) + warning_limit = _t2262 + _t2263 = self._extract_value_int64(config.get("ast_size.exception_limit"), 0) + exception_limit = _t2263 + _t2264 = transactions_pb2.ASTSizeLimit(warning_limit=warning_limit, exception_limit=exception_limit) + ast_size_limit = _t2264 + _t2265 = transactions_pb2.Configure(semantics_version=semantics_version, ivm_config=ivm_config, ast_size_limit=ast_size_limit) + return _t2265 def construct_export_csv_config(self, path: str, columns: Sequence[transactions_pb2.ExportCSVColumn], config_dict: Sequence[tuple[str, logic_pb2.Value]]) -> transactions_pb2.ExportCSVConfig: config = dict(config_dict) - _t2262 = self._extract_value_int64(config.get("partition_size"), 0) - partition_size = _t2262 - _t2263 = self._extract_value_string(config.get("compression"), "") - compression = _t2263 - _t2264 = self._extract_value_boolean(config.get("syntax_header_row"), True) - syntax_header_row = _t2264 - _t2265 = self._extract_value_string(config.get("syntax_missing_string"), "") - syntax_missing_string = _t2265 - _t2266 = self._extract_value_string(config.get("syntax_delim"), ",") - syntax_delim = _t2266 - _t2267 = self._extract_value_string(config.get("syntax_quotechar"), '"') - syntax_quotechar = _t2267 - _t2268 = self._extract_value_string(config.get("syntax_escapechar"), "\\") - syntax_escapechar = _t2268 - _t2269 = transactions_pb2.ExportCSVConfig(path=path, data_columns=columns, partition_size=partition_size, compression=compression, syntax_header_row=syntax_header_row, syntax_missing_string=syntax_missing_string, syntax_delim=syntax_delim, syntax_quotechar=syntax_quotechar, syntax_escapechar=syntax_escapechar) - return _t2269 + _t2266 = self._extract_value_int64(config.get("partition_size"), 0) + partition_size = _t2266 + _t2267 = self._extract_value_string(config.get("compression"), "") + compression = _t2267 + _t2268 = self._extract_value_boolean(config.get("syntax_header_row"), True) + syntax_header_row = _t2268 + _t2269 = self._extract_value_string(config.get("syntax_missing_string"), "") + syntax_missing_string = _t2269 + _t2270 = self._extract_value_string(config.get("syntax_delim"), ",") + syntax_delim = _t2270 + _t2271 = self._extract_value_string(config.get("syntax_quotechar"), '"') + syntax_quotechar = _t2271 + _t2272 = self._extract_value_string(config.get("syntax_escapechar"), "\\") + syntax_escapechar = _t2272 + _t2273 = transactions_pb2.ExportCSVConfig(path=path, data_columns=columns, partition_size=partition_size, compression=compression, syntax_header_row=syntax_header_row, syntax_missing_string=syntax_missing_string, syntax_delim=syntax_delim, syntax_quotechar=syntax_quotechar, syntax_escapechar=syntax_escapechar) + return _t2273 def construct_export_csv_config_with_location(self, location: tuple[str, str], csv_source: transactions_pb2.ExportCSVSource, csv_config: logic_pb2.CSVConfig) -> transactions_pb2.ExportCSVConfig: - _t2270 = transactions_pb2.ExportCSVConfig(path=location[0], transaction_output_name=location[1], csv_source=csv_source, csv_config=csv_config) - return _t2270 + _t2274 = transactions_pb2.ExportCSVConfig(path=location[0], transaction_output_name=location[1], csv_source=csv_source, csv_config=csv_config) + return _t2274 def construct_iceberg_catalog_config(self, catalog_uri: str, scope_opt: str | None, property_pairs: Sequence[tuple[str, str]], auth_property_pairs: Sequence[tuple[str, str]]) -> logic_pb2.IcebergCatalogConfig: props = dict(property_pairs) auth_props = dict(auth_property_pairs) - _t2271 = logic_pb2.IcebergCatalogConfig(catalog_uri=catalog_uri, scope=(scope_opt if scope_opt is not None else ""), properties=props, auth_properties=auth_props) - return _t2271 + _t2275 = logic_pb2.IcebergCatalogConfig(catalog_uri=catalog_uri, scope=(scope_opt if scope_opt is not None else ""), properties=props, auth_properties=auth_props) + return _t2275 def construct_iceberg_data(self, locator: logic_pb2.IcebergLocator, config: logic_pb2.IcebergCatalogConfig, columns: Sequence[logic_pb2.GNFColumn], from_snapshot_opt: str | None, to_snapshot_opt: str | None, returns_delta: bool) -> logic_pb2.IcebergData: - _t2272 = logic_pb2.IcebergData(locator=locator, config=config, columns=columns, from_snapshot=(from_snapshot_opt if from_snapshot_opt is not None else ""), to_snapshot=(to_snapshot_opt if to_snapshot_opt is not None else ""), returns_delta=returns_delta) - return _t2272 + _t2276 = logic_pb2.IcebergData(locator=locator, config=config, columns=columns, from_snapshot=(from_snapshot_opt if from_snapshot_opt is not None else ""), to_snapshot=(to_snapshot_opt if to_snapshot_opt is not None else ""), returns_delta=returns_delta) + return _t2276 def construct_export_iceberg_config_full(self, locator: logic_pb2.IcebergLocator, config: logic_pb2.IcebergCatalogConfig, table_def: logic_pb2.RelationId, table_property_pairs: Sequence[tuple[str, str]], config_dict: Sequence[tuple[str, logic_pb2.Value]] | None) -> transactions_pb2.ExportIcebergConfig: cfg = dict((config_dict if config_dict is not None else [])) - _t2273 = self._extract_value_string(cfg.get("prefix"), "") - prefix = _t2273 - _t2274 = self._extract_value_int64(cfg.get("target_file_size_bytes"), 0) - target_file_size_bytes = _t2274 - _t2275 = self._extract_value_string(cfg.get("compression"), "") - compression = _t2275 + _t2277 = self._extract_value_string(cfg.get("prefix"), "") + prefix = _t2277 + _t2278 = self._extract_value_int64(cfg.get("target_file_size_bytes"), 0) + target_file_size_bytes = _t2278 + _t2279 = self._extract_value_string(cfg.get("compression"), "") + compression = _t2279 table_props = dict(table_property_pairs) - _t2276 = transactions_pb2.ExportIcebergConfig(locator=locator, config=config, table_def=table_def, prefix=prefix, target_file_size_bytes=target_file_size_bytes, compression=compression, table_properties=table_props) - return _t2276 + _t2280 = transactions_pb2.ExportIcebergConfig(locator=locator, config=config, table_def=table_def, prefix=prefix, target_file_size_bytes=target_file_size_bytes, compression=compression, table_properties=table_props) + return _t2280 # --- Parse methods --- diff --git a/sdks/python/src/lqp/gen/pretty.py b/sdks/python/src/lqp/gen/pretty.py index a0863d46..a94d288b 100644 --- a/sdks/python/src/lqp/gen/pretty.py +++ b/sdks/python/src/lqp/gen/pretty.py @@ -273,121 +273,127 @@ def deconstruct_configure(self, msg: transactions_pb2.Configure) -> list[tuple[s result.append(("ivm.maintenance_level", _t1855,)) _t1856 = self._make_value_int64(msg.semantics_version) result.append(("semantics_version", _t1856,)) + if msg.ast_size_limit.warning_limit != 0: + _t1857 = self._make_value_int64(msg.ast_size_limit.warning_limit) + result.append(("ast_size.warning_limit", _t1857,)) + if msg.ast_size_limit.exception_limit != 0: + _t1858 = self._make_value_int64(msg.ast_size_limit.exception_limit) + result.append(("ast_size.exception_limit", _t1858,)) return sorted(result) def deconstruct_csv_config(self, msg: logic_pb2.CSVConfig) -> list[tuple[str, logic_pb2.Value]]: result = [] - _t1857 = self._make_value_int32(msg.header_row) - result.append(("csv_header_row", _t1857,)) - _t1858 = self._make_value_int64(msg.skip) - result.append(("csv_skip", _t1858,)) + _t1859 = self._make_value_int32(msg.header_row) + result.append(("csv_header_row", _t1859,)) + _t1860 = self._make_value_int64(msg.skip) + result.append(("csv_skip", _t1860,)) if msg.new_line != "": - _t1859 = self._make_value_string(msg.new_line) - result.append(("csv_new_line", _t1859,)) - _t1860 = self._make_value_string(msg.delimiter) - result.append(("csv_delimiter", _t1860,)) - _t1861 = self._make_value_string(msg.quotechar) - result.append(("csv_quotechar", _t1861,)) - _t1862 = self._make_value_string(msg.escapechar) - result.append(("csv_escapechar", _t1862,)) + _t1861 = self._make_value_string(msg.new_line) + result.append(("csv_new_line", _t1861,)) + _t1862 = self._make_value_string(msg.delimiter) + result.append(("csv_delimiter", _t1862,)) + _t1863 = self._make_value_string(msg.quotechar) + result.append(("csv_quotechar", _t1863,)) + _t1864 = self._make_value_string(msg.escapechar) + result.append(("csv_escapechar", _t1864,)) if msg.comment != "": - _t1863 = self._make_value_string(msg.comment) - result.append(("csv_comment", _t1863,)) + _t1865 = self._make_value_string(msg.comment) + result.append(("csv_comment", _t1865,)) for missing_string in msg.missing_strings: - _t1864 = self._make_value_string(missing_string) - result.append(("csv_missing_strings", _t1864,)) - _t1865 = self._make_value_string(msg.decimal_separator) - result.append(("csv_decimal_separator", _t1865,)) - _t1866 = self._make_value_string(msg.encoding) - result.append(("csv_encoding", _t1866,)) - _t1867 = self._make_value_string(msg.compression) - result.append(("csv_compression", _t1867,)) + _t1866 = self._make_value_string(missing_string) + result.append(("csv_missing_strings", _t1866,)) + _t1867 = self._make_value_string(msg.decimal_separator) + result.append(("csv_decimal_separator", _t1867,)) + _t1868 = self._make_value_string(msg.encoding) + result.append(("csv_encoding", _t1868,)) + _t1869 = self._make_value_string(msg.compression) + result.append(("csv_compression", _t1869,)) if msg.partition_size_mb != 0: - _t1868 = self._make_value_int64(msg.partition_size_mb) - result.append(("csv_partition_size_mb", _t1868,)) + _t1870 = self._make_value_int64(msg.partition_size_mb) + result.append(("csv_partition_size_mb", _t1870,)) return sorted(result) def deconstruct_csv_storage_integration_optional(self, msg: logic_pb2.CSVConfig) -> Sequence[tuple[str, logic_pb2.Value]] | None: if not msg.HasField("storage_integration"): return None else: - _t1869 = None + _t1871 = None assert msg.storage_integration is not None si = msg.storage_integration result = [] if si.provider != "": - _t1870 = self._make_value_string(si.provider) - result.append(("provider", _t1870,)) + _t1872 = self._make_value_string(si.provider) + result.append(("provider", _t1872,)) if si.azure_sas_token != "": - _t1871 = self._make_value_string("***") - result.append(("azure_sas_token", _t1871,)) + _t1873 = self._make_value_string("***") + result.append(("azure_sas_token", _t1873,)) if si.s3_region != "": - _t1872 = self._make_value_string(si.s3_region) - result.append(("s3_region", _t1872,)) + _t1874 = self._make_value_string(si.s3_region) + result.append(("s3_region", _t1874,)) if si.s3_access_key_id != "": - _t1873 = self._make_value_string("***") - result.append(("s3_access_key_id", _t1873,)) + _t1875 = self._make_value_string("***") + result.append(("s3_access_key_id", _t1875,)) if si.s3_secret_access_key != "": - _t1874 = self._make_value_string("***") - result.append(("s3_secret_access_key", _t1874,)) + _t1876 = self._make_value_string("***") + result.append(("s3_secret_access_key", _t1876,)) return sorted(result) def deconstruct_betree_info_config(self, msg: logic_pb2.BeTreeInfo) -> list[tuple[str, logic_pb2.Value]]: result = [] - _t1875 = self._make_value_float64(msg.storage_config.epsilon) - result.append(("betree_config_epsilon", _t1875,)) - _t1876 = self._make_value_int64(msg.storage_config.max_pivots) - result.append(("betree_config_max_pivots", _t1876,)) - _t1877 = self._make_value_int64(msg.storage_config.max_deltas) - result.append(("betree_config_max_deltas", _t1877,)) - _t1878 = self._make_value_int64(msg.storage_config.max_leaf) - result.append(("betree_config_max_leaf", _t1878,)) + _t1877 = self._make_value_float64(msg.storage_config.epsilon) + result.append(("betree_config_epsilon", _t1877,)) + _t1878 = self._make_value_int64(msg.storage_config.max_pivots) + result.append(("betree_config_max_pivots", _t1878,)) + _t1879 = self._make_value_int64(msg.storage_config.max_deltas) + result.append(("betree_config_max_deltas", _t1879,)) + _t1880 = self._make_value_int64(msg.storage_config.max_leaf) + result.append(("betree_config_max_leaf", _t1880,)) if msg.relation_locator.HasField("root_pageid"): if msg.relation_locator.root_pageid is not None: assert msg.relation_locator.root_pageid is not None - _t1879 = self._make_value_uint128(msg.relation_locator.root_pageid) - result.append(("betree_locator_root_pageid", _t1879,)) + _t1881 = self._make_value_uint128(msg.relation_locator.root_pageid) + result.append(("betree_locator_root_pageid", _t1881,)) if msg.relation_locator.HasField("inline_data"): if msg.relation_locator.inline_data is not None: assert msg.relation_locator.inline_data is not None - _t1880 = self._make_value_string(msg.relation_locator.inline_data.decode('utf-8')) - result.append(("betree_locator_inline_data", _t1880,)) - _t1881 = self._make_value_int64(msg.relation_locator.element_count) - result.append(("betree_locator_element_count", _t1881,)) - _t1882 = self._make_value_int64(msg.relation_locator.tree_height) - result.append(("betree_locator_tree_height", _t1882,)) + _t1882 = self._make_value_string(msg.relation_locator.inline_data.decode('utf-8')) + result.append(("betree_locator_inline_data", _t1882,)) + _t1883 = self._make_value_int64(msg.relation_locator.element_count) + result.append(("betree_locator_element_count", _t1883,)) + _t1884 = self._make_value_int64(msg.relation_locator.tree_height) + result.append(("betree_locator_tree_height", _t1884,)) return sorted(result) def deconstruct_export_csv_config(self, msg: transactions_pb2.ExportCSVConfig) -> list[tuple[str, logic_pb2.Value]]: result = [] if msg.partition_size is not None: assert msg.partition_size is not None - _t1883 = self._make_value_int64(msg.partition_size) - result.append(("partition_size", _t1883,)) + _t1885 = self._make_value_int64(msg.partition_size) + result.append(("partition_size", _t1885,)) if msg.compression is not None: assert msg.compression is not None - _t1884 = self._make_value_string(msg.compression) - result.append(("compression", _t1884,)) + _t1886 = self._make_value_string(msg.compression) + result.append(("compression", _t1886,)) if msg.syntax_header_row is not None: assert msg.syntax_header_row is not None - _t1885 = self._make_value_boolean(msg.syntax_header_row) - result.append(("syntax_header_row", _t1885,)) + _t1887 = self._make_value_boolean(msg.syntax_header_row) + result.append(("syntax_header_row", _t1887,)) if msg.syntax_missing_string is not None: assert msg.syntax_missing_string is not None - _t1886 = self._make_value_string(msg.syntax_missing_string) - result.append(("syntax_missing_string", _t1886,)) + _t1888 = self._make_value_string(msg.syntax_missing_string) + result.append(("syntax_missing_string", _t1888,)) if msg.syntax_delim is not None: assert msg.syntax_delim is not None - _t1887 = self._make_value_string(msg.syntax_delim) - result.append(("syntax_delim", _t1887,)) + _t1889 = self._make_value_string(msg.syntax_delim) + result.append(("syntax_delim", _t1889,)) if msg.syntax_quotechar is not None: assert msg.syntax_quotechar is not None - _t1888 = self._make_value_string(msg.syntax_quotechar) - result.append(("syntax_quotechar", _t1888,)) + _t1890 = self._make_value_string(msg.syntax_quotechar) + result.append(("syntax_quotechar", _t1890,)) if msg.syntax_escapechar is not None: assert msg.syntax_escapechar is not None - _t1889 = self._make_value_string(msg.syntax_escapechar) - result.append(("syntax_escapechar", _t1889,)) + _t1891 = self._make_value_string(msg.syntax_escapechar) + result.append(("syntax_escapechar", _t1891,)) return sorted(result) def mask_secret_value(self, pair: tuple[str, str]) -> str: @@ -399,7 +405,7 @@ def deconstruct_iceberg_catalog_config_scope_optional(self, msg: logic_pb2.Icebe assert msg.scope is not None return msg.scope else: - _t1890 = None + _t1892 = None return None def deconstruct_iceberg_data_from_snapshot_optional(self, msg: logic_pb2.IcebergData) -> str | None: @@ -408,7 +414,7 @@ def deconstruct_iceberg_data_from_snapshot_optional(self, msg: logic_pb2.Iceberg assert msg.from_snapshot is not None return msg.from_snapshot else: - _t1891 = None + _t1893 = None return None def deconstruct_iceberg_data_to_snapshot_optional(self, msg: logic_pb2.IcebergData) -> str | None: @@ -417,7 +423,7 @@ def deconstruct_iceberg_data_to_snapshot_optional(self, msg: logic_pb2.IcebergDa assert msg.to_snapshot is not None return msg.to_snapshot else: - _t1892 = None + _t1894 = None return None def deconstruct_export_iceberg_config_optional(self, msg: transactions_pb2.ExportIcebergConfig) -> Sequence[tuple[str, logic_pb2.Value]] | None: @@ -425,20 +431,20 @@ def deconstruct_export_iceberg_config_optional(self, msg: transactions_pb2.Expor assert msg.prefix is not None if msg.prefix != "": assert msg.prefix is not None - _t1893 = self._make_value_string(msg.prefix) - result.append(("prefix", _t1893,)) + _t1895 = self._make_value_string(msg.prefix) + result.append(("prefix", _t1895,)) assert msg.target_file_size_bytes is not None if msg.target_file_size_bytes != 0: assert msg.target_file_size_bytes is not None - _t1894 = self._make_value_int64(msg.target_file_size_bytes) - result.append(("target_file_size_bytes", _t1894,)) + _t1896 = self._make_value_int64(msg.target_file_size_bytes) + result.append(("target_file_size_bytes", _t1896,)) if msg.compression != "": - _t1895 = self._make_value_string(msg.compression) - result.append(("compression", _t1895,)) + _t1897 = self._make_value_string(msg.compression) + result.append(("compression", _t1897,)) if len(result) == 0: return None else: - _t1896 = None + _t1898 = None return sorted(result) def deconstruct_relation_id_string(self, msg: logic_pb2.RelationId) -> str: @@ -451,7 +457,7 @@ def deconstruct_relation_id_uint128(self, msg: logic_pb2.RelationId) -> logic_pb if name is None: return self.relation_id_to_uint128(msg) else: - _t1897 = None + _t1899 = None return None def deconstruct_bindings(self, abs: logic_pb2.Abstraction) -> tuple[Sequence[logic_pb2.Binding], Sequence[logic_pb2.Binding]]: @@ -4636,8 +4642,8 @@ def pretty_debug_info(self, msg: fragments_pb2.DebugInfo): for _idx, _rid in enumerate(msg.ids): self.newline() self.write("(") - _t1898 = logic_pb2.UInt128Value(low=_rid.id_low, high=_rid.id_high) - self.pprint_dispatch(_t1898) + _t1900 = logic_pb2.UInt128Value(low=_rid.id_low, high=_rid.id_high) + self.pprint_dispatch(_t1900) self.write(" ") self.write(self.format_string_value(msg.orig_names[_idx])) self.write(")") @@ -4773,6 +4779,18 @@ def pretty_storage_integration(self, msg: logic_pb2.StorageIntegration): def pretty_u_int128_value(self, msg: logic_pb2.UInt128Value): self.write(self.format_uint128(msg)) + def pretty_ast_size_limit(self, msg: transactions_pb2.ASTSizeLimit): + self.write("(ast_size_limit") + self.indent_sexp() + self.newline() + self.write(":warning_limit ") + self.write(str(msg.warning_limit)) + self.newline() + self.write(":exception_limit ") + self.write(str(msg.exception_limit)) + self.write(")") + self.dedent() + def pretty_export_csv_columns(self, msg: transactions_pb2.ExportCSVColumns): self.write("(export_csv_columns") self.indent_sexp() @@ -5018,6 +5036,8 @@ def pprint_dispatch(self, msg): self.pretty_storage_integration(msg) elif isinstance(msg, logic_pb2.UInt128Value): self.pretty_u_int128_value(msg) + elif isinstance(msg, transactions_pb2.ASTSizeLimit): + self.pretty_ast_size_limit(msg) elif isinstance(msg, transactions_pb2.ExportCSVColumns): self.pretty_export_csv_columns(msg) elif isinstance(msg, transactions_pb2.IVMConfig): diff --git a/sdks/python/src/lqp/proto/v1/transactions_pb2.py b/sdks/python/src/lqp/proto/v1/transactions_pb2.py index c74a7f05..d2b017c8 100644 --- a/sdks/python/src/lqp/proto/v1/transactions_pb2.py +++ b/sdks/python/src/lqp/proto/v1/transactions_pb2.py @@ -26,7 +26,7 @@ from lqp.proto.v1 import logic_pb2 as relationalai_dot_lqp_dot_v1_dot_logic__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&relationalai/lqp/v1/transactions.proto\x12\x13relationalai.lqp.v1\x1a#relationalai/lqp/v1/fragments.proto\x1a\x1frelationalai/lqp/v1/logic.proto\"\xbc\x01\n\x0bTransaction\x12\x32\n\x06\x65pochs\x18\x01 \x03(\x0b\x32\x1a.relationalai.lqp.v1.EpochR\x06\x65pochs\x12<\n\tconfigure\x18\x02 \x01(\x0b\x32\x1e.relationalai.lqp.v1.ConfigureR\tconfigure\x12\x32\n\x04sync\x18\x03 \x01(\x0b\x32\x19.relationalai.lqp.v1.SyncH\x00R\x04sync\x88\x01\x01\x42\x07\n\x05_sync\"w\n\tConfigure\x12+\n\x11semantics_version\x18\x01 \x01(\x03R\x10semanticsVersion\x12=\n\nivm_config\x18\x02 \x01(\x0b\x32\x1e.relationalai.lqp.v1.IVMConfigR\tivmConfig\"H\n\tIVMConfig\x12;\n\x05level\x18\x01 \x01(\x0e\x32%.relationalai.lqp.v1.MaintenanceLevelR\x05level\"E\n\x04Sync\x12=\n\tfragments\x18\x01 \x03(\x0b\x32\x1f.relationalai.lqp.v1.FragmentIdR\tfragments\"l\n\x05\x45poch\x12\x32\n\x06writes\x18\x01 \x03(\x0b\x32\x1a.relationalai.lqp.v1.WriteR\x06writes\x12/\n\x05reads\x18\x02 \x03(\x0b\x32\x19.relationalai.lqp.v1.ReadR\x05reads\"\x86\x02\n\x05Write\x12\x35\n\x06\x64\x65\x66ine\x18\x01 \x01(\x0b\x32\x1b.relationalai.lqp.v1.DefineH\x00R\x06\x64\x65\x66ine\x12;\n\x08undefine\x18\x02 \x01(\x0b\x32\x1d.relationalai.lqp.v1.UndefineH\x00R\x08undefine\x12\x38\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x1c.relationalai.lqp.v1.ContextH\x00R\x07\x63ontext\x12;\n\x08snapshot\x18\x05 \x01(\x0b\x32\x1d.relationalai.lqp.v1.SnapshotH\x00R\x08snapshotB\x0c\n\nwrite_typeJ\x04\x08\x04\x10\x05\"C\n\x06\x44\x65\x66ine\x12\x39\n\x08\x66ragment\x18\x01 \x01(\x0b\x32\x1d.relationalai.lqp.v1.FragmentR\x08\x66ragment\"L\n\x08Undefine\x12@\n\x0b\x66ragment_id\x18\x01 \x01(\x0b\x32\x1f.relationalai.lqp.v1.FragmentIdR\nfragmentId\"H\n\x07\x43ontext\x12=\n\trelations\x18\x01 \x03(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\trelations\"\x86\x01\n\x0fSnapshotMapping\x12)\n\x10\x64\x65stination_path\x18\x01 \x03(\tR\x0f\x64\x65stinationPath\x12H\n\x0fsource_relation\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\x0esourceRelation\"d\n\x08Snapshot\x12@\n\x08mappings\x18\x01 \x03(\x0b\x32$.relationalai.lqp.v1.SnapshotMappingR\x08mappings\x12\x16\n\x06prefix\x18\x02 \x03(\tR\x06prefix\"\x80\x06\n\x0f\x45xportCSVConfig\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x36\n\x17transaction_output_name\x18\x0c \x01(\tR\x15transactionOutputName\x12\x43\n\ncsv_source\x18\n \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVSourceR\tcsvSource\x12=\n\ncsv_config\x18\x0b \x01(\x0b\x32\x1e.relationalai.lqp.v1.CSVConfigR\tcsvConfig\x12G\n\x0c\x64\x61ta_columns\x18\x02 \x03(\x0b\x32$.relationalai.lqp.v1.ExportCSVColumnR\x0b\x64\x61taColumns\x12*\n\x0epartition_size\x18\x03 \x01(\x03H\x00R\rpartitionSize\x88\x01\x01\x12%\n\x0b\x63ompression\x18\x04 \x01(\tH\x01R\x0b\x63ompression\x88\x01\x01\x12/\n\x11syntax_header_row\x18\x05 \x01(\x08H\x02R\x0fsyntaxHeaderRow\x88\x01\x01\x12\x37\n\x15syntax_missing_string\x18\x06 \x01(\tH\x03R\x13syntaxMissingString\x88\x01\x01\x12&\n\x0csyntax_delim\x18\x07 \x01(\tH\x04R\x0bsyntaxDelim\x88\x01\x01\x12.\n\x10syntax_quotechar\x18\x08 \x01(\tH\x05R\x0fsyntaxQuotechar\x88\x01\x01\x12\x30\n\x11syntax_escapechar\x18\t \x01(\tH\x06R\x10syntaxEscapechar\x88\x01\x01\x42\x11\n\x0f_partition_sizeB\x0e\n\x0c_compressionB\x14\n\x12_syntax_header_rowB\x18\n\x16_syntax_missing_stringB\x0f\n\r_syntax_delimB\x13\n\x11_syntax_quotecharB\x14\n\x12_syntax_escapechar\"t\n\x0f\x45xportCSVColumn\x12\x1f\n\x0b\x63olumn_name\x18\x01 \x01(\tR\ncolumnName\x12@\n\x0b\x63olumn_data\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\ncolumnData\"R\n\x10\x45xportCSVColumns\x12>\n\x07\x63olumns\x18\x01 \x03(\x0b\x32$.relationalai.lqp.v1.ExportCSVColumnR\x07\x63olumns\"\xa9\x01\n\x0f\x45xportCSVSource\x12H\n\x0bgnf_columns\x18\x01 \x01(\x0b\x32%.relationalai.lqp.v1.ExportCSVColumnsH\x00R\ngnfColumns\x12>\n\ttable_def\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdH\x00R\x08tableDefB\x0c\n\ncsv_source\"\xa8\x04\n\x13\x45xportIcebergConfig\x12=\n\x07locator\x18\x01 \x01(\x0b\x32#.relationalai.lqp.v1.IcebergLocatorR\x07locator\x12\x41\n\x06\x63onfig\x18\x02 \x01(\x0b\x32).relationalai.lqp.v1.IcebergCatalogConfigR\x06\x63onfig\x12<\n\ttable_def\x18\x03 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\x08tableDef\x12\x1b\n\x06prefix\x18\x05 \x01(\tH\x00R\x06prefix\x88\x01\x01\x12\x38\n\x16target_file_size_bytes\x18\x06 \x01(\x03H\x01R\x13targetFileSizeBytes\x88\x01\x01\x12 \n\x0b\x63ompression\x18\x07 \x01(\tR\x0b\x63ompression\x12h\n\x10table_properties\x18\x08 \x03(\x0b\x32=.relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntryR\x0ftableProperties\x1a\x42\n\x14TablePropertiesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\t\n\x07_prefixB\x19\n\x17_target_file_size_bytesJ\x04\x08\x04\x10\x05\"\xa4\x02\n\x04Read\x12\x35\n\x06\x64\x65mand\x18\x01 \x01(\x0b\x32\x1b.relationalai.lqp.v1.DemandH\x00R\x06\x64\x65mand\x12\x35\n\x06output\x18\x02 \x01(\x0b\x32\x1b.relationalai.lqp.v1.OutputH\x00R\x06output\x12\x36\n\x07what_if\x18\x03 \x01(\x0b\x32\x1b.relationalai.lqp.v1.WhatIfH\x00R\x06whatIf\x12\x32\n\x05\x61\x62ort\x18\x04 \x01(\x0b\x32\x1a.relationalai.lqp.v1.AbortH\x00R\x05\x61\x62ort\x12\x35\n\x06\x65xport\x18\x05 \x01(\x0b\x32\x1b.relationalai.lqp.v1.ExportH\x00R\x06\x65xportB\x0b\n\tread_type\"J\n\x06\x44\x65mand\x12@\n\x0brelation_id\x18\x01 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId\"^\n\x06Output\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x0brelation_id\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId\"\xb3\x01\n\x06\x45xport\x12\x45\n\ncsv_config\x18\x01 \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVConfigH\x00R\tcsvConfig\x12Q\n\x0eiceberg_config\x18\x02 \x01(\x0b\x32(.relationalai.lqp.v1.ExportIcebergConfigH\x00R\ricebergConfigB\x0f\n\rexport_config\"R\n\x06WhatIf\x12\x16\n\x06\x62ranch\x18\x01 \x01(\tR\x06\x62ranch\x12\x30\n\x05\x65poch\x18\x02 \x01(\x0b\x32\x1a.relationalai.lqp.v1.EpochR\x05\x65poch\"]\n\x05\x41\x62ort\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x0brelation_id\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId*\x87\x01\n\x10MaintenanceLevel\x12!\n\x1dMAINTENANCE_LEVEL_UNSPECIFIED\x10\x00\x12\x19\n\x15MAINTENANCE_LEVEL_OFF\x10\x01\x12\x1a\n\x16MAINTENANCE_LEVEL_AUTO\x10\x02\x12\x19\n\x15MAINTENANCE_LEVEL_ALL\x10\x03\x42\x43ZAgithub.com/RelationalAI/logical-query-protocol/sdks/go/src/lqp/v1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&relationalai/lqp/v1/transactions.proto\x12\x13relationalai.lqp.v1\x1a#relationalai/lqp/v1/fragments.proto\x1a\x1frelationalai/lqp/v1/logic.proto\"\xbc\x01\n\x0bTransaction\x12\x32\n\x06\x65pochs\x18\x01 \x03(\x0b\x32\x1a.relationalai.lqp.v1.EpochR\x06\x65pochs\x12<\n\tconfigure\x18\x02 \x01(\x0b\x32\x1e.relationalai.lqp.v1.ConfigureR\tconfigure\x12\x32\n\x04sync\x18\x03 \x01(\x0b\x32\x19.relationalai.lqp.v1.SyncH\x00R\x04sync\x88\x01\x01\x42\x07\n\x05_sync\"\xc0\x01\n\tConfigure\x12+\n\x11semantics_version\x18\x01 \x01(\x03R\x10semanticsVersion\x12=\n\nivm_config\x18\x02 \x01(\x0b\x32\x1e.relationalai.lqp.v1.IVMConfigR\tivmConfig\x12G\n\x0e\x61st_size_limit\x18\x03 \x01(\x0b\x32!.relationalai.lqp.v1.ASTSizeLimitR\x0c\x61stSizeLimit\"H\n\tIVMConfig\x12;\n\x05level\x18\x01 \x01(\x0e\x32%.relationalai.lqp.v1.MaintenanceLevelR\x05level\"\\\n\x0c\x41STSizeLimit\x12#\n\rwarning_limit\x18\x01 \x01(\x03R\x0cwarningLimit\x12\'\n\x0f\x65xception_limit\x18\x02 \x01(\x03R\x0e\x65xceptionLimit\"E\n\x04Sync\x12=\n\tfragments\x18\x01 \x03(\x0b\x32\x1f.relationalai.lqp.v1.FragmentIdR\tfragments\"l\n\x05\x45poch\x12\x32\n\x06writes\x18\x01 \x03(\x0b\x32\x1a.relationalai.lqp.v1.WriteR\x06writes\x12/\n\x05reads\x18\x02 \x03(\x0b\x32\x19.relationalai.lqp.v1.ReadR\x05reads\"\x86\x02\n\x05Write\x12\x35\n\x06\x64\x65\x66ine\x18\x01 \x01(\x0b\x32\x1b.relationalai.lqp.v1.DefineH\x00R\x06\x64\x65\x66ine\x12;\n\x08undefine\x18\x02 \x01(\x0b\x32\x1d.relationalai.lqp.v1.UndefineH\x00R\x08undefine\x12\x38\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x1c.relationalai.lqp.v1.ContextH\x00R\x07\x63ontext\x12;\n\x08snapshot\x18\x05 \x01(\x0b\x32\x1d.relationalai.lqp.v1.SnapshotH\x00R\x08snapshotB\x0c\n\nwrite_typeJ\x04\x08\x04\x10\x05\"C\n\x06\x44\x65\x66ine\x12\x39\n\x08\x66ragment\x18\x01 \x01(\x0b\x32\x1d.relationalai.lqp.v1.FragmentR\x08\x66ragment\"L\n\x08Undefine\x12@\n\x0b\x66ragment_id\x18\x01 \x01(\x0b\x32\x1f.relationalai.lqp.v1.FragmentIdR\nfragmentId\"H\n\x07\x43ontext\x12=\n\trelations\x18\x01 \x03(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\trelations\"\x86\x01\n\x0fSnapshotMapping\x12)\n\x10\x64\x65stination_path\x18\x01 \x03(\tR\x0f\x64\x65stinationPath\x12H\n\x0fsource_relation\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\x0esourceRelation\"d\n\x08Snapshot\x12@\n\x08mappings\x18\x01 \x03(\x0b\x32$.relationalai.lqp.v1.SnapshotMappingR\x08mappings\x12\x16\n\x06prefix\x18\x02 \x03(\tR\x06prefix\"\x80\x06\n\x0f\x45xportCSVConfig\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x36\n\x17transaction_output_name\x18\x0c \x01(\tR\x15transactionOutputName\x12\x43\n\ncsv_source\x18\n \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVSourceR\tcsvSource\x12=\n\ncsv_config\x18\x0b \x01(\x0b\x32\x1e.relationalai.lqp.v1.CSVConfigR\tcsvConfig\x12G\n\x0c\x64\x61ta_columns\x18\x02 \x03(\x0b\x32$.relationalai.lqp.v1.ExportCSVColumnR\x0b\x64\x61taColumns\x12*\n\x0epartition_size\x18\x03 \x01(\x03H\x00R\rpartitionSize\x88\x01\x01\x12%\n\x0b\x63ompression\x18\x04 \x01(\tH\x01R\x0b\x63ompression\x88\x01\x01\x12/\n\x11syntax_header_row\x18\x05 \x01(\x08H\x02R\x0fsyntaxHeaderRow\x88\x01\x01\x12\x37\n\x15syntax_missing_string\x18\x06 \x01(\tH\x03R\x13syntaxMissingString\x88\x01\x01\x12&\n\x0csyntax_delim\x18\x07 \x01(\tH\x04R\x0bsyntaxDelim\x88\x01\x01\x12.\n\x10syntax_quotechar\x18\x08 \x01(\tH\x05R\x0fsyntaxQuotechar\x88\x01\x01\x12\x30\n\x11syntax_escapechar\x18\t \x01(\tH\x06R\x10syntaxEscapechar\x88\x01\x01\x42\x11\n\x0f_partition_sizeB\x0e\n\x0c_compressionB\x14\n\x12_syntax_header_rowB\x18\n\x16_syntax_missing_stringB\x0f\n\r_syntax_delimB\x13\n\x11_syntax_quotecharB\x14\n\x12_syntax_escapechar\"t\n\x0f\x45xportCSVColumn\x12\x1f\n\x0b\x63olumn_name\x18\x01 \x01(\tR\ncolumnName\x12@\n\x0b\x63olumn_data\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\ncolumnData\"R\n\x10\x45xportCSVColumns\x12>\n\x07\x63olumns\x18\x01 \x03(\x0b\x32$.relationalai.lqp.v1.ExportCSVColumnR\x07\x63olumns\"\xa9\x01\n\x0f\x45xportCSVSource\x12H\n\x0bgnf_columns\x18\x01 \x01(\x0b\x32%.relationalai.lqp.v1.ExportCSVColumnsH\x00R\ngnfColumns\x12>\n\ttable_def\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdH\x00R\x08tableDefB\x0c\n\ncsv_source\"\xa8\x04\n\x13\x45xportIcebergConfig\x12=\n\x07locator\x18\x01 \x01(\x0b\x32#.relationalai.lqp.v1.IcebergLocatorR\x07locator\x12\x41\n\x06\x63onfig\x18\x02 \x01(\x0b\x32).relationalai.lqp.v1.IcebergCatalogConfigR\x06\x63onfig\x12<\n\ttable_def\x18\x03 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\x08tableDef\x12\x1b\n\x06prefix\x18\x05 \x01(\tH\x00R\x06prefix\x88\x01\x01\x12\x38\n\x16target_file_size_bytes\x18\x06 \x01(\x03H\x01R\x13targetFileSizeBytes\x88\x01\x01\x12 \n\x0b\x63ompression\x18\x07 \x01(\tR\x0b\x63ompression\x12h\n\x10table_properties\x18\x08 \x03(\x0b\x32=.relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntryR\x0ftableProperties\x1a\x42\n\x14TablePropertiesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\t\n\x07_prefixB\x19\n\x17_target_file_size_bytesJ\x04\x08\x04\x10\x05\"\xa4\x02\n\x04Read\x12\x35\n\x06\x64\x65mand\x18\x01 \x01(\x0b\x32\x1b.relationalai.lqp.v1.DemandH\x00R\x06\x64\x65mand\x12\x35\n\x06output\x18\x02 \x01(\x0b\x32\x1b.relationalai.lqp.v1.OutputH\x00R\x06output\x12\x36\n\x07what_if\x18\x03 \x01(\x0b\x32\x1b.relationalai.lqp.v1.WhatIfH\x00R\x06whatIf\x12\x32\n\x05\x61\x62ort\x18\x04 \x01(\x0b\x32\x1a.relationalai.lqp.v1.AbortH\x00R\x05\x61\x62ort\x12\x35\n\x06\x65xport\x18\x05 \x01(\x0b\x32\x1b.relationalai.lqp.v1.ExportH\x00R\x06\x65xportB\x0b\n\tread_type\"J\n\x06\x44\x65mand\x12@\n\x0brelation_id\x18\x01 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId\"^\n\x06Output\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x0brelation_id\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId\"\xb3\x01\n\x06\x45xport\x12\x45\n\ncsv_config\x18\x01 \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVConfigH\x00R\tcsvConfig\x12Q\n\x0eiceberg_config\x18\x02 \x01(\x0b\x32(.relationalai.lqp.v1.ExportIcebergConfigH\x00R\ricebergConfigB\x0f\n\rexport_config\"R\n\x06WhatIf\x12\x16\n\x06\x62ranch\x18\x01 \x01(\tR\x06\x62ranch\x12\x30\n\x05\x65poch\x18\x02 \x01(\x0b\x32\x1a.relationalai.lqp.v1.EpochR\x05\x65poch\"]\n\x05\x41\x62ort\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x0brelation_id\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId*\x87\x01\n\x10MaintenanceLevel\x12!\n\x1dMAINTENANCE_LEVEL_UNSPECIFIED\x10\x00\x12\x19\n\x15MAINTENANCE_LEVEL_OFF\x10\x01\x12\x1a\n\x16MAINTENANCE_LEVEL_AUTO\x10\x02\x12\x19\n\x15MAINTENANCE_LEVEL_ALL\x10\x03\x42\x43ZAgithub.com/RelationalAI/logical-query-protocol/sdks/go/src/lqp/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -36,52 +36,54 @@ _globals['DESCRIPTOR']._serialized_options = b'ZAgithub.com/RelationalAI/logical-query-protocol/sdks/go/src/lqp/v1' _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._loaded_options = None _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_options = b'8\001' - _globals['_MAINTENANCELEVEL']._serialized_start=3954 - _globals['_MAINTENANCELEVEL']._serialized_end=4089 + _globals['_MAINTENANCELEVEL']._serialized_start=4122 + _globals['_MAINTENANCELEVEL']._serialized_end=4257 _globals['_TRANSACTION']._serialized_start=134 _globals['_TRANSACTION']._serialized_end=322 - _globals['_CONFIGURE']._serialized_start=324 - _globals['_CONFIGURE']._serialized_end=443 - _globals['_IVMCONFIG']._serialized_start=445 - _globals['_IVMCONFIG']._serialized_end=517 - _globals['_SYNC']._serialized_start=519 - _globals['_SYNC']._serialized_end=588 - _globals['_EPOCH']._serialized_start=590 - _globals['_EPOCH']._serialized_end=698 - _globals['_WRITE']._serialized_start=701 - _globals['_WRITE']._serialized_end=963 - _globals['_DEFINE']._serialized_start=965 - _globals['_DEFINE']._serialized_end=1032 - _globals['_UNDEFINE']._serialized_start=1034 - _globals['_UNDEFINE']._serialized_end=1110 - _globals['_CONTEXT']._serialized_start=1112 - _globals['_CONTEXT']._serialized_end=1184 - _globals['_SNAPSHOTMAPPING']._serialized_start=1187 - _globals['_SNAPSHOTMAPPING']._serialized_end=1321 - _globals['_SNAPSHOT']._serialized_start=1323 - _globals['_SNAPSHOT']._serialized_end=1423 - _globals['_EXPORTCSVCONFIG']._serialized_start=1426 - _globals['_EXPORTCSVCONFIG']._serialized_end=2194 - _globals['_EXPORTCSVCOLUMN']._serialized_start=2196 - _globals['_EXPORTCSVCOLUMN']._serialized_end=2312 - _globals['_EXPORTCSVCOLUMNS']._serialized_start=2314 - _globals['_EXPORTCSVCOLUMNS']._serialized_end=2396 - _globals['_EXPORTCSVSOURCE']._serialized_start=2399 - _globals['_EXPORTCSVSOURCE']._serialized_end=2568 - _globals['_EXPORTICEBERGCONFIG']._serialized_start=2571 - _globals['_EXPORTICEBERGCONFIG']._serialized_end=3123 - _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_start=3013 - _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_end=3079 - _globals['_READ']._serialized_start=3126 - _globals['_READ']._serialized_end=3418 - _globals['_DEMAND']._serialized_start=3420 - _globals['_DEMAND']._serialized_end=3494 - _globals['_OUTPUT']._serialized_start=3496 - _globals['_OUTPUT']._serialized_end=3590 - _globals['_EXPORT']._serialized_start=3593 - _globals['_EXPORT']._serialized_end=3772 - _globals['_WHATIF']._serialized_start=3774 - _globals['_WHATIF']._serialized_end=3856 - _globals['_ABORT']._serialized_start=3858 - _globals['_ABORT']._serialized_end=3951 + _globals['_CONFIGURE']._serialized_start=325 + _globals['_CONFIGURE']._serialized_end=517 + _globals['_IVMCONFIG']._serialized_start=519 + _globals['_IVMCONFIG']._serialized_end=591 + _globals['_ASTSIZELIMIT']._serialized_start=593 + _globals['_ASTSIZELIMIT']._serialized_end=685 + _globals['_SYNC']._serialized_start=687 + _globals['_SYNC']._serialized_end=756 + _globals['_EPOCH']._serialized_start=758 + _globals['_EPOCH']._serialized_end=866 + _globals['_WRITE']._serialized_start=869 + _globals['_WRITE']._serialized_end=1131 + _globals['_DEFINE']._serialized_start=1133 + _globals['_DEFINE']._serialized_end=1200 + _globals['_UNDEFINE']._serialized_start=1202 + _globals['_UNDEFINE']._serialized_end=1278 + _globals['_CONTEXT']._serialized_start=1280 + _globals['_CONTEXT']._serialized_end=1352 + _globals['_SNAPSHOTMAPPING']._serialized_start=1355 + _globals['_SNAPSHOTMAPPING']._serialized_end=1489 + _globals['_SNAPSHOT']._serialized_start=1491 + _globals['_SNAPSHOT']._serialized_end=1591 + _globals['_EXPORTCSVCONFIG']._serialized_start=1594 + _globals['_EXPORTCSVCONFIG']._serialized_end=2362 + _globals['_EXPORTCSVCOLUMN']._serialized_start=2364 + _globals['_EXPORTCSVCOLUMN']._serialized_end=2480 + _globals['_EXPORTCSVCOLUMNS']._serialized_start=2482 + _globals['_EXPORTCSVCOLUMNS']._serialized_end=2564 + _globals['_EXPORTCSVSOURCE']._serialized_start=2567 + _globals['_EXPORTCSVSOURCE']._serialized_end=2736 + _globals['_EXPORTICEBERGCONFIG']._serialized_start=2739 + _globals['_EXPORTICEBERGCONFIG']._serialized_end=3291 + _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_start=3181 + _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_end=3247 + _globals['_READ']._serialized_start=3294 + _globals['_READ']._serialized_end=3586 + _globals['_DEMAND']._serialized_start=3588 + _globals['_DEMAND']._serialized_end=3662 + _globals['_OUTPUT']._serialized_start=3664 + _globals['_OUTPUT']._serialized_end=3758 + _globals['_EXPORT']._serialized_start=3761 + _globals['_EXPORT']._serialized_end=3940 + _globals['_WHATIF']._serialized_start=3942 + _globals['_WHATIF']._serialized_end=4024 + _globals['_ABORT']._serialized_start=4026 + _globals['_ABORT']._serialized_end=4119 # @@protoc_insertion_point(module_scope) diff --git a/sdks/python/src/lqp/proto/v1/transactions_pb2.pyi b/sdks/python/src/lqp/proto/v1/transactions_pb2.pyi index 78c1c0b2..4c8dcece 100644 --- a/sdks/python/src/lqp/proto/v1/transactions_pb2.pyi +++ b/sdks/python/src/lqp/proto/v1/transactions_pb2.pyi @@ -31,12 +31,14 @@ class Transaction(_message.Message): def __init__(self, epochs: _Optional[_Iterable[_Union[Epoch, _Mapping]]] = ..., configure: _Optional[_Union[Configure, _Mapping]] = ..., sync: _Optional[_Union[Sync, _Mapping]] = ...) -> None: ... class Configure(_message.Message): - __slots__ = ("semantics_version", "ivm_config") + __slots__ = ("semantics_version", "ivm_config", "ast_size_limit") SEMANTICS_VERSION_FIELD_NUMBER: _ClassVar[int] IVM_CONFIG_FIELD_NUMBER: _ClassVar[int] + AST_SIZE_LIMIT_FIELD_NUMBER: _ClassVar[int] semantics_version: int ivm_config: IVMConfig - def __init__(self, semantics_version: _Optional[int] = ..., ivm_config: _Optional[_Union[IVMConfig, _Mapping]] = ...) -> None: ... + ast_size_limit: ASTSizeLimit + def __init__(self, semantics_version: _Optional[int] = ..., ivm_config: _Optional[_Union[IVMConfig, _Mapping]] = ..., ast_size_limit: _Optional[_Union[ASTSizeLimit, _Mapping]] = ...) -> None: ... class IVMConfig(_message.Message): __slots__ = ("level",) @@ -44,6 +46,14 @@ class IVMConfig(_message.Message): level: MaintenanceLevel def __init__(self, level: _Optional[_Union[MaintenanceLevel, str]] = ...) -> None: ... +class ASTSizeLimit(_message.Message): + __slots__ = ("warning_limit", "exception_limit") + WARNING_LIMIT_FIELD_NUMBER: _ClassVar[int] + EXCEPTION_LIMIT_FIELD_NUMBER: _ClassVar[int] + warning_limit: int + exception_limit: int + def __init__(self, warning_limit: _Optional[int] = ..., exception_limit: _Optional[int] = ...) -> None: ... + class Sync(_message.Message): __slots__ = ("fragments",) FRAGMENTS_FIELD_NUMBER: _ClassVar[int] diff --git a/sdks/python/uv.lock b/sdks/python/uv.lock index 37e64873..9acfe4af 100644 --- a/sdks/python/uv.lock +++ b/sdks/python/uv.lock @@ -62,7 +62,7 @@ wheels = [ [[package]] name = "lqp" -version = "0.5.3" +version = "0.5.6" source = { editable = "." } dependencies = [ { name = "protobuf" }, diff --git a/tests/bin/ast_size_limit.bin b/tests/bin/ast_size_limit.bin new file mode 100644 index 0000000000000000000000000000000000000000..f08fcd8745298fafdb57df215ae0d74342fcd8c7 GIT binary patch literal 188 zcmd;D&B)ck$koco)x^lf!o`$kC=|mL#U;dP)#I `output` From 17548ea6349194d1f64d4f0b3552b269703f78a6 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Fri, 24 Jul 2026 16:04:35 +1000 Subject: [PATCH 06/10] Another direction - add a generic config values dict --- proto/relationalai/lqp/v1/transactions.proto | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/proto/relationalai/lqp/v1/transactions.proto b/proto/relationalai/lqp/v1/transactions.proto index 5218264e..dd6ab145 100644 --- a/proto/relationalai/lqp/v1/transactions.proto +++ b/proto/relationalai/lqp/v1/transactions.proto @@ -16,7 +16,10 @@ message Transaction { message Configure { int64 semantics_version = 1; IVMConfig ivm_config = 2; - ASTSizeLimit ast_size_limit = 3; + + // A generic configuration dictionary. The engine can choose how to interpret any entries + // in this config dict. + map configuration_values = 3; } message IVMConfig { @@ -30,11 +33,6 @@ enum MaintenanceLevel { MAINTENANCE_LEVEL_ALL = 3; } -message ASTSizeLimit { - int64 warning_limit = 1; - int64 exception_limit = 2; -} - message Sync { repeated FragmentId fragments = 1; } From 37749237ba43ea315490eb97d50e395952d5e82b Mon Sep 17 00:00:00 2001 From: David Zhao Date: Fri, 24 Jul 2026 16:30:38 +1000 Subject: [PATCH 07/10] Replace ASTSizeLimit with generic configuration_values dict in Configure Drops the ASTSizeLimit message in favour of map configuration_values on Configure (field 3). Known keys (semantics_version, ivm.maintenance_level) are still extracted into structured fields; all other config-dict entries flow into configuration_values. Also extends the meta type system and Go codegen to support map proto fields: type_env.py now resolves message-typed map values, and two new builtins (value_map_from_pairs / value_map_to_pairs) generate typed Go helpers (valueMapFromPairs / valueMapToPairs) that return/accept map[string]*pb.Value instead of the generic map[string]interface{} / map[string]string variants. Co-Authored-By: Claude Sonnet 4.6 --- meta/src/meta/codegen_templates.py | 6 +++++ meta/src/meta/grammar.y | 23 +++++++----------- meta/src/meta/target_builtins.py | 9 +++++++ meta/src/meta/templates/parser.go.template | 13 ++++++++++ .../meta/templates/pretty_printer.go.template | 17 +++++++++++++ meta/src/meta/type_env.py | 13 +++++++++- tests/bin/ast_size_limit.bin | Bin 188 -> 0 bytes ...ize_limit.lqp => configuration_values.lqp} | 0 tests/pretty/ast_size_limit.lqp | 10 -------- tests/pretty_debug/ast_size_limit.lqp | 16 ------------ 10 files changed, 66 insertions(+), 41 deletions(-) delete mode 100644 tests/bin/ast_size_limit.bin rename tests/lqp/{ast_size_limit.lqp => configuration_values.lqp} (100%) delete mode 100644 tests/pretty/ast_size_limit.lqp delete mode 100644 tests/pretty_debug/ast_size_limit.lqp diff --git a/meta/src/meta/codegen_templates.py b/meta/src/meta/codegen_templates.py index 8eae3262..4204a473 100644 --- a/meta/src/meta/codegen_templates.py +++ b/meta/src/meta/codegen_templates.py @@ -34,8 +34,10 @@ class BuiltinTemplate: "make_empty_bytes": BuiltinTemplate('b""'), "dict_from_list": BuiltinTemplate("dict({0})"), "string_map_from_pairs": BuiltinTemplate("dict({0})"), + "value_map_from_pairs": BuiltinTemplate("dict({0})"), "dict_get": BuiltinTemplate("{0}.get({1})"), "dict_to_pairs": BuiltinTemplate("sorted({0}.items())"), + "value_map_to_pairs": BuiltinTemplate("sorted({0}.items())"), "has_proto_field": BuiltinTemplate("{0}.HasField({1})"), "string_to_upper": BuiltinTemplate("{0}.upper()"), "string_in_list": BuiltinTemplate("{0} in {1}"), @@ -146,8 +148,10 @@ class BuiltinTemplate: "make_empty_bytes": BuiltinTemplate("UInt8[]"), "dict_from_list": BuiltinTemplate("Dict({0})"), "string_map_from_pairs": BuiltinTemplate("Dict({0})"), + "value_map_from_pairs": BuiltinTemplate("Dict({0})"), "dict_get": BuiltinTemplate("get({0}, {1}, nothing)"), "dict_to_pairs": BuiltinTemplate("sort([(k, v) for (k, v) in {0}])"), + "value_map_to_pairs": BuiltinTemplate("sort([(k, v) for (k, v) in {0}])"), "has_proto_field": BuiltinTemplate("_has_proto_field({0}, Symbol({1}))"), "string_to_upper": BuiltinTemplate("uppercase({0})"), "string_in_list": BuiltinTemplate("({0} in {1})"), @@ -263,8 +267,10 @@ class BuiltinTemplate: "make_empty_bytes": BuiltinTemplate("[]byte{}"), "dict_from_list": BuiltinTemplate("dictFromList({0})"), "string_map_from_pairs": BuiltinTemplate("stringMapFromPairs({0})"), + "value_map_from_pairs": BuiltinTemplate("valueMapFromPairs({0})"), "dict_get": BuiltinTemplate("dictGetValue({0}, {1})"), "dict_to_pairs": BuiltinTemplate("dictToPairs({0})"), + "value_map_to_pairs": BuiltinTemplate("valueMapToPairs({0})"), "has_proto_field": BuiltinTemplate("hasProtoField({0}, {1})"), "string_to_upper": BuiltinTemplate("strings.ToUpper({0})"), "string_in_list": BuiltinTemplate("stringInList({0}, {1})"), diff --git a/meta/src/meta/grammar.y b/meta/src/meta/grammar.y index ca442038..cb8b35ca 100644 --- a/meta/src/meta/grammar.y +++ b/meta/src/meta/grammar.y @@ -218,7 +218,6 @@ # or by parser internals, rather than being directly produced by grammar production rules. # Without these directives, the validator would report errors that these message types have # no grammar rules producing them. -%validator_ignore_completeness ASTSizeLimit %validator_ignore_completeness DebugInfo %validator_ignore_completeness IVMConfig %validator_ignore_completeness UInt128Value @@ -1682,11 +1681,9 @@ def construct_betree_info( def default_configure() -> transactions.Configure: ivm_config: transactions.IVMConfig = transactions.IVMConfig(level=transactions.MaintenanceLevel.MAINTENANCE_LEVEL_OFF) - ast_size_limit: transactions.ASTSizeLimit = transactions.ASTSizeLimit(warning_limit=0, exception_limit=0) return transactions.Configure( semantics_version=0, ivm_config=ivm_config, - ast_size_limit=ast_size_limit, ) def construct_configure(config_dict: Sequence[Tuple[String, logic.Value]]) -> transactions.Configure: @@ -1705,13 +1702,15 @@ def construct_configure(config_dict: Sequence[Tuple[String, logic.Value]]) -> tr maintenance_level = transactions.MaintenanceLevel.MAINTENANCE_LEVEL_OFF ivm_config: transactions.IVMConfig = transactions.IVMConfig(level=maintenance_level) semantics_version: int = _extract_value_int64(builtin.dict_get(config, "semantics_version"), 0) - warning_limit: int = _extract_value_int64(builtin.dict_get(config, "ast_size.warning_limit"), 0) - exception_limit: int = _extract_value_int64(builtin.dict_get(config, "ast_size.exception_limit"), 0) - ast_size_limit: transactions.ASTSizeLimit = transactions.ASTSizeLimit(warning_limit=warning_limit, exception_limit=exception_limit) + config_values_pairs: List[Tuple[String, logic.Value]] = list[Tuple[String, logic.Value]]() + for pair in config_dict: + if pair[0] != "semantics_version" and pair[0] != "ivm.maintenance_level": + builtin.list_push(config_values_pairs, pair) + configuration_values: Dict[String, logic.Value] = builtin.value_map_from_pairs(config_values_pairs) return transactions.Configure( semantics_version=semantics_version, ivm_config=ivm_config, - ast_size_limit=ast_size_limit, + configuration_values=configuration_values, ) def construct_export_csv_config( @@ -1784,9 +1783,7 @@ def is_default_configure(cfg: transactions.Configure) -> bool: return False if cfg.ivm_config.level != transactions.MaintenanceLevel.MAINTENANCE_LEVEL_OFF: return False - if cfg.ast_size_limit.warning_limit != 0: - return False - if cfg.ast_size_limit.exception_limit != 0: + if builtin.length(builtin.value_map_to_pairs(cfg.configuration_values)) != 0: return False return True @@ -1800,10 +1797,8 @@ def deconstruct_configure(msg: transactions.Configure) -> List[Tuple[String, log elif msg.ivm_config.level == transactions.MaintenanceLevel.MAINTENANCE_LEVEL_OFF: builtin.list_push(result, builtin.tuple("ivm.maintenance_level", _make_value_string("off"))) builtin.list_push(result, builtin.tuple("semantics_version", _make_value_int64(msg.semantics_version))) - if msg.ast_size_limit.warning_limit != 0: - builtin.list_push(result, builtin.tuple("ast_size.warning_limit", _make_value_int64(msg.ast_size_limit.warning_limit))) - if msg.ast_size_limit.exception_limit != 0: - builtin.list_push(result, builtin.tuple("ast_size.exception_limit", _make_value_int64(msg.ast_size_limit.exception_limit))) + for pair in builtin.value_map_to_pairs(msg.configuration_values): + builtin.list_push(result, pair) return builtin.list_sort(result) diff --git a/meta/src/meta/target_builtins.py b/meta/src/meta/target_builtins.py index 4e58fe72..6353d5ac 100644 --- a/meta/src/meta/target_builtins.py +++ b/meta/src/meta/target_builtins.py @@ -224,6 +224,15 @@ def is_builtin(name: str) -> bool: ) register_builtin("dict_get", [DictType(K, V), K], OptionType(V)) register_builtin("dict_to_pairs", [DictType(K, V)], ListType(TupleType([K, V]))) +# Typed map helpers for map proto fields. Same semantics as +# dict_from_list / dict_to_pairs, but Go generates typed helpers (*pb.Value) +# instead of generic interface{}/string helpers. +register_builtin( + "value_map_from_pairs", + [SequenceType(TupleType([K, V]))], + DictType(K, V), +) +register_builtin("value_map_to_pairs", [DictType(K, V)], ListType(TupleType([K, V]))) # === Protobuf operations === register_builtin("has_proto_field", [T, STRING], BOOLEAN) # msg.HasField(field_name) diff --git a/meta/src/meta/templates/parser.go.template b/meta/src/meta/templates/parser.go.template index 7bff686c..a51dc503 100644 --- a/meta/src/meta/templates/parser.go.template +++ b/meta/src/meta/templates/parser.go.template @@ -543,6 +543,19 @@ func dictFromList(pairs [][]interface{{}}) map[string]interface{{}} {{ return result }} +// valueMapFromPairs builds map[string]*pb.Value from (key, *pb.Value) pair rows. +func valueMapFromPairs(pairs [][]interface{{}}) map[string]*pb.Value {{ + out := make(map[string]*pb.Value) + for _, pair := range pairs {{ + if len(pair) >= 2 {{ + k, _ := pair[0].(string) + v, _ := pair[1].(*pb.Value) + out[k] = v + }} + }} + return out +}} + // stringMapFromPairs builds map[string]string from (prop key value) pair rows. func stringMapFromPairs(pairs [][]interface{{}}) map[string]string {{ out := make(map[string]string) diff --git a/meta/src/meta/templates/pretty_printer.go.template b/meta/src/meta/templates/pretty_printer.go.template index 478c35ae..9c8b8cb6 100644 --- a/meta/src/meta/templates/pretty_printer.go.template +++ b/meta/src/meta/templates/pretty_printer.go.template @@ -264,6 +264,23 @@ func listSort(pairs [][]interface{{}}) [][]interface{{}} {{ return pairs }} +// valueMapToPairs converts map[string]*pb.Value to sorted key/value rows for pretty printing. +func valueMapToPairs(m map[string]*pb.Value) [][]interface{{}} {{ + if len(m) == 0 {{ + return nil + }} + keys := make([]string, 0, len(m)) + for k := range m {{ + keys = append(keys, k) + }} + sort.Strings(keys) + out := make([][]interface{{}}, 0, len(keys)) + for _, k := range keys {{ + out = append(out, []interface{{}}{{k, m[k]}}) + }} + return out +}} + // dictToPairs converts map[string]string to sorted key/value rows for pretty printing. func dictToPairs(m map[string]string) [][]interface{{}} {{ if len(m) == 0 {{ diff --git a/meta/src/meta/type_env.py b/meta/src/meta/type_env.py index c86e5436..9f28f054 100644 --- a/meta/src/meta/type_env.py +++ b/meta/src/meta/type_env.py @@ -98,7 +98,18 @@ def _proto_type_to_target(self, proto_field: ProtoField) -> TargetType: # Handle map fields if proto_field.is_map: key_type = _scalar_to_target(proto_field.map_key_type) - value_type = _scalar_to_target(proto_field.map_value_type) + map_value_type = proto_field.map_value_type + if map_value_type in _PRIMITIVE_TO_BASE_TYPE: + value_type: TargetType = BaseType( + _PRIMITIVE_TO_BASE_TYPE[map_value_type] + ) + elif map_value_type in self.parser.messages: + message = self.parser.messages[map_value_type] + value_type = MessageType(message.module, map_value_type) + else: + value_type = _scalar_to_target( + map_value_type + ) # raises for unknown types return DictType(key_type, value_type) # Get base type diff --git a/tests/bin/ast_size_limit.bin b/tests/bin/ast_size_limit.bin deleted file mode 100644 index f08fcd8745298fafdb57df215ae0d74342fcd8c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmd;D&B)ck$koco)x^lf!o`$kC=|mL#U;dP)#I `output` From 954b5481fd938d649e5de7ebc05f79bcee98c44d Mon Sep 17 00:00:00 2001 From: David Zhao Date: Fri, 24 Jul 2026 16:30:45 +1000 Subject: [PATCH 08/10] Update Configure equality in Julia SDK for configuration_values Remove ASTSizeLimit equality (message no longer exists) and replace ast_size_limit with configuration_values in Configure ==, hash, isequal. Co-Authored-By: Claude Sonnet 4.6 --- sdks/julia/LogicalQueryProtocol.jl/src/equality.jl | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/sdks/julia/LogicalQueryProtocol.jl/src/equality.jl b/sdks/julia/LogicalQueryProtocol.jl/src/equality.jl index 1c9cbc41..8f47058a 100644 --- a/sdks/julia/LogicalQueryProtocol.jl/src/equality.jl +++ b/sdks/julia/LogicalQueryProtocol.jl/src/equality.jl @@ -493,15 +493,10 @@ Base.:(==)(a::IVMConfig, b::IVMConfig) = a.level == b.level Base.hash(a::IVMConfig, h::UInt) = hash(a.level, h) Base.isequal(a::IVMConfig, b::IVMConfig) = isequal(a.level, b.level) -# ASTSizeLimit -Base.:(==)(a::ASTSizeLimit, b::ASTSizeLimit) = a.warning_limit == b.warning_limit && a.exception_limit == b.exception_limit -Base.hash(a::ASTSizeLimit, h::UInt) = hash(a.exception_limit, hash(a.warning_limit, h)) -Base.isequal(a::ASTSizeLimit, b::ASTSizeLimit) = isequal(a.warning_limit, b.warning_limit) && isequal(a.exception_limit, b.exception_limit) - # Configure -Base.:(==)(a::Configure, b::Configure) = a.semantics_version == b.semantics_version && a.ivm_config == b.ivm_config && a.ast_size_limit == b.ast_size_limit -Base.hash(a::Configure, h::UInt) = hash(a.ast_size_limit, hash(a.ivm_config, hash(a.semantics_version, h))) -Base.isequal(a::Configure, b::Configure) = isequal(a.semantics_version, b.semantics_version) && isequal(a.ivm_config, b.ivm_config) && isequal(a.ast_size_limit, b.ast_size_limit) +Base.:(==)(a::Configure, b::Configure) = a.semantics_version == b.semantics_version && a.ivm_config == b.ivm_config && a.configuration_values == b.configuration_values +Base.hash(a::Configure, h::UInt) = hash(a.configuration_values, hash(a.ivm_config, hash(a.semantics_version, h))) +Base.isequal(a::Configure, b::Configure) = isequal(a.semantics_version, b.semantics_version) && isequal(a.ivm_config, b.ivm_config) && isequal(a.configuration_values, b.configuration_values) # Epoch Base.:(==)(a::Epoch, b::Epoch) = a.writes == b.writes && a.reads == b.reads From 434cd3d78c955fb3aa692d8d6b15df482baea276 Mon Sep 17 00:00:00 2001 From: David Zhao Date: Fri, 24 Jul 2026 16:31:01 +1000 Subject: [PATCH 09/10] Regenerate parsers, printers, and test snapshots Co-Authored-By: Claude Sonnet 4.6 --- sdks/go/src/lqp/v1/transactions.pb.go | 753 ++++++++---------- sdks/go/src/parser.go | 112 +-- sdks/go/src/pretty.go | 214 +++-- .../relationalai/lqp/v1/transactions_pb.jl | 61 +- .../LogicalQueryProtocol.jl/src/parser.jl | 91 ++- .../LogicalQueryProtocol.jl/src/pretty.jl | 212 +++-- sdks/python/src/lqp/gen/parser.py | 89 +-- sdks/python/src/lqp/gen/pretty.py | 178 ++--- .../src/lqp/proto/v1/transactions_pb2.py | 98 +-- .../src/lqp/proto/v1/transactions_pb2.pyi | 23 +- tests/bin/configuration_values.bin | Bin 0 -> 244 bytes tests/pretty/configuration_values.lqp | 10 + tests/pretty_debug/configuration_values.lqp | 16 + 13 files changed, 884 insertions(+), 973 deletions(-) create mode 100644 tests/bin/configuration_values.bin create mode 100644 tests/pretty/configuration_values.lqp create mode 100644 tests/pretty_debug/configuration_values.lqp diff --git a/sdks/go/src/lqp/v1/transactions.pb.go b/sdks/go/src/lqp/v1/transactions.pb.go index 8e2a6ce3..7625ed25 100644 --- a/sdks/go/src/lqp/v1/transactions.pb.go +++ b/sdks/go/src/lqp/v1/transactions.pb.go @@ -137,9 +137,11 @@ type Configure struct { state protoimpl.MessageState `protogen:"open.v1"` SemanticsVersion int64 `protobuf:"varint,1,opt,name=semantics_version,json=semanticsVersion,proto3" json:"semantics_version,omitempty"` IvmConfig *IVMConfig `protobuf:"bytes,2,opt,name=ivm_config,json=ivmConfig,proto3" json:"ivm_config,omitempty"` - AstSizeLimit *ASTSizeLimit `protobuf:"bytes,3,opt,name=ast_size_limit,json=astSizeLimit,proto3" json:"ast_size_limit,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // A generic configuration dictionary. The engine can choose how to interpret any entries + // in this config dict. + ConfigurationValues map[string]*Value `protobuf:"bytes,3,rep,name=configuration_values,json=configurationValues,proto3" json:"configuration_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Configure) Reset() { @@ -186,9 +188,9 @@ func (x *Configure) GetIvmConfig() *IVMConfig { return nil } -func (x *Configure) GetAstSizeLimit() *ASTSizeLimit { +func (x *Configure) GetConfigurationValues() map[string]*Value { if x != nil { - return x.AstSizeLimit + return x.ConfigurationValues } return nil } @@ -237,58 +239,6 @@ func (x *IVMConfig) GetLevel() MaintenanceLevel { return MaintenanceLevel_MAINTENANCE_LEVEL_UNSPECIFIED } -type ASTSizeLimit struct { - state protoimpl.MessageState `protogen:"open.v1"` - WarningLimit int64 `protobuf:"varint,1,opt,name=warning_limit,json=warningLimit,proto3" json:"warning_limit,omitempty"` - ExceptionLimit int64 `protobuf:"varint,2,opt,name=exception_limit,json=exceptionLimit,proto3" json:"exception_limit,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ASTSizeLimit) Reset() { - *x = ASTSizeLimit{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ASTSizeLimit) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ASTSizeLimit) ProtoMessage() {} - -func (x *ASTSizeLimit) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ASTSizeLimit.ProtoReflect.Descriptor instead. -func (*ASTSizeLimit) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{3} -} - -func (x *ASTSizeLimit) GetWarningLimit() int64 { - if x != nil { - return x.WarningLimit - } - return 0 -} - -func (x *ASTSizeLimit) GetExceptionLimit() int64 { - if x != nil { - return x.ExceptionLimit - } - return 0 -} - type Sync struct { state protoimpl.MessageState `protogen:"open.v1"` Fragments []*FragmentId `protobuf:"bytes,1,rep,name=fragments,proto3" json:"fragments,omitempty"` @@ -298,7 +248,7 @@ type Sync struct { func (x *Sync) Reset() { *x = Sync{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[4] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -310,7 +260,7 @@ func (x *Sync) String() string { func (*Sync) ProtoMessage() {} func (x *Sync) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[4] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -323,7 +273,7 @@ func (x *Sync) ProtoReflect() protoreflect.Message { // Deprecated: Use Sync.ProtoReflect.Descriptor instead. func (*Sync) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{4} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{3} } func (x *Sync) GetFragments() []*FragmentId { @@ -343,7 +293,7 @@ type Epoch struct { func (x *Epoch) Reset() { *x = Epoch{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[5] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -355,7 +305,7 @@ func (x *Epoch) String() string { func (*Epoch) ProtoMessage() {} func (x *Epoch) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[5] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -368,7 +318,7 @@ func (x *Epoch) ProtoReflect() protoreflect.Message { // Deprecated: Use Epoch.ProtoReflect.Descriptor instead. func (*Epoch) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{5} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{4} } func (x *Epoch) GetWrites() []*Write { @@ -400,7 +350,7 @@ type Write struct { func (x *Write) Reset() { *x = Write{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[6] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -412,7 +362,7 @@ func (x *Write) String() string { func (*Write) ProtoMessage() {} func (x *Write) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[6] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -425,7 +375,7 @@ func (x *Write) ProtoReflect() protoreflect.Message { // Deprecated: Use Write.ProtoReflect.Descriptor instead. func (*Write) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{6} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{5} } func (x *Write) GetWriteType() isWrite_WriteType { @@ -508,7 +458,7 @@ type Define struct { func (x *Define) Reset() { *x = Define{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[7] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -520,7 +470,7 @@ func (x *Define) String() string { func (*Define) ProtoMessage() {} func (x *Define) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[7] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -533,7 +483,7 @@ func (x *Define) ProtoReflect() protoreflect.Message { // Deprecated: Use Define.ProtoReflect.Descriptor instead. func (*Define) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{7} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{6} } func (x *Define) GetFragment() *Fragment { @@ -552,7 +502,7 @@ type Undefine struct { func (x *Undefine) Reset() { *x = Undefine{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[8] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -564,7 +514,7 @@ func (x *Undefine) String() string { func (*Undefine) ProtoMessage() {} func (x *Undefine) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[8] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -577,7 +527,7 @@ func (x *Undefine) ProtoReflect() protoreflect.Message { // Deprecated: Use Undefine.ProtoReflect.Descriptor instead. func (*Undefine) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{8} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{7} } func (x *Undefine) GetFragmentId() *FragmentId { @@ -596,7 +546,7 @@ type Context struct { func (x *Context) Reset() { *x = Context{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[9] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -608,7 +558,7 @@ func (x *Context) String() string { func (*Context) ProtoMessage() {} func (x *Context) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[9] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -621,7 +571,7 @@ func (x *Context) ProtoReflect() protoreflect.Message { // Deprecated: Use Context.ProtoReflect.Descriptor instead. func (*Context) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{9} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{8} } func (x *Context) GetRelations() []*RelationId { @@ -643,7 +593,7 @@ type SnapshotMapping struct { func (x *SnapshotMapping) Reset() { *x = SnapshotMapping{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[10] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -655,7 +605,7 @@ func (x *SnapshotMapping) String() string { func (*SnapshotMapping) ProtoMessage() {} func (x *SnapshotMapping) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[10] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -668,7 +618,7 @@ func (x *SnapshotMapping) ProtoReflect() protoreflect.Message { // Deprecated: Use SnapshotMapping.ProtoReflect.Descriptor instead. func (*SnapshotMapping) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{10} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{9} } func (x *SnapshotMapping) GetDestinationPath() []string { @@ -699,7 +649,7 @@ type Snapshot struct { func (x *Snapshot) Reset() { *x = Snapshot{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -711,7 +661,7 @@ func (x *Snapshot) String() string { func (*Snapshot) ProtoMessage() {} func (x *Snapshot) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -724,7 +674,7 @@ func (x *Snapshot) ProtoReflect() protoreflect.Message { // Deprecated: Use Snapshot.ProtoReflect.Descriptor instead. func (*Snapshot) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{11} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{10} } func (x *Snapshot) GetMappings() []*SnapshotMapping { @@ -767,7 +717,7 @@ type ExportCSVConfig struct { func (x *ExportCSVConfig) Reset() { *x = ExportCSVConfig{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -779,7 +729,7 @@ func (x *ExportCSVConfig) String() string { func (*ExportCSVConfig) ProtoMessage() {} func (x *ExportCSVConfig) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -792,7 +742,7 @@ func (x *ExportCSVConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportCSVConfig.ProtoReflect.Descriptor instead. func (*ExportCSVConfig) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{12} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{11} } func (x *ExportCSVConfig) GetPath() string { @@ -889,7 +839,7 @@ type ExportCSVColumn struct { func (x *ExportCSVColumn) Reset() { *x = ExportCSVColumn{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -901,7 +851,7 @@ func (x *ExportCSVColumn) String() string { func (*ExportCSVColumn) ProtoMessage() {} func (x *ExportCSVColumn) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -914,7 +864,7 @@ func (x *ExportCSVColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportCSVColumn.ProtoReflect.Descriptor instead. func (*ExportCSVColumn) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{13} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{12} } func (x *ExportCSVColumn) GetColumnName() string { @@ -940,7 +890,7 @@ type ExportCSVColumns struct { func (x *ExportCSVColumns) Reset() { *x = ExportCSVColumns{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -952,7 +902,7 @@ func (x *ExportCSVColumns) String() string { func (*ExportCSVColumns) ProtoMessage() {} func (x *ExportCSVColumns) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -965,7 +915,7 @@ func (x *ExportCSVColumns) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportCSVColumns.ProtoReflect.Descriptor instead. func (*ExportCSVColumns) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{14} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{13} } func (x *ExportCSVColumns) GetColumns() []*ExportCSVColumn { @@ -988,7 +938,7 @@ type ExportCSVSource struct { func (x *ExportCSVSource) Reset() { *x = ExportCSVSource{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1000,7 +950,7 @@ func (x *ExportCSVSource) String() string { func (*ExportCSVSource) ProtoMessage() {} func (x *ExportCSVSource) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1013,7 +963,7 @@ func (x *ExportCSVSource) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportCSVSource.ProtoReflect.Descriptor instead. func (*ExportCSVSource) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{15} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{14} } func (x *ExportCSVSource) GetCsvSource() isExportCSVSource_CsvSource { @@ -1072,7 +1022,7 @@ type ExportIcebergConfig struct { func (x *ExportIcebergConfig) Reset() { *x = ExportIcebergConfig{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1084,7 +1034,7 @@ func (x *ExportIcebergConfig) String() string { func (*ExportIcebergConfig) ProtoMessage() {} func (x *ExportIcebergConfig) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1097,7 +1047,7 @@ func (x *ExportIcebergConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use ExportIcebergConfig.ProtoReflect.Descriptor instead. func (*ExportIcebergConfig) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{16} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{15} } func (x *ExportIcebergConfig) GetLocator() *IcebergLocator { @@ -1165,7 +1115,7 @@ type Read struct { func (x *Read) Reset() { *x = Read{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1177,7 +1127,7 @@ func (x *Read) String() string { func (*Read) ProtoMessage() {} func (x *Read) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1190,7 +1140,7 @@ func (x *Read) ProtoReflect() protoreflect.Message { // Deprecated: Use Read.ProtoReflect.Descriptor instead. func (*Read) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{17} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{16} } func (x *Read) GetReadType() isRead_ReadType { @@ -1288,7 +1238,7 @@ type Demand struct { func (x *Demand) Reset() { *x = Demand{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[18] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1300,7 +1250,7 @@ func (x *Demand) String() string { func (*Demand) ProtoMessage() {} func (x *Demand) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[18] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1313,7 +1263,7 @@ func (x *Demand) ProtoReflect() protoreflect.Message { // Deprecated: Use Demand.ProtoReflect.Descriptor instead. func (*Demand) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{18} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{17} } func (x *Demand) GetRelationId() *RelationId { @@ -1333,7 +1283,7 @@ type Output struct { func (x *Output) Reset() { *x = Output{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[19] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1345,7 +1295,7 @@ func (x *Output) String() string { func (*Output) ProtoMessage() {} func (x *Output) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[19] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1358,7 +1308,7 @@ func (x *Output) ProtoReflect() protoreflect.Message { // Deprecated: Use Output.ProtoReflect.Descriptor instead. func (*Output) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{19} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{18} } func (x *Output) GetName() string { @@ -1388,7 +1338,7 @@ type Export struct { func (x *Export) Reset() { *x = Export{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[20] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1400,7 +1350,7 @@ func (x *Export) String() string { func (*Export) ProtoMessage() {} func (x *Export) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[20] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1413,7 +1363,7 @@ func (x *Export) ProtoReflect() protoreflect.Message { // Deprecated: Use Export.ProtoReflect.Descriptor instead. func (*Export) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{20} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{19} } func (x *Export) GetExportConfig() isExport_ExportConfig { @@ -1467,7 +1417,7 @@ type WhatIf struct { func (x *WhatIf) Reset() { *x = WhatIf{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[21] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1479,7 +1429,7 @@ func (x *WhatIf) String() string { func (*WhatIf) ProtoMessage() {} func (x *WhatIf) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[21] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1492,7 +1442,7 @@ func (x *WhatIf) ProtoReflect() protoreflect.Message { // Deprecated: Use WhatIf.ProtoReflect.Descriptor instead. func (*WhatIf) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{21} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{20} } func (x *WhatIf) GetBranch() string { @@ -1519,7 +1469,7 @@ type Abort struct { func (x *Abort) Reset() { *x = Abort{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[22] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1531,7 +1481,7 @@ func (x *Abort) String() string { func (*Abort) ProtoMessage() {} func (x *Abort) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[22] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1544,7 +1494,7 @@ func (x *Abort) ProtoReflect() protoreflect.Message { // Deprecated: Use Abort.ProtoReflect.Descriptor instead. func (*Abort) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{22} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{21} } func (x *Abort) GetName() string { @@ -1584,257 +1534,260 @@ var file_relationalai_lqp_v1_transactions_proto_rawDesc = string([]byte{ 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x79, 0x6e, 0x63, 0x48, 0x00, 0x52, 0x04, 0x73, 0x79, 0x6e, 0x63, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x79, - 0x6e, 0x63, 0x22, 0xc0, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, + 0x6e, 0x63, 0x22, 0xc7, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0a, 0x69, 0x76, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x56, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x09, 0x69, 0x76, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0e, - 0x61, 0x73, 0x74, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x53, 0x54, 0x53, 0x69, - 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x52, 0x0c, 0x61, 0x73, 0x74, 0x53, 0x69, 0x7a, 0x65, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x48, 0x0a, 0x09, 0x49, 0x56, 0x4d, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, - 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, - 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, - 0x5c, 0x0a, 0x0c, 0x41, 0x53, 0x54, 0x53, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, - 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x65, - 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x45, 0x0a, - 0x04, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x3d, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x46, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x09, 0x66, 0x72, 0x61, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x73, 0x22, 0x6c, 0x0a, 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, - 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, - 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x05, 0x72, 0x65, 0x61, - 0x64, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x05, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x06, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x08, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, - 0x66, 0x69, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x08, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, - 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, - 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, - 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x6e, - 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x48, 0x00, 0x52, 0x08, 0x73, - 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x43, 0x0a, 0x06, 0x44, - 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, - 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x22, 0x4c, 0x0a, 0x08, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x40, 0x0a, 0x0b, - 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x67, 0x52, 0x09, 0x69, 0x76, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x6a, 0x0a, 0x14, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x62, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x48, 0x0a, 0x09, + 0x49, 0x56, 0x4d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x05, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x45, 0x0a, 0x04, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x3d, + 0x0a, 0x09, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x49, 0x64, 0x52, 0x0a, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x48, - 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x09, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x0f, 0x53, 0x6e, 0x61, - 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, - 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x74, 0x68, 0x12, 0x48, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, - 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x64, 0x0a, 0x08, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x40, 0x0a, - 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, - 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x22, 0x80, 0x06, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x36, 0x0a, 0x17, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x15, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x53, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x52, 0x09, 0x63, 0x73, 0x76, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0a, - 0x63, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, - 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x09, 0x63, 0x73, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0c, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, - 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, - 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0d, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x25, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x73, 0x79, 0x6e, 0x74, 0x61, - 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x48, 0x02, 0x52, 0x0f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x52, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x73, 0x79, 0x6e, 0x74, - 0x61, 0x78, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x13, 0x73, 0x79, 0x6e, 0x74, 0x61, - 0x78, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, - 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x69, - 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x74, 0x61, - 0x78, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x79, 0x6e, - 0x74, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x63, 0x68, 0x61, 0x72, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x51, 0x75, 0x6f, - 0x74, 0x65, 0x63, 0x68, 0x61, 0x72, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x73, 0x79, 0x6e, - 0x74, 0x61, 0x78, 0x5f, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x63, 0x68, 0x61, 0x72, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, 0x10, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x45, 0x73, - 0x63, 0x61, 0x70, 0x65, 0x63, 0x68, 0x61, 0x72, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x5f, 0x72, 0x6f, 0x77, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, - 0x63, 0x68, 0x61, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, - 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x63, 0x68, 0x61, 0x72, 0x22, 0x74, 0x0a, 0x0f, 0x45, 0x78, - 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1f, 0x0a, - 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, - 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x22, 0x52, 0x0a, 0x10, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, - 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xa9, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, - 0x53, 0x56, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x67, 0x6e, 0x66, 0x5f, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x67, 0x6e, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x52, 0x09, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x6c, 0x0a, + 0x05, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x52, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x72, 0x65, + 0x61, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x61, 0x64, 0x52, 0x05, 0x72, 0x65, 0x61, 0x64, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x05, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x66, 0x69, + 0x6e, 0x65, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x08, + 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, + 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x48, 0x00, 0x52, + 0x08, 0x75, 0x6e, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6e, 0x61, 0x70, + 0x73, 0x68, 0x6f, 0x74, 0x48, 0x00, 0x52, 0x08, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x42, 0x0c, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x4a, 0x04, + 0x08, 0x04, 0x10, 0x05, 0x22, 0x43, 0x0a, 0x06, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x39, + 0x0a, 0x08, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, + 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x08, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x4c, 0x0a, 0x08, 0x55, 0x6e, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, + 0x2e, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x52, 0x0a, 0x66, 0x72, 0x61, + 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x48, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x12, 0x3d, 0x0a, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x48, 0x00, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, - 0x65, 0x66, 0x42, 0x0c, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x22, 0xa8, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x63, 0x65, 0x62, 0x65, - 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x86, 0x01, 0x0a, 0x0f, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x74, 0x68, + 0x12, 0x48, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x41, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, - 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x09, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x08, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, 0x52, 0x13, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x68, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0xa4, 0x02, 0x0a, 0x04, - 0x52, 0x65, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6d, 0x61, 0x6e, - 0x64, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, - 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x77, 0x68, 0x61, 0x74, 0x5f, 0x69, 0x66, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, - 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x68, 0x61, 0x74, 0x49, 0x66, - 0x48, 0x00, 0x52, 0x06, 0x77, 0x68, 0x61, 0x74, 0x49, 0x66, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x62, - 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x08, 0x53, 0x6e, + 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, + 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, + 0x69, 0x78, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x22, 0x80, 0x06, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x17, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x43, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x43, 0x53, 0x56, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x09, 0x63, 0x73, 0x76, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x62, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x35, - 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x63, 0x73, 0x76, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, + 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x52, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x2a, 0x0a, + 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x2f, 0x0a, 0x11, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x0f, 0x73, + 0x79, 0x6e, 0x74, 0x61, 0x78, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x6f, 0x77, 0x88, 0x01, + 0x01, 0x12, 0x37, 0x0a, 0x15, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x03, 0x52, 0x13, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, + 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x79, + 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x04, 0x52, 0x0b, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x88, + 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x6f, + 0x74, 0x65, 0x63, 0x68, 0x61, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x0f, + 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x63, 0x68, 0x61, 0x72, 0x88, + 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x65, 0x73, 0x63, + 0x61, 0x70, 0x65, 0x63, 0x68, 0x61, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x06, 0x52, + 0x10, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x63, 0x68, 0x61, + 0x72, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6d, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x79, 0x6e, 0x74, + 0x61, 0x78, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x72, 0x6f, 0x77, 0x42, 0x18, 0x0a, + 0x16, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x79, 0x6e, 0x74, + 0x61, 0x78, 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x79, 0x6e, + 0x74, 0x61, 0x78, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x63, 0x68, 0x61, 0x72, 0x42, 0x14, 0x0a, + 0x12, 0x5f, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x5f, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x63, + 0x68, 0x61, 0x72, 0x22, 0x74, 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, + 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x63, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x22, 0x52, 0x0a, 0x10, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3e, 0x0a, + 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, - 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x06, 0x65, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x06, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x0b, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, - 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, - 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, - 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb3, - 0x01, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x45, 0x0a, 0x0a, 0x63, 0x73, 0x76, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0xa9, 0x01, + 0x0a, 0x0f, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x48, 0x0a, 0x0b, 0x67, 0x6e, 0x66, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x48, 0x00, 0x52, + 0x0a, 0x67, 0x6e, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, + 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, + 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x48, + 0x00, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x42, 0x0c, 0x0a, 0x0a, 0x63, + 0x73, 0x76, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xa8, 0x04, 0x0a, 0x13, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x3d, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, + 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, + 0x12, 0x41, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, + 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x61, + 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, + 0x66, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x12, 0x38, + 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x01, + 0x52, 0x13, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x6f, 0x6d, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x68, 0x0a, 0x10, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x08, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x4a, 0x04, + 0x08, 0x04, 0x10, 0x05, 0x22, 0xa4, 0x02, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x35, 0x0a, + 0x06, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, - 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 0x63, 0x73, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x51, 0x0a, 0x0e, 0x69, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x42, 0x0f, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x22, 0x52, 0x0a, 0x06, 0x57, 0x68, 0x61, 0x74, 0x49, 0x66, 0x12, 0x16, - 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x30, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, - 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x22, 0x5d, 0x0a, 0x05, 0x41, 0x62, 0x6f, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, + 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x35, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x77, + 0x68, 0x61, 0x74, 0x5f, 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, + 0x76, 0x31, 0x2e, 0x57, 0x68, 0x61, 0x74, 0x49, 0x66, 0x48, 0x00, 0x52, 0x06, 0x77, 0x68, 0x61, + 0x74, 0x49, 0x66, 0x12, 0x32, 0x0a, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, + 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x48, 0x00, + 0x52, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, + 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0b, + 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x06, 0x44, + 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x06, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x2a, 0x87, 0x01, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, - 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x1d, - 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, - 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xb3, 0x01, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x45, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, + 0x63, 0x73, 0x76, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x51, 0x0a, 0x0e, 0x69, 0x63, 0x65, + 0x62, 0x65, 0x72, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, + 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x63, + 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0d, 0x69, + 0x63, 0x65, 0x62, 0x65, 0x72, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0f, 0x0a, 0x0d, + 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x52, 0x0a, + 0x06, 0x57, 0x68, 0x61, 0x74, 0x49, 0x66, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, + 0x30, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, + 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, + 0x68, 0x22, 0x5d, 0x0a, 0x05, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x40, + 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x2a, 0x87, 0x01, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x1d, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, + 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, + 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x46, + 0x46, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, + 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, - 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, - 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, - 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, - 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x4c, 0x4c, 0x10, - 0x03, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x49, 0x2f, 0x6c, 0x6f, 0x67, - 0x69, 0x63, 0x61, 0x6c, 0x2d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x64, 0x6b, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x72, 0x63, 0x2f, - 0x6c, 0x71, 0x70, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x03, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x41, 0x49, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x2d, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x64, 0x6b, + 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x72, 0x63, 0x2f, 0x6c, 0x71, 0x70, 0x2f, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1856,26 +1809,26 @@ var file_relationalai_lqp_v1_transactions_proto_goTypes = []any{ (*Transaction)(nil), // 1: relationalai.lqp.v1.Transaction (*Configure)(nil), // 2: relationalai.lqp.v1.Configure (*IVMConfig)(nil), // 3: relationalai.lqp.v1.IVMConfig - (*ASTSizeLimit)(nil), // 4: relationalai.lqp.v1.ASTSizeLimit - (*Sync)(nil), // 5: relationalai.lqp.v1.Sync - (*Epoch)(nil), // 6: relationalai.lqp.v1.Epoch - (*Write)(nil), // 7: relationalai.lqp.v1.Write - (*Define)(nil), // 8: relationalai.lqp.v1.Define - (*Undefine)(nil), // 9: relationalai.lqp.v1.Undefine - (*Context)(nil), // 10: relationalai.lqp.v1.Context - (*SnapshotMapping)(nil), // 11: relationalai.lqp.v1.SnapshotMapping - (*Snapshot)(nil), // 12: relationalai.lqp.v1.Snapshot - (*ExportCSVConfig)(nil), // 13: relationalai.lqp.v1.ExportCSVConfig - (*ExportCSVColumn)(nil), // 14: relationalai.lqp.v1.ExportCSVColumn - (*ExportCSVColumns)(nil), // 15: relationalai.lqp.v1.ExportCSVColumns - (*ExportCSVSource)(nil), // 16: relationalai.lqp.v1.ExportCSVSource - (*ExportIcebergConfig)(nil), // 17: relationalai.lqp.v1.ExportIcebergConfig - (*Read)(nil), // 18: relationalai.lqp.v1.Read - (*Demand)(nil), // 19: relationalai.lqp.v1.Demand - (*Output)(nil), // 20: relationalai.lqp.v1.Output - (*Export)(nil), // 21: relationalai.lqp.v1.Export - (*WhatIf)(nil), // 22: relationalai.lqp.v1.WhatIf - (*Abort)(nil), // 23: relationalai.lqp.v1.Abort + (*Sync)(nil), // 4: relationalai.lqp.v1.Sync + (*Epoch)(nil), // 5: relationalai.lqp.v1.Epoch + (*Write)(nil), // 6: relationalai.lqp.v1.Write + (*Define)(nil), // 7: relationalai.lqp.v1.Define + (*Undefine)(nil), // 8: relationalai.lqp.v1.Undefine + (*Context)(nil), // 9: relationalai.lqp.v1.Context + (*SnapshotMapping)(nil), // 10: relationalai.lqp.v1.SnapshotMapping + (*Snapshot)(nil), // 11: relationalai.lqp.v1.Snapshot + (*ExportCSVConfig)(nil), // 12: relationalai.lqp.v1.ExportCSVConfig + (*ExportCSVColumn)(nil), // 13: relationalai.lqp.v1.ExportCSVColumn + (*ExportCSVColumns)(nil), // 14: relationalai.lqp.v1.ExportCSVColumns + (*ExportCSVSource)(nil), // 15: relationalai.lqp.v1.ExportCSVSource + (*ExportIcebergConfig)(nil), // 16: relationalai.lqp.v1.ExportIcebergConfig + (*Read)(nil), // 17: relationalai.lqp.v1.Read + (*Demand)(nil), // 18: relationalai.lqp.v1.Demand + (*Output)(nil), // 19: relationalai.lqp.v1.Output + (*Export)(nil), // 20: relationalai.lqp.v1.Export + (*WhatIf)(nil), // 21: relationalai.lqp.v1.WhatIf + (*Abort)(nil), // 22: relationalai.lqp.v1.Abort + nil, // 23: relationalai.lqp.v1.Configure.ConfigurationValuesEntry nil, // 24: relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntry (*FragmentId)(nil), // 25: relationalai.lqp.v1.FragmentId (*Fragment)(nil), // 26: relationalai.lqp.v1.Fragment @@ -1883,53 +1836,55 @@ var file_relationalai_lqp_v1_transactions_proto_goTypes = []any{ (*CSVConfig)(nil), // 28: relationalai.lqp.v1.CSVConfig (*IcebergLocator)(nil), // 29: relationalai.lqp.v1.IcebergLocator (*IcebergCatalogConfig)(nil), // 30: relationalai.lqp.v1.IcebergCatalogConfig + (*Value)(nil), // 31: relationalai.lqp.v1.Value } var file_relationalai_lqp_v1_transactions_proto_depIdxs = []int32{ - 6, // 0: relationalai.lqp.v1.Transaction.epochs:type_name -> relationalai.lqp.v1.Epoch + 5, // 0: relationalai.lqp.v1.Transaction.epochs:type_name -> relationalai.lqp.v1.Epoch 2, // 1: relationalai.lqp.v1.Transaction.configure:type_name -> relationalai.lqp.v1.Configure - 5, // 2: relationalai.lqp.v1.Transaction.sync:type_name -> relationalai.lqp.v1.Sync + 4, // 2: relationalai.lqp.v1.Transaction.sync:type_name -> relationalai.lqp.v1.Sync 3, // 3: relationalai.lqp.v1.Configure.ivm_config:type_name -> relationalai.lqp.v1.IVMConfig - 4, // 4: relationalai.lqp.v1.Configure.ast_size_limit:type_name -> relationalai.lqp.v1.ASTSizeLimit + 23, // 4: relationalai.lqp.v1.Configure.configuration_values:type_name -> relationalai.lqp.v1.Configure.ConfigurationValuesEntry 0, // 5: relationalai.lqp.v1.IVMConfig.level:type_name -> relationalai.lqp.v1.MaintenanceLevel 25, // 6: relationalai.lqp.v1.Sync.fragments:type_name -> relationalai.lqp.v1.FragmentId - 7, // 7: relationalai.lqp.v1.Epoch.writes:type_name -> relationalai.lqp.v1.Write - 18, // 8: relationalai.lqp.v1.Epoch.reads:type_name -> relationalai.lqp.v1.Read - 8, // 9: relationalai.lqp.v1.Write.define:type_name -> relationalai.lqp.v1.Define - 9, // 10: relationalai.lqp.v1.Write.undefine:type_name -> relationalai.lqp.v1.Undefine - 10, // 11: relationalai.lqp.v1.Write.context:type_name -> relationalai.lqp.v1.Context - 12, // 12: relationalai.lqp.v1.Write.snapshot:type_name -> relationalai.lqp.v1.Snapshot + 6, // 7: relationalai.lqp.v1.Epoch.writes:type_name -> relationalai.lqp.v1.Write + 17, // 8: relationalai.lqp.v1.Epoch.reads:type_name -> relationalai.lqp.v1.Read + 7, // 9: relationalai.lqp.v1.Write.define:type_name -> relationalai.lqp.v1.Define + 8, // 10: relationalai.lqp.v1.Write.undefine:type_name -> relationalai.lqp.v1.Undefine + 9, // 11: relationalai.lqp.v1.Write.context:type_name -> relationalai.lqp.v1.Context + 11, // 12: relationalai.lqp.v1.Write.snapshot:type_name -> relationalai.lqp.v1.Snapshot 26, // 13: relationalai.lqp.v1.Define.fragment:type_name -> relationalai.lqp.v1.Fragment 25, // 14: relationalai.lqp.v1.Undefine.fragment_id:type_name -> relationalai.lqp.v1.FragmentId 27, // 15: relationalai.lqp.v1.Context.relations:type_name -> relationalai.lqp.v1.RelationId 27, // 16: relationalai.lqp.v1.SnapshotMapping.source_relation:type_name -> relationalai.lqp.v1.RelationId - 11, // 17: relationalai.lqp.v1.Snapshot.mappings:type_name -> relationalai.lqp.v1.SnapshotMapping - 16, // 18: relationalai.lqp.v1.ExportCSVConfig.csv_source:type_name -> relationalai.lqp.v1.ExportCSVSource + 10, // 17: relationalai.lqp.v1.Snapshot.mappings:type_name -> relationalai.lqp.v1.SnapshotMapping + 15, // 18: relationalai.lqp.v1.ExportCSVConfig.csv_source:type_name -> relationalai.lqp.v1.ExportCSVSource 28, // 19: relationalai.lqp.v1.ExportCSVConfig.csv_config:type_name -> relationalai.lqp.v1.CSVConfig - 14, // 20: relationalai.lqp.v1.ExportCSVConfig.data_columns:type_name -> relationalai.lqp.v1.ExportCSVColumn + 13, // 20: relationalai.lqp.v1.ExportCSVConfig.data_columns:type_name -> relationalai.lqp.v1.ExportCSVColumn 27, // 21: relationalai.lqp.v1.ExportCSVColumn.column_data:type_name -> relationalai.lqp.v1.RelationId - 14, // 22: relationalai.lqp.v1.ExportCSVColumns.columns:type_name -> relationalai.lqp.v1.ExportCSVColumn - 15, // 23: relationalai.lqp.v1.ExportCSVSource.gnf_columns:type_name -> relationalai.lqp.v1.ExportCSVColumns + 13, // 22: relationalai.lqp.v1.ExportCSVColumns.columns:type_name -> relationalai.lqp.v1.ExportCSVColumn + 14, // 23: relationalai.lqp.v1.ExportCSVSource.gnf_columns:type_name -> relationalai.lqp.v1.ExportCSVColumns 27, // 24: relationalai.lqp.v1.ExportCSVSource.table_def:type_name -> relationalai.lqp.v1.RelationId 29, // 25: relationalai.lqp.v1.ExportIcebergConfig.locator:type_name -> relationalai.lqp.v1.IcebergLocator 30, // 26: relationalai.lqp.v1.ExportIcebergConfig.config:type_name -> relationalai.lqp.v1.IcebergCatalogConfig 27, // 27: relationalai.lqp.v1.ExportIcebergConfig.table_def:type_name -> relationalai.lqp.v1.RelationId 24, // 28: relationalai.lqp.v1.ExportIcebergConfig.table_properties:type_name -> relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntry - 19, // 29: relationalai.lqp.v1.Read.demand:type_name -> relationalai.lqp.v1.Demand - 20, // 30: relationalai.lqp.v1.Read.output:type_name -> relationalai.lqp.v1.Output - 22, // 31: relationalai.lqp.v1.Read.what_if:type_name -> relationalai.lqp.v1.WhatIf - 23, // 32: relationalai.lqp.v1.Read.abort:type_name -> relationalai.lqp.v1.Abort - 21, // 33: relationalai.lqp.v1.Read.export:type_name -> relationalai.lqp.v1.Export + 18, // 29: relationalai.lqp.v1.Read.demand:type_name -> relationalai.lqp.v1.Demand + 19, // 30: relationalai.lqp.v1.Read.output:type_name -> relationalai.lqp.v1.Output + 21, // 31: relationalai.lqp.v1.Read.what_if:type_name -> relationalai.lqp.v1.WhatIf + 22, // 32: relationalai.lqp.v1.Read.abort:type_name -> relationalai.lqp.v1.Abort + 20, // 33: relationalai.lqp.v1.Read.export:type_name -> relationalai.lqp.v1.Export 27, // 34: relationalai.lqp.v1.Demand.relation_id:type_name -> relationalai.lqp.v1.RelationId 27, // 35: relationalai.lqp.v1.Output.relation_id:type_name -> relationalai.lqp.v1.RelationId - 13, // 36: relationalai.lqp.v1.Export.csv_config:type_name -> relationalai.lqp.v1.ExportCSVConfig - 17, // 37: relationalai.lqp.v1.Export.iceberg_config:type_name -> relationalai.lqp.v1.ExportIcebergConfig - 6, // 38: relationalai.lqp.v1.WhatIf.epoch:type_name -> relationalai.lqp.v1.Epoch + 12, // 36: relationalai.lqp.v1.Export.csv_config:type_name -> relationalai.lqp.v1.ExportCSVConfig + 16, // 37: relationalai.lqp.v1.Export.iceberg_config:type_name -> relationalai.lqp.v1.ExportIcebergConfig + 5, // 38: relationalai.lqp.v1.WhatIf.epoch:type_name -> relationalai.lqp.v1.Epoch 27, // 39: relationalai.lqp.v1.Abort.relation_id:type_name -> relationalai.lqp.v1.RelationId - 40, // [40:40] is the sub-list for method output_type - 40, // [40:40] is the sub-list for method input_type - 40, // [40:40] is the sub-list for extension type_name - 40, // [40:40] is the sub-list for extension extendee - 0, // [0:40] is the sub-list for field type_name + 31, // 40: relationalai.lqp.v1.Configure.ConfigurationValuesEntry.value:type_name -> relationalai.lqp.v1.Value + 41, // [41:41] is the sub-list for method output_type + 41, // [41:41] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_relationalai_lqp_v1_transactions_proto_init() } @@ -1940,26 +1895,26 @@ func file_relationalai_lqp_v1_transactions_proto_init() { file_relationalai_lqp_v1_fragments_proto_init() file_relationalai_lqp_v1_logic_proto_init() file_relationalai_lqp_v1_transactions_proto_msgTypes[0].OneofWrappers = []any{} - file_relationalai_lqp_v1_transactions_proto_msgTypes[6].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[5].OneofWrappers = []any{ (*Write_Define)(nil), (*Write_Undefine)(nil), (*Write_Context)(nil), (*Write_Snapshot)(nil), } - file_relationalai_lqp_v1_transactions_proto_msgTypes[12].OneofWrappers = []any{} - file_relationalai_lqp_v1_transactions_proto_msgTypes[15].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[11].OneofWrappers = []any{} + file_relationalai_lqp_v1_transactions_proto_msgTypes[14].OneofWrappers = []any{ (*ExportCSVSource_GnfColumns)(nil), (*ExportCSVSource_TableDef)(nil), } - file_relationalai_lqp_v1_transactions_proto_msgTypes[16].OneofWrappers = []any{} - file_relationalai_lqp_v1_transactions_proto_msgTypes[17].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[15].OneofWrappers = []any{} + file_relationalai_lqp_v1_transactions_proto_msgTypes[16].OneofWrappers = []any{ (*Read_Demand)(nil), (*Read_Output)(nil), (*Read_WhatIf)(nil), (*Read_Abort)(nil), (*Read_Export)(nil), } - file_relationalai_lqp_v1_transactions_proto_msgTypes[20].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[19].OneofWrappers = []any{ (*Export_CsvConfig)(nil), (*Export_IcebergConfig)(nil), } diff --git a/sdks/go/src/parser.go b/sdks/go/src/parser.go index 70a8830f..f8749073 100644 --- a/sdks/go/src/parser.go +++ b/sdks/go/src/parser.go @@ -572,6 +572,19 @@ func dictFromList(pairs [][]interface{}) map[string]interface{} { return result } +// valueMapFromPairs builds map[string]*pb.Value from (key, *pb.Value) pair rows. +func valueMapFromPairs(pairs [][]interface{}) map[string]*pb.Value { + out := make(map[string]*pb.Value) + for _, pair := range pairs { + if len(pair) >= 2 { + k, _ := pair[0].(string) + v, _ := pair[1].(*pb.Value) + out[k] = v + } + } + return out +} + // stringMapFromPairs builds map[string]string from (prop key value) pair rows. func stringMapFromPairs(pairs [][]interface{}) map[string]string { out := make(map[string]string) @@ -858,10 +871,8 @@ func (p *Parser) construct_betree_info(key_types []*pb.Type, value_types []*pb.T func (p *Parser) default_configure() *pb.Configure { _t2263 := &pb.IVMConfig{Level: pb.MaintenanceLevel_MAINTENANCE_LEVEL_OFF} ivm_config := _t2263 - _t2264 := &pb.ASTSizeLimit{WarningLimit: 0, ExceptionLimit: 0} - ast_size_limit := _t2264 - _t2265 := &pb.Configure{SemanticsVersion: 0, IvmConfig: ivm_config, AstSizeLimit: ast_size_limit} - return _t2265 + _t2264 := &pb.Configure{SemanticsVersion: 0, IvmConfig: ivm_config} + return _t2264 } func (p *Parser) construct_configure(config_dict [][]interface{}) *pb.Configure { @@ -883,72 +894,73 @@ func (p *Parser) construct_configure(config_dict [][]interface{}) *pb.Configure } } } - _t2266 := &pb.IVMConfig{Level: maintenance_level} - ivm_config := _t2266 - _t2267 := p._extract_value_int64(dictGetValue(config, "semantics_version"), 0) - semantics_version := _t2267 - _t2268 := p._extract_value_int64(dictGetValue(config, "ast_size.warning_limit"), 0) - warning_limit := _t2268 - _t2269 := p._extract_value_int64(dictGetValue(config, "ast_size.exception_limit"), 0) - exception_limit := _t2269 - _t2270 := &pb.ASTSizeLimit{WarningLimit: warning_limit, ExceptionLimit: exception_limit} - ast_size_limit := _t2270 - _t2271 := &pb.Configure{SemanticsVersion: semantics_version, IvmConfig: ivm_config, AstSizeLimit: ast_size_limit} - return _t2271 + _t2265 := &pb.IVMConfig{Level: maintenance_level} + ivm_config := _t2265 + _t2266 := p._extract_value_int64(dictGetValue(config, "semantics_version"), 0) + semantics_version := _t2266 + config_values_pairs := [][]interface{}{} + for _, pair := range config_dict { + if (pair[0].(string) != "semantics_version" && pair[0].(string) != "ivm.maintenance_level") { + config_values_pairs = append(config_values_pairs, pair) + } + } + configuration_values := valueMapFromPairs(config_values_pairs) + _t2267 := &pb.Configure{SemanticsVersion: semantics_version, IvmConfig: ivm_config, ConfigurationValues: configuration_values} + return _t2267 } func (p *Parser) construct_export_csv_config(path string, columns []*pb.ExportCSVColumn, config_dict [][]interface{}) *pb.ExportCSVConfig { config := dictFromList(config_dict) - _t2272 := p._extract_value_int64(dictGetValue(config, "partition_size"), 0) - partition_size := _t2272 - _t2273 := p._extract_value_string(dictGetValue(config, "compression"), "") - compression := _t2273 - _t2274 := p._extract_value_boolean(dictGetValue(config, "syntax_header_row"), true) - syntax_header_row := _t2274 - _t2275 := p._extract_value_string(dictGetValue(config, "syntax_missing_string"), "") - syntax_missing_string := _t2275 - _t2276 := p._extract_value_string(dictGetValue(config, "syntax_delim"), ",") - syntax_delim := _t2276 - _t2277 := p._extract_value_string(dictGetValue(config, "syntax_quotechar"), "\"") - syntax_quotechar := _t2277 - _t2278 := p._extract_value_string(dictGetValue(config, "syntax_escapechar"), "\\") - syntax_escapechar := _t2278 - _t2279 := &pb.ExportCSVConfig{Path: path, DataColumns: columns, PartitionSize: ptr(partition_size), Compression: ptr(compression), SyntaxHeaderRow: ptr(syntax_header_row), SyntaxMissingString: ptr(syntax_missing_string), SyntaxDelim: ptr(syntax_delim), SyntaxQuotechar: ptr(syntax_quotechar), SyntaxEscapechar: ptr(syntax_escapechar)} - return _t2279 + _t2268 := p._extract_value_int64(dictGetValue(config, "partition_size"), 0) + partition_size := _t2268 + _t2269 := p._extract_value_string(dictGetValue(config, "compression"), "") + compression := _t2269 + _t2270 := p._extract_value_boolean(dictGetValue(config, "syntax_header_row"), true) + syntax_header_row := _t2270 + _t2271 := p._extract_value_string(dictGetValue(config, "syntax_missing_string"), "") + syntax_missing_string := _t2271 + _t2272 := p._extract_value_string(dictGetValue(config, "syntax_delim"), ",") + syntax_delim := _t2272 + _t2273 := p._extract_value_string(dictGetValue(config, "syntax_quotechar"), "\"") + syntax_quotechar := _t2273 + _t2274 := p._extract_value_string(dictGetValue(config, "syntax_escapechar"), "\\") + syntax_escapechar := _t2274 + _t2275 := &pb.ExportCSVConfig{Path: path, DataColumns: columns, PartitionSize: ptr(partition_size), Compression: ptr(compression), SyntaxHeaderRow: ptr(syntax_header_row), SyntaxMissingString: ptr(syntax_missing_string), SyntaxDelim: ptr(syntax_delim), SyntaxQuotechar: ptr(syntax_quotechar), SyntaxEscapechar: ptr(syntax_escapechar)} + return _t2275 } func (p *Parser) construct_export_csv_config_with_location(location []interface{}, csv_source *pb.ExportCSVSource, csv_config *pb.CSVConfig) *pb.ExportCSVConfig { - _t2280 := &pb.ExportCSVConfig{Path: location[0].(string), TransactionOutputName: location[1].(string), CsvSource: csv_source, CsvConfig: csv_config} - return _t2280 + _t2276 := &pb.ExportCSVConfig{Path: location[0].(string), TransactionOutputName: location[1].(string), CsvSource: csv_source, CsvConfig: csv_config} + return _t2276 } func (p *Parser) construct_iceberg_catalog_config(catalog_uri string, scope_opt *string, property_pairs [][]interface{}, auth_property_pairs [][]interface{}) *pb.IcebergCatalogConfig { props := stringMapFromPairs(property_pairs) auth_props := stringMapFromPairs(auth_property_pairs) - _t2281 := &pb.IcebergCatalogConfig{CatalogUri: catalog_uri, Scope: ptr(deref(scope_opt, "")), Properties: props, AuthProperties: auth_props} - return _t2281 + _t2277 := &pb.IcebergCatalogConfig{CatalogUri: catalog_uri, Scope: ptr(deref(scope_opt, "")), Properties: props, AuthProperties: auth_props} + return _t2277 } func (p *Parser) construct_iceberg_data(locator *pb.IcebergLocator, config *pb.IcebergCatalogConfig, columns []*pb.GNFColumn, from_snapshot_opt *string, to_snapshot_opt *string, returns_delta bool) *pb.IcebergData { - _t2282 := &pb.IcebergData{Locator: locator, Config: config, Columns: columns, FromSnapshot: ptr(deref(from_snapshot_opt, "")), ToSnapshot: ptr(deref(to_snapshot_opt, "")), ReturnsDelta: returns_delta} - return _t2282 + _t2278 := &pb.IcebergData{Locator: locator, Config: config, Columns: columns, FromSnapshot: ptr(deref(from_snapshot_opt, "")), ToSnapshot: ptr(deref(to_snapshot_opt, "")), ReturnsDelta: returns_delta} + return _t2278 } func (p *Parser) construct_export_iceberg_config_full(locator *pb.IcebergLocator, config *pb.IcebergCatalogConfig, table_def *pb.RelationId, table_property_pairs [][]interface{}, config_dict [][]interface{}) *pb.ExportIcebergConfig { - _t2283 := config_dict + _t2279 := config_dict if config_dict == nil { - _t2283 = [][]interface{}{} - } - cfg := dictFromList(_t2283) - _t2284 := p._extract_value_string(dictGetValue(cfg, "prefix"), "") - prefix := _t2284 - _t2285 := p._extract_value_int64(dictGetValue(cfg, "target_file_size_bytes"), 0) - target_file_size_bytes := _t2285 - _t2286 := p._extract_value_string(dictGetValue(cfg, "compression"), "") - compression := _t2286 + _t2279 = [][]interface{}{} + } + cfg := dictFromList(_t2279) + _t2280 := p._extract_value_string(dictGetValue(cfg, "prefix"), "") + prefix := _t2280 + _t2281 := p._extract_value_int64(dictGetValue(cfg, "target_file_size_bytes"), 0) + target_file_size_bytes := _t2281 + _t2282 := p._extract_value_string(dictGetValue(cfg, "compression"), "") + compression := _t2282 table_props := stringMapFromPairs(table_property_pairs) - _t2287 := &pb.ExportIcebergConfig{Locator: locator, Config: config, TableDef: table_def, Prefix: ptr(prefix), TargetFileSizeBytes: ptr(target_file_size_bytes), Compression: compression, TableProperties: table_props} - return _t2287 + _t2283 := &pb.ExportIcebergConfig{Locator: locator, Config: config, TableDef: table_def, Prefix: ptr(prefix), TargetFileSizeBytes: ptr(target_file_size_bytes), Compression: compression, TableProperties: table_props} + return _t2283 } // --- Parse functions --- diff --git a/sdks/go/src/pretty.go b/sdks/go/src/pretty.go index d316ae17..99a32597 100644 --- a/sdks/go/src/pretty.go +++ b/sdks/go/src/pretty.go @@ -264,6 +264,23 @@ func listSort(pairs [][]interface{}) [][]interface{} { return pairs } +// valueMapToPairs converts map[string]*pb.Value to sorted key/value rows for pretty printing. +func valueMapToPairs(m map[string]*pb.Value) [][]interface{} { + if len(m) == 0 { + return nil + } + keys := make([]string, 0, len(m)) + for k := range m { + keys = append(keys, k) + } + sort.Strings(keys) + out := make([][]interface{}, 0, len(keys)) + for _, k := range keys { + out = append(out, []interface{}{k, m[k]}) + } + return out +} + // dictToPairs converts map[string]string to sorted key/value rows for pretty printing. func dictToPairs(m map[string]string) [][]interface{} { if len(m) == 0 { @@ -418,143 +435,138 @@ func (p *PrettyPrinter) deconstruct_configure(msg *pb.Configure) [][]interface{} } _t1856 := p._make_value_int64(msg.GetSemanticsVersion()) result = append(result, []interface{}{"semantics_version", _t1856}) - if msg.GetAstSizeLimit().GetWarningLimit() != 0 { - _t1857 := p._make_value_int64(msg.GetAstSizeLimit().GetWarningLimit()) - result = append(result, []interface{}{"ast_size.warning_limit", _t1857}) - } - if msg.GetAstSizeLimit().GetExceptionLimit() != 0 { - _t1858 := p._make_value_int64(msg.GetAstSizeLimit().GetExceptionLimit()) - result = append(result, []interface{}{"ast_size.exception_limit", _t1858}) + for _, pair := range valueMapToPairs(msg.GetConfigurationValues()) { + result = append(result, pair) } return listSort(result) } func (p *PrettyPrinter) deconstruct_csv_config(msg *pb.CSVConfig) [][]interface{} { result := [][]interface{}{} - _t1859 := p._make_value_int32(msg.GetHeaderRow()) - result = append(result, []interface{}{"csv_header_row", _t1859}) - _t1860 := p._make_value_int64(msg.GetSkip()) - result = append(result, []interface{}{"csv_skip", _t1860}) + _t1857 := p._make_value_int32(msg.GetHeaderRow()) + result = append(result, []interface{}{"csv_header_row", _t1857}) + _t1858 := p._make_value_int64(msg.GetSkip()) + result = append(result, []interface{}{"csv_skip", _t1858}) if msg.GetNewLine() != "" { - _t1861 := p._make_value_string(msg.GetNewLine()) - result = append(result, []interface{}{"csv_new_line", _t1861}) - } - _t1862 := p._make_value_string(msg.GetDelimiter()) - result = append(result, []interface{}{"csv_delimiter", _t1862}) - _t1863 := p._make_value_string(msg.GetQuotechar()) - result = append(result, []interface{}{"csv_quotechar", _t1863}) - _t1864 := p._make_value_string(msg.GetEscapechar()) - result = append(result, []interface{}{"csv_escapechar", _t1864}) + _t1859 := p._make_value_string(msg.GetNewLine()) + result = append(result, []interface{}{"csv_new_line", _t1859}) + } + _t1860 := p._make_value_string(msg.GetDelimiter()) + result = append(result, []interface{}{"csv_delimiter", _t1860}) + _t1861 := p._make_value_string(msg.GetQuotechar()) + result = append(result, []interface{}{"csv_quotechar", _t1861}) + _t1862 := p._make_value_string(msg.GetEscapechar()) + result = append(result, []interface{}{"csv_escapechar", _t1862}) if msg.GetComment() != "" { - _t1865 := p._make_value_string(msg.GetComment()) - result = append(result, []interface{}{"csv_comment", _t1865}) + _t1863 := p._make_value_string(msg.GetComment()) + result = append(result, []interface{}{"csv_comment", _t1863}) } for _, missing_string := range msg.GetMissingStrings() { - _t1866 := p._make_value_string(missing_string) - result = append(result, []interface{}{"csv_missing_strings", _t1866}) - } - _t1867 := p._make_value_string(msg.GetDecimalSeparator()) - result = append(result, []interface{}{"csv_decimal_separator", _t1867}) - _t1868 := p._make_value_string(msg.GetEncoding()) - result = append(result, []interface{}{"csv_encoding", _t1868}) - _t1869 := p._make_value_string(msg.GetCompression()) - result = append(result, []interface{}{"csv_compression", _t1869}) + _t1864 := p._make_value_string(missing_string) + result = append(result, []interface{}{"csv_missing_strings", _t1864}) + } + _t1865 := p._make_value_string(msg.GetDecimalSeparator()) + result = append(result, []interface{}{"csv_decimal_separator", _t1865}) + _t1866 := p._make_value_string(msg.GetEncoding()) + result = append(result, []interface{}{"csv_encoding", _t1866}) + _t1867 := p._make_value_string(msg.GetCompression()) + result = append(result, []interface{}{"csv_compression", _t1867}) if msg.GetPartitionSizeMb() != 0 { - _t1870 := p._make_value_int64(msg.GetPartitionSizeMb()) - result = append(result, []interface{}{"csv_partition_size_mb", _t1870}) + _t1868 := p._make_value_int64(msg.GetPartitionSizeMb()) + result = append(result, []interface{}{"csv_partition_size_mb", _t1868}) } return listSort(result) } func (p *PrettyPrinter) deconstruct_csv_storage_integration_optional(msg *pb.CSVConfig) [][]interface{} { - var _t1871 interface{} + var _t1869 interface{} if !(hasProtoField(msg, "storage_integration")) { return nil } - _ = _t1871 + _ = _t1869 si := msg.GetStorageIntegration() result := [][]interface{}{} if si.GetProvider() != "" { - _t1872 := p._make_value_string(si.GetProvider()) - result = append(result, []interface{}{"provider", _t1872}) + _t1870 := p._make_value_string(si.GetProvider()) + result = append(result, []interface{}{"provider", _t1870}) } if si.GetAzureSasToken() != "" { - _t1873 := p._make_value_string("***") - result = append(result, []interface{}{"azure_sas_token", _t1873}) + _t1871 := p._make_value_string("***") + result = append(result, []interface{}{"azure_sas_token", _t1871}) } if si.GetS3Region() != "" { - _t1874 := p._make_value_string(si.GetS3Region()) - result = append(result, []interface{}{"s3_region", _t1874}) + _t1872 := p._make_value_string(si.GetS3Region()) + result = append(result, []interface{}{"s3_region", _t1872}) } if si.GetS3AccessKeyId() != "" { - _t1875 := p._make_value_string("***") - result = append(result, []interface{}{"s3_access_key_id", _t1875}) + _t1873 := p._make_value_string("***") + result = append(result, []interface{}{"s3_access_key_id", _t1873}) } if si.GetS3SecretAccessKey() != "" { - _t1876 := p._make_value_string("***") - result = append(result, []interface{}{"s3_secret_access_key", _t1876}) + _t1874 := p._make_value_string("***") + result = append(result, []interface{}{"s3_secret_access_key", _t1874}) } return listSort(result) } func (p *PrettyPrinter) deconstruct_betree_info_config(msg *pb.BeTreeInfo) [][]interface{} { result := [][]interface{}{} - _t1877 := p._make_value_float64(msg.GetStorageConfig().GetEpsilon()) - result = append(result, []interface{}{"betree_config_epsilon", _t1877}) - _t1878 := p._make_value_int64(msg.GetStorageConfig().GetMaxPivots()) - result = append(result, []interface{}{"betree_config_max_pivots", _t1878}) - _t1879 := p._make_value_int64(msg.GetStorageConfig().GetMaxDeltas()) - result = append(result, []interface{}{"betree_config_max_deltas", _t1879}) - _t1880 := p._make_value_int64(msg.GetStorageConfig().GetMaxLeaf()) - result = append(result, []interface{}{"betree_config_max_leaf", _t1880}) + _t1875 := p._make_value_float64(msg.GetStorageConfig().GetEpsilon()) + result = append(result, []interface{}{"betree_config_epsilon", _t1875}) + _t1876 := p._make_value_int64(msg.GetStorageConfig().GetMaxPivots()) + result = append(result, []interface{}{"betree_config_max_pivots", _t1876}) + _t1877 := p._make_value_int64(msg.GetStorageConfig().GetMaxDeltas()) + result = append(result, []interface{}{"betree_config_max_deltas", _t1877}) + _t1878 := p._make_value_int64(msg.GetStorageConfig().GetMaxLeaf()) + result = append(result, []interface{}{"betree_config_max_leaf", _t1878}) if hasProtoField(msg.GetRelationLocator(), "root_pageid") { if msg.GetRelationLocator().GetRootPageid() != nil { - _t1881 := p._make_value_uint128(msg.GetRelationLocator().GetRootPageid()) - result = append(result, []interface{}{"betree_locator_root_pageid", _t1881}) + _t1879 := p._make_value_uint128(msg.GetRelationLocator().GetRootPageid()) + result = append(result, []interface{}{"betree_locator_root_pageid", _t1879}) } } if hasProtoField(msg.GetRelationLocator(), "inline_data") { if msg.GetRelationLocator().GetInlineData() != nil { - _t1882 := p._make_value_string(string(msg.GetRelationLocator().GetInlineData())) - result = append(result, []interface{}{"betree_locator_inline_data", _t1882}) + _t1880 := p._make_value_string(string(msg.GetRelationLocator().GetInlineData())) + result = append(result, []interface{}{"betree_locator_inline_data", _t1880}) } } - _t1883 := p._make_value_int64(msg.GetRelationLocator().GetElementCount()) - result = append(result, []interface{}{"betree_locator_element_count", _t1883}) - _t1884 := p._make_value_int64(msg.GetRelationLocator().GetTreeHeight()) - result = append(result, []interface{}{"betree_locator_tree_height", _t1884}) + _t1881 := p._make_value_int64(msg.GetRelationLocator().GetElementCount()) + result = append(result, []interface{}{"betree_locator_element_count", _t1881}) + _t1882 := p._make_value_int64(msg.GetRelationLocator().GetTreeHeight()) + result = append(result, []interface{}{"betree_locator_tree_height", _t1882}) return listSort(result) } func (p *PrettyPrinter) deconstruct_export_csv_config(msg *pb.ExportCSVConfig) [][]interface{} { result := [][]interface{}{} if msg.PartitionSize != nil { - _t1885 := p._make_value_int64(*msg.PartitionSize) - result = append(result, []interface{}{"partition_size", _t1885}) + _t1883 := p._make_value_int64(*msg.PartitionSize) + result = append(result, []interface{}{"partition_size", _t1883}) } if msg.Compression != nil { - _t1886 := p._make_value_string(*msg.Compression) - result = append(result, []interface{}{"compression", _t1886}) + _t1884 := p._make_value_string(*msg.Compression) + result = append(result, []interface{}{"compression", _t1884}) } if msg.SyntaxHeaderRow != nil { - _t1887 := p._make_value_boolean(*msg.SyntaxHeaderRow) - result = append(result, []interface{}{"syntax_header_row", _t1887}) + _t1885 := p._make_value_boolean(*msg.SyntaxHeaderRow) + result = append(result, []interface{}{"syntax_header_row", _t1885}) } if msg.SyntaxMissingString != nil { - _t1888 := p._make_value_string(*msg.SyntaxMissingString) - result = append(result, []interface{}{"syntax_missing_string", _t1888}) + _t1886 := p._make_value_string(*msg.SyntaxMissingString) + result = append(result, []interface{}{"syntax_missing_string", _t1886}) } if msg.SyntaxDelim != nil { - _t1889 := p._make_value_string(*msg.SyntaxDelim) - result = append(result, []interface{}{"syntax_delim", _t1889}) + _t1887 := p._make_value_string(*msg.SyntaxDelim) + result = append(result, []interface{}{"syntax_delim", _t1887}) } if msg.SyntaxQuotechar != nil { - _t1890 := p._make_value_string(*msg.SyntaxQuotechar) - result = append(result, []interface{}{"syntax_quotechar", _t1890}) + _t1888 := p._make_value_string(*msg.SyntaxQuotechar) + result = append(result, []interface{}{"syntax_quotechar", _t1888}) } if msg.SyntaxEscapechar != nil { - _t1891 := p._make_value_string(*msg.SyntaxEscapechar) - result = append(result, []interface{}{"syntax_escapechar", _t1891}) + _t1889 := p._make_value_string(*msg.SyntaxEscapechar) + result = append(result, []interface{}{"syntax_escapechar", _t1889}) } return listSort(result) } @@ -564,51 +576,51 @@ func (p *PrettyPrinter) mask_secret_value(pair []interface{}) string { } func (p *PrettyPrinter) deconstruct_iceberg_catalog_config_scope_optional(msg *pb.IcebergCatalogConfig) *string { - var _t1892 interface{} + var _t1890 interface{} if *msg.Scope != "" { return ptr(*msg.Scope) } - _ = _t1892 + _ = _t1890 return nil } func (p *PrettyPrinter) deconstruct_iceberg_data_from_snapshot_optional(msg *pb.IcebergData) *string { - var _t1893 interface{} + var _t1891 interface{} if *msg.FromSnapshot != "" { return ptr(*msg.FromSnapshot) } - _ = _t1893 + _ = _t1891 return nil } func (p *PrettyPrinter) deconstruct_iceberg_data_to_snapshot_optional(msg *pb.IcebergData) *string { - var _t1894 interface{} + var _t1892 interface{} if *msg.ToSnapshot != "" { return ptr(*msg.ToSnapshot) } - _ = _t1894 + _ = _t1892 return nil } func (p *PrettyPrinter) deconstruct_export_iceberg_config_optional(msg *pb.ExportIcebergConfig) [][]interface{} { result := [][]interface{}{} if *msg.Prefix != "" { - _t1895 := p._make_value_string(*msg.Prefix) - result = append(result, []interface{}{"prefix", _t1895}) + _t1893 := p._make_value_string(*msg.Prefix) + result = append(result, []interface{}{"prefix", _t1893}) } if *msg.TargetFileSizeBytes != 0 { - _t1896 := p._make_value_int64(*msg.TargetFileSizeBytes) - result = append(result, []interface{}{"target_file_size_bytes", _t1896}) + _t1894 := p._make_value_int64(*msg.TargetFileSizeBytes) + result = append(result, []interface{}{"target_file_size_bytes", _t1894}) } if msg.GetCompression() != "" { - _t1897 := p._make_value_string(msg.GetCompression()) - result = append(result, []interface{}{"compression", _t1897}) + _t1895 := p._make_value_string(msg.GetCompression()) + result = append(result, []interface{}{"compression", _t1895}) } - var _t1898 interface{} + var _t1896 interface{} if int64(len(result)) == 0 { return nil } - _ = _t1898 + _ = _t1896 return listSort(result) } @@ -619,11 +631,11 @@ func (p *PrettyPrinter) deconstruct_relation_id_string(msg *pb.RelationId) strin func (p *PrettyPrinter) deconstruct_relation_id_uint128(msg *pb.RelationId) *pb.UInt128Value { name := p.relationIdToString(msg) - var _t1899 interface{} + var _t1897 interface{} if name == nil { return p.relationIdToUint128(msg) } - _ = _t1899 + _ = _t1897 return nil } @@ -5309,8 +5321,8 @@ func (p *PrettyPrinter) pretty_debug_info(msg *pb.DebugInfo) interface{} { for _idx, _rid := range msg.GetIds() { p.newline() p.write("(") - _t1900 := &pb.UInt128Value{Low: _rid.GetIdLow(), High: _rid.GetIdHigh()} - p.pprintDispatch(_t1900) + _t1898 := &pb.UInt128Value{Low: _rid.GetIdLow(), High: _rid.GetIdHigh()} + p.pprintDispatch(_t1898) p.write(" ") p.write(p.formatStringValue(msg.GetOrigNames()[_idx])) p.write(")") @@ -5489,20 +5501,6 @@ func (p *PrettyPrinter) pretty_u_int128_value(msg *pb.UInt128Value) interface{} return nil } -func (p *PrettyPrinter) pretty_ast_size_limit(msg *pb.ASTSizeLimit) interface{} { - p.write("(ast_size_limit") - p.indentSexp() - p.newline() - p.write(":warning_limit ") - p.write(fmt.Sprintf("%d", msg.GetWarningLimit())) - p.newline() - p.write(":exception_limit ") - p.write(fmt.Sprintf("%d", msg.GetExceptionLimit())) - p.write(")") - p.dedent() - return nil -} - func (p *PrettyPrinter) pretty_export_csv_columns(msg *pb.ExportCSVColumns) interface{} { p.write("(export_csv_columns") p.indentSexp() @@ -5794,8 +5792,6 @@ func (p *PrettyPrinter) pprintDispatch(msg interface{}) { p.pretty_storage_integration(m) case *pb.UInt128Value: p.pretty_u_int128_value(m) - case *pb.ASTSizeLimit: - p.pretty_ast_size_limit(m) case *pb.ExportCSVColumns: p.pretty_export_csv_columns(m) case *pb.IVMConfig: diff --git a/sdks/julia/LogicalQueryProtocol.jl/src/gen/relationalai/lqp/v1/transactions_pb.jl b/sdks/julia/LogicalQueryProtocol.jl/src/gen/relationalai/lqp/v1/transactions_pb.jl index 4a7d5f37..a22ff0d2 100644 --- a/sdks/julia/LogicalQueryProtocol.jl/src/gen/relationalai/lqp/v1/transactions_pb.jl +++ b/sdks/julia/LogicalQueryProtocol.jl/src/gen/relationalai/lqp/v1/transactions_pb.jl @@ -6,9 +6,9 @@ using ProtoBuf: OneOf using ProtoBuf.EnumX: @enumx export ExportIcebergConfig, ExportCSVColumn, Demand, Undefine, MaintenanceLevel, Define -export Context, Sync, SnapshotMapping, Abort, Output, ASTSizeLimit, ExportCSVColumns -export IVMConfig, Snapshot, ExportCSVSource, Configure, Write, ExportCSVConfig, Export -export Epoch, Read, Transaction, WhatIf +export Context, Sync, SnapshotMapping, Abort, Output, ExportCSVColumns, IVMConfig, Snapshot +export ExportCSVSource, Configure, Write, ExportCSVConfig, Export, Epoch, Read, Transaction +export WhatIf abstract type var"##Abstract#Transaction" end abstract type var"##Abstract#Epoch" end abstract type var"##Abstract#Read" end @@ -388,43 +388,6 @@ function PB._encoded_size(x::Output) return encoded_size end -struct ASTSizeLimit - warning_limit::Int64 - exception_limit::Int64 -end -ASTSizeLimit(;warning_limit = zero(Int64), exception_limit = zero(Int64)) = ASTSizeLimit(warning_limit, exception_limit) -PB.default_values(::Type{ASTSizeLimit}) = (;warning_limit = zero(Int64), exception_limit = zero(Int64)) -PB.field_numbers(::Type{ASTSizeLimit}) = (;warning_limit = 1, exception_limit = 2) - -function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:ASTSizeLimit}, _endpos::Int=0, _group::Bool=false) - warning_limit = zero(Int64) - exception_limit = zero(Int64) - while !PB.message_done(d, _endpos, _group) - field_number, wire_type = PB.decode_tag(d) - if field_number == 1 - warning_limit = PB.decode(d, Int64) - elseif field_number == 2 - exception_limit = PB.decode(d, Int64) - else - Base.skip(d, wire_type) - end - end - return ASTSizeLimit(warning_limit, exception_limit) -end - -function PB.encode(e::PB.AbstractProtoEncoder, x::ASTSizeLimit) - initpos = position(e.io) - x.warning_limit != zero(Int64) && PB.encode(e, 1, x.warning_limit) - x.exception_limit != zero(Int64) && PB.encode(e, 2, x.exception_limit) - return position(e.io) - initpos -end -function PB._encoded_size(x::ASTSizeLimit) - encoded_size = 0 - x.warning_limit != zero(Int64) && (encoded_size += PB._encoded_size(x.warning_limit, 1)) - x.exception_limit != zero(Int64) && (encoded_size += PB._encoded_size(x.exception_limit, 2)) - return encoded_size -end - struct ExportCSVColumns columns::Vector{ExportCSVColumn} end @@ -573,16 +536,16 @@ end struct Configure semantics_version::Int64 ivm_config::Union{Nothing,IVMConfig} - ast_size_limit::Union{Nothing,ASTSizeLimit} + configuration_values::Dict{String,Value} end -Configure(;semantics_version = zero(Int64), ivm_config = nothing, ast_size_limit = nothing) = Configure(semantics_version, ivm_config, ast_size_limit) -PB.default_values(::Type{Configure}) = (;semantics_version = zero(Int64), ivm_config = nothing, ast_size_limit = nothing) -PB.field_numbers(::Type{Configure}) = (;semantics_version = 1, ivm_config = 2, ast_size_limit = 3) +Configure(;semantics_version = zero(Int64), ivm_config = nothing, configuration_values = Dict{String,Value}()) = Configure(semantics_version, ivm_config, configuration_values) +PB.default_values(::Type{Configure}) = (;semantics_version = zero(Int64), ivm_config = nothing, configuration_values = Dict{String,Value}()) +PB.field_numbers(::Type{Configure}) = (;semantics_version = 1, ivm_config = 2, configuration_values = 3) function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:Configure}, _endpos::Int=0, _group::Bool=false) semantics_version = zero(Int64) ivm_config = Ref{Union{Nothing,IVMConfig}}(nothing) - ast_size_limit = Ref{Union{Nothing,ASTSizeLimit}}(nothing) + configuration_values = Dict{String,Value}() while !PB.message_done(d, _endpos, _group) field_number, wire_type = PB.decode_tag(d) if field_number == 1 @@ -590,26 +553,26 @@ function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:Configure}, _endpos::Int elseif field_number == 2 PB.decode!(d, ivm_config) elseif field_number == 3 - PB.decode!(d, ast_size_limit) + PB.decode!(d, configuration_values) else Base.skip(d, wire_type) end end - return Configure(semantics_version, ivm_config[], ast_size_limit[]) + return Configure(semantics_version, ivm_config[], configuration_values) end function PB.encode(e::PB.AbstractProtoEncoder, x::Configure) initpos = position(e.io) x.semantics_version != zero(Int64) && PB.encode(e, 1, x.semantics_version) !isnothing(x.ivm_config) && PB.encode(e, 2, x.ivm_config) - !isnothing(x.ast_size_limit) && PB.encode(e, 3, x.ast_size_limit) + !isempty(x.configuration_values) && PB.encode(e, 3, x.configuration_values) return position(e.io) - initpos end function PB._encoded_size(x::Configure) encoded_size = 0 x.semantics_version != zero(Int64) && (encoded_size += PB._encoded_size(x.semantics_version, 1)) !isnothing(x.ivm_config) && (encoded_size += PB._encoded_size(x.ivm_config, 2)) - !isnothing(x.ast_size_limit) && (encoded_size += PB._encoded_size(x.ast_size_limit, 3)) + !isempty(x.configuration_values) && (encoded_size += PB._encoded_size(x.configuration_values, 3)) return encoded_size end diff --git a/sdks/julia/LogicalQueryProtocol.jl/src/parser.jl b/sdks/julia/LogicalQueryProtocol.jl/src/parser.jl index d93e2455..05f43553 100644 --- a/sdks/julia/LogicalQueryProtocol.jl/src/parser.jl +++ b/sdks/julia/LogicalQueryProtocol.jl/src/parser.jl @@ -559,10 +559,8 @@ end function default_configure(parser::ParserState)::Proto.Configure _t2249 = Proto.IVMConfig(level=Proto.MaintenanceLevel.MAINTENANCE_LEVEL_OFF) ivm_config = _t2249 - _t2250 = Proto.ASTSizeLimit(warning_limit=0, exception_limit=0) - ast_size_limit = _t2250 - _t2251 = Proto.Configure(semantics_version=0, ivm_config=ivm_config, ast_size_limit=ast_size_limit) - return _t2251 + _t2250 = Proto.Configure(semantics_version=0, ivm_config=ivm_config) + return _t2250 end function construct_configure(parser::ParserState, config_dict::Vector{Tuple{String, Proto.Value}})::Proto.Configure @@ -584,68 +582,69 @@ function construct_configure(parser::ParserState, config_dict::Vector{Tuple{Stri end end end - _t2252 = Proto.IVMConfig(level=maintenance_level) - ivm_config = _t2252 - _t2253 = _extract_value_int64(parser, get(config, "semantics_version", nothing), 0) - semantics_version = _t2253 - _t2254 = _extract_value_int64(parser, get(config, "ast_size.warning_limit", nothing), 0) - warning_limit = _t2254 - _t2255 = _extract_value_int64(parser, get(config, "ast_size.exception_limit", nothing), 0) - exception_limit = _t2255 - _t2256 = Proto.ASTSizeLimit(warning_limit=warning_limit, exception_limit=exception_limit) - ast_size_limit = _t2256 - _t2257 = Proto.Configure(semantics_version=semantics_version, ivm_config=ivm_config, ast_size_limit=ast_size_limit) - return _t2257 + _t2251 = Proto.IVMConfig(level=maintenance_level) + ivm_config = _t2251 + _t2252 = _extract_value_int64(parser, get(config, "semantics_version", nothing), 0) + semantics_version = _t2252 + config_values_pairs = Tuple{String, Proto.Value}[] + for pair in config_dict + if (pair[1] != "semantics_version" && pair[1] != "ivm.maintenance_level") + push!(config_values_pairs, pair) + end + end + configuration_values = Dict(config_values_pairs) + _t2253 = Proto.Configure(semantics_version=semantics_version, ivm_config=ivm_config, configuration_values=configuration_values) + return _t2253 end function construct_export_csv_config(parser::ParserState, path::String, columns::Vector{Proto.ExportCSVColumn}, config_dict::Vector{Tuple{String, Proto.Value}})::Proto.ExportCSVConfig config = Dict(config_dict) - _t2258 = _extract_value_int64(parser, get(config, "partition_size", nothing), 0) - partition_size = _t2258 - _t2259 = _extract_value_string(parser, get(config, "compression", nothing), "") - compression = _t2259 - _t2260 = _extract_value_boolean(parser, get(config, "syntax_header_row", nothing), true) - syntax_header_row = _t2260 - _t2261 = _extract_value_string(parser, get(config, "syntax_missing_string", nothing), "") - syntax_missing_string = _t2261 - _t2262 = _extract_value_string(parser, get(config, "syntax_delim", nothing), ",") - syntax_delim = _t2262 - _t2263 = _extract_value_string(parser, get(config, "syntax_quotechar", nothing), "\"") - syntax_quotechar = _t2263 - _t2264 = _extract_value_string(parser, get(config, "syntax_escapechar", nothing), "\\") - syntax_escapechar = _t2264 - _t2265 = Proto.ExportCSVConfig(path=path, data_columns=columns, partition_size=partition_size, compression=compression, syntax_header_row=syntax_header_row, syntax_missing_string=syntax_missing_string, syntax_delim=syntax_delim, syntax_quotechar=syntax_quotechar, syntax_escapechar=syntax_escapechar) - return _t2265 + _t2254 = _extract_value_int64(parser, get(config, "partition_size", nothing), 0) + partition_size = _t2254 + _t2255 = _extract_value_string(parser, get(config, "compression", nothing), "") + compression = _t2255 + _t2256 = _extract_value_boolean(parser, get(config, "syntax_header_row", nothing), true) + syntax_header_row = _t2256 + _t2257 = _extract_value_string(parser, get(config, "syntax_missing_string", nothing), "") + syntax_missing_string = _t2257 + _t2258 = _extract_value_string(parser, get(config, "syntax_delim", nothing), ",") + syntax_delim = _t2258 + _t2259 = _extract_value_string(parser, get(config, "syntax_quotechar", nothing), "\"") + syntax_quotechar = _t2259 + _t2260 = _extract_value_string(parser, get(config, "syntax_escapechar", nothing), "\\") + syntax_escapechar = _t2260 + _t2261 = Proto.ExportCSVConfig(path=path, data_columns=columns, partition_size=partition_size, compression=compression, syntax_header_row=syntax_header_row, syntax_missing_string=syntax_missing_string, syntax_delim=syntax_delim, syntax_quotechar=syntax_quotechar, syntax_escapechar=syntax_escapechar) + return _t2261 end function construct_export_csv_config_with_location(parser::ParserState, location::Tuple{String, String}, csv_source::Proto.ExportCSVSource, csv_config::Proto.CSVConfig)::Proto.ExportCSVConfig - _t2266 = Proto.ExportCSVConfig(path=location[1], transaction_output_name=location[2], csv_source=csv_source, csv_config=csv_config) - return _t2266 + _t2262 = Proto.ExportCSVConfig(path=location[1], transaction_output_name=location[2], csv_source=csv_source, csv_config=csv_config) + return _t2262 end function construct_iceberg_catalog_config(parser::ParserState, catalog_uri::String, scope_opt::Union{Nothing, String}, property_pairs::Vector{Tuple{String, String}}, auth_property_pairs::Vector{Tuple{String, String}})::Proto.IcebergCatalogConfig props = Dict(property_pairs) auth_props = Dict(auth_property_pairs) - _t2267 = Proto.IcebergCatalogConfig(catalog_uri=catalog_uri, scope=(!isnothing(scope_opt) ? scope_opt : ""), properties=props, auth_properties=auth_props) - return _t2267 + _t2263 = Proto.IcebergCatalogConfig(catalog_uri=catalog_uri, scope=(!isnothing(scope_opt) ? scope_opt : ""), properties=props, auth_properties=auth_props) + return _t2263 end function construct_iceberg_data(parser::ParserState, locator::Proto.IcebergLocator, config::Proto.IcebergCatalogConfig, columns::Vector{Proto.GNFColumn}, from_snapshot_opt::Union{Nothing, String}, to_snapshot_opt::Union{Nothing, String}, returns_delta::Bool)::Proto.IcebergData - _t2268 = Proto.IcebergData(locator=locator, config=config, columns=columns, from_snapshot=(!isnothing(from_snapshot_opt) ? from_snapshot_opt : ""), to_snapshot=(!isnothing(to_snapshot_opt) ? to_snapshot_opt : ""), returns_delta=returns_delta) - return _t2268 + _t2264 = Proto.IcebergData(locator=locator, config=config, columns=columns, from_snapshot=(!isnothing(from_snapshot_opt) ? from_snapshot_opt : ""), to_snapshot=(!isnothing(to_snapshot_opt) ? to_snapshot_opt : ""), returns_delta=returns_delta) + return _t2264 end function construct_export_iceberg_config_full(parser::ParserState, locator::Proto.IcebergLocator, config::Proto.IcebergCatalogConfig, table_def::Proto.RelationId, table_property_pairs::Vector{Tuple{String, String}}, config_dict::Union{Nothing, Vector{Tuple{String, Proto.Value}}})::Proto.ExportIcebergConfig cfg = Dict((!isnothing(config_dict) ? config_dict : Tuple{String, Proto.Value}[])) - _t2269 = _extract_value_string(parser, get(cfg, "prefix", nothing), "") - prefix = _t2269 - _t2270 = _extract_value_int64(parser, get(cfg, "target_file_size_bytes", nothing), 0) - target_file_size_bytes = _t2270 - _t2271 = _extract_value_string(parser, get(cfg, "compression", nothing), "") - compression = _t2271 + _t2265 = _extract_value_string(parser, get(cfg, "prefix", nothing), "") + prefix = _t2265 + _t2266 = _extract_value_int64(parser, get(cfg, "target_file_size_bytes", nothing), 0) + target_file_size_bytes = _t2266 + _t2267 = _extract_value_string(parser, get(cfg, "compression", nothing), "") + compression = _t2267 table_props = Dict(table_property_pairs) - _t2272 = Proto.ExportIcebergConfig(locator=locator, config=config, table_def=table_def, prefix=prefix, target_file_size_bytes=target_file_size_bytes, compression=compression, table_properties=table_props) - return _t2272 + _t2268 = Proto.ExportIcebergConfig(locator=locator, config=config, table_def=table_def, prefix=prefix, target_file_size_bytes=target_file_size_bytes, compression=compression, table_properties=table_props) + return _t2268 end # --- Parse functions --- diff --git a/sdks/julia/LogicalQueryProtocol.jl/src/pretty.jl b/sdks/julia/LogicalQueryProtocol.jl/src/pretty.jl index 9eb0e7f5..7bef9b81 100644 --- a/sdks/julia/LogicalQueryProtocol.jl/src/pretty.jl +++ b/sdks/julia/LogicalQueryProtocol.jl/src/pretty.jl @@ -446,50 +446,45 @@ function deconstruct_configure(pp::PrettyPrinter, msg::Proto.Configure)::Vector{ end _t1900 = _make_value_int64(pp, msg.semantics_version) push!(result, ("semantics_version", _t1900,)) - if msg.ast_size_limit.warning_limit != 0 - _t1901 = _make_value_int64(pp, msg.ast_size_limit.warning_limit) - push!(result, ("ast_size.warning_limit", _t1901,)) - end - if msg.ast_size_limit.exception_limit != 0 - _t1902 = _make_value_int64(pp, msg.ast_size_limit.exception_limit) - push!(result, ("ast_size.exception_limit", _t1902,)) + for pair in sort([(k, v) for (k, v) in msg.configuration_values]) + push!(result, pair) end return sort(result) end function deconstruct_csv_config(pp::PrettyPrinter, msg::Proto.CSVConfig)::Vector{Tuple{String, Proto.Value}} result = Tuple{String, Proto.Value}[] - _t1903 = _make_value_int32(pp, msg.header_row) - push!(result, ("csv_header_row", _t1903,)) - _t1904 = _make_value_int64(pp, msg.skip) - push!(result, ("csv_skip", _t1904,)) + _t1901 = _make_value_int32(pp, msg.header_row) + push!(result, ("csv_header_row", _t1901,)) + _t1902 = _make_value_int64(pp, msg.skip) + push!(result, ("csv_skip", _t1902,)) if msg.new_line != "" - _t1905 = _make_value_string(pp, msg.new_line) - push!(result, ("csv_new_line", _t1905,)) - end - _t1906 = _make_value_string(pp, msg.delimiter) - push!(result, ("csv_delimiter", _t1906,)) - _t1907 = _make_value_string(pp, msg.quotechar) - push!(result, ("csv_quotechar", _t1907,)) - _t1908 = _make_value_string(pp, msg.escapechar) - push!(result, ("csv_escapechar", _t1908,)) + _t1903 = _make_value_string(pp, msg.new_line) + push!(result, ("csv_new_line", _t1903,)) + end + _t1904 = _make_value_string(pp, msg.delimiter) + push!(result, ("csv_delimiter", _t1904,)) + _t1905 = _make_value_string(pp, msg.quotechar) + push!(result, ("csv_quotechar", _t1905,)) + _t1906 = _make_value_string(pp, msg.escapechar) + push!(result, ("csv_escapechar", _t1906,)) if msg.comment != "" - _t1909 = _make_value_string(pp, msg.comment) - push!(result, ("csv_comment", _t1909,)) + _t1907 = _make_value_string(pp, msg.comment) + push!(result, ("csv_comment", _t1907,)) end for missing_string in msg.missing_strings - _t1910 = _make_value_string(pp, missing_string) - push!(result, ("csv_missing_strings", _t1910,)) - end - _t1911 = _make_value_string(pp, msg.decimal_separator) - push!(result, ("csv_decimal_separator", _t1911,)) - _t1912 = _make_value_string(pp, msg.encoding) - push!(result, ("csv_encoding", _t1912,)) - _t1913 = _make_value_string(pp, msg.compression) - push!(result, ("csv_compression", _t1913,)) + _t1908 = _make_value_string(pp, missing_string) + push!(result, ("csv_missing_strings", _t1908,)) + end + _t1909 = _make_value_string(pp, msg.decimal_separator) + push!(result, ("csv_decimal_separator", _t1909,)) + _t1910 = _make_value_string(pp, msg.encoding) + push!(result, ("csv_encoding", _t1910,)) + _t1911 = _make_value_string(pp, msg.compression) + push!(result, ("csv_compression", _t1911,)) if msg.partition_size_mb != 0 - _t1914 = _make_value_int64(pp, msg.partition_size_mb) - push!(result, ("csv_partition_size_mb", _t1914,)) + _t1912 = _make_value_int64(pp, msg.partition_size_mb) + push!(result, ("csv_partition_size_mb", _t1912,)) end return sort(result) end @@ -498,91 +493,91 @@ function deconstruct_csv_storage_integration_optional(pp::PrettyPrinter, msg::Pr if !_has_proto_field(msg, Symbol("storage_integration")) return nothing else - _t1915 = nothing + _t1913 = nothing end si = msg.storage_integration result = Tuple{String, Proto.Value}[] if si.provider != "" - _t1916 = _make_value_string(pp, si.provider) - push!(result, ("provider", _t1916,)) + _t1914 = _make_value_string(pp, si.provider) + push!(result, ("provider", _t1914,)) end if si.azure_sas_token != "" - _t1917 = _make_value_string(pp, "***") - push!(result, ("azure_sas_token", _t1917,)) + _t1915 = _make_value_string(pp, "***") + push!(result, ("azure_sas_token", _t1915,)) end if si.s3_region != "" - _t1918 = _make_value_string(pp, si.s3_region) - push!(result, ("s3_region", _t1918,)) + _t1916 = _make_value_string(pp, si.s3_region) + push!(result, ("s3_region", _t1916,)) end if si.s3_access_key_id != "" - _t1919 = _make_value_string(pp, "***") - push!(result, ("s3_access_key_id", _t1919,)) + _t1917 = _make_value_string(pp, "***") + push!(result, ("s3_access_key_id", _t1917,)) end if si.s3_secret_access_key != "" - _t1920 = _make_value_string(pp, "***") - push!(result, ("s3_secret_access_key", _t1920,)) + _t1918 = _make_value_string(pp, "***") + push!(result, ("s3_secret_access_key", _t1918,)) end return sort(result) end function deconstruct_betree_info_config(pp::PrettyPrinter, msg::Proto.BeTreeInfo)::Vector{Tuple{String, Proto.Value}} result = Tuple{String, Proto.Value}[] - _t1921 = _make_value_float64(pp, msg.storage_config.epsilon) - push!(result, ("betree_config_epsilon", _t1921,)) - _t1922 = _make_value_int64(pp, msg.storage_config.max_pivots) - push!(result, ("betree_config_max_pivots", _t1922,)) - _t1923 = _make_value_int64(pp, msg.storage_config.max_deltas) - push!(result, ("betree_config_max_deltas", _t1923,)) - _t1924 = _make_value_int64(pp, msg.storage_config.max_leaf) - push!(result, ("betree_config_max_leaf", _t1924,)) + _t1919 = _make_value_float64(pp, msg.storage_config.epsilon) + push!(result, ("betree_config_epsilon", _t1919,)) + _t1920 = _make_value_int64(pp, msg.storage_config.max_pivots) + push!(result, ("betree_config_max_pivots", _t1920,)) + _t1921 = _make_value_int64(pp, msg.storage_config.max_deltas) + push!(result, ("betree_config_max_deltas", _t1921,)) + _t1922 = _make_value_int64(pp, msg.storage_config.max_leaf) + push!(result, ("betree_config_max_leaf", _t1922,)) if _has_proto_field(msg.relation_locator, Symbol("root_pageid")) if !isnothing(_get_oneof_field(msg.relation_locator, :root_pageid)) - _t1925 = _make_value_uint128(pp, _get_oneof_field(msg.relation_locator, :root_pageid)) - push!(result, ("betree_locator_root_pageid", _t1925,)) + _t1923 = _make_value_uint128(pp, _get_oneof_field(msg.relation_locator, :root_pageid)) + push!(result, ("betree_locator_root_pageid", _t1923,)) end end if _has_proto_field(msg.relation_locator, Symbol("inline_data")) if !isnothing(_get_oneof_field(msg.relation_locator, :inline_data)) - _t1926 = _make_value_string(pp, String(copy(_get_oneof_field(msg.relation_locator, :inline_data)))) - push!(result, ("betree_locator_inline_data", _t1926,)) + _t1924 = _make_value_string(pp, String(copy(_get_oneof_field(msg.relation_locator, :inline_data)))) + push!(result, ("betree_locator_inline_data", _t1924,)) end end - _t1927 = _make_value_int64(pp, msg.relation_locator.element_count) - push!(result, ("betree_locator_element_count", _t1927,)) - _t1928 = _make_value_int64(pp, msg.relation_locator.tree_height) - push!(result, ("betree_locator_tree_height", _t1928,)) + _t1925 = _make_value_int64(pp, msg.relation_locator.element_count) + push!(result, ("betree_locator_element_count", _t1925,)) + _t1926 = _make_value_int64(pp, msg.relation_locator.tree_height) + push!(result, ("betree_locator_tree_height", _t1926,)) return sort(result) end function deconstruct_export_csv_config(pp::PrettyPrinter, msg::Proto.ExportCSVConfig)::Vector{Tuple{String, Proto.Value}} result = Tuple{String, Proto.Value}[] if !isnothing(msg.partition_size) - _t1929 = _make_value_int64(pp, msg.partition_size) - push!(result, ("partition_size", _t1929,)) + _t1927 = _make_value_int64(pp, msg.partition_size) + push!(result, ("partition_size", _t1927,)) end if !isnothing(msg.compression) - _t1930 = _make_value_string(pp, msg.compression) - push!(result, ("compression", _t1930,)) + _t1928 = _make_value_string(pp, msg.compression) + push!(result, ("compression", _t1928,)) end if !isnothing(msg.syntax_header_row) - _t1931 = _make_value_boolean(pp, msg.syntax_header_row) - push!(result, ("syntax_header_row", _t1931,)) + _t1929 = _make_value_boolean(pp, msg.syntax_header_row) + push!(result, ("syntax_header_row", _t1929,)) end if !isnothing(msg.syntax_missing_string) - _t1932 = _make_value_string(pp, msg.syntax_missing_string) - push!(result, ("syntax_missing_string", _t1932,)) + _t1930 = _make_value_string(pp, msg.syntax_missing_string) + push!(result, ("syntax_missing_string", _t1930,)) end if !isnothing(msg.syntax_delim) - _t1933 = _make_value_string(pp, msg.syntax_delim) - push!(result, ("syntax_delim", _t1933,)) + _t1931 = _make_value_string(pp, msg.syntax_delim) + push!(result, ("syntax_delim", _t1931,)) end if !isnothing(msg.syntax_quotechar) - _t1934 = _make_value_string(pp, msg.syntax_quotechar) - push!(result, ("syntax_quotechar", _t1934,)) + _t1932 = _make_value_string(pp, msg.syntax_quotechar) + push!(result, ("syntax_quotechar", _t1932,)) end if !isnothing(msg.syntax_escapechar) - _t1935 = _make_value_string(pp, msg.syntax_escapechar) - push!(result, ("syntax_escapechar", _t1935,)) + _t1933 = _make_value_string(pp, msg.syntax_escapechar) + push!(result, ("syntax_escapechar", _t1933,)) end return sort(result) end @@ -595,7 +590,7 @@ function deconstruct_iceberg_catalog_config_scope_optional(pp::PrettyPrinter, ms if msg.scope != "" return msg.scope else - _t1936 = nothing + _t1934 = nothing end return nothing end @@ -604,7 +599,7 @@ function deconstruct_iceberg_data_from_snapshot_optional(pp::PrettyPrinter, msg: if msg.from_snapshot != "" return msg.from_snapshot else - _t1937 = nothing + _t1935 = nothing end return nothing end @@ -613,7 +608,7 @@ function deconstruct_iceberg_data_to_snapshot_optional(pp::PrettyPrinter, msg::P if msg.to_snapshot != "" return msg.to_snapshot else - _t1938 = nothing + _t1936 = nothing end return nothing end @@ -621,21 +616,21 @@ end function deconstruct_export_iceberg_config_optional(pp::PrettyPrinter, msg::Proto.ExportIcebergConfig)::Union{Nothing, Vector{Tuple{String, Proto.Value}}} result = Tuple{String, Proto.Value}[] if msg.prefix != "" - _t1939 = _make_value_string(pp, msg.prefix) - push!(result, ("prefix", _t1939,)) + _t1937 = _make_value_string(pp, msg.prefix) + push!(result, ("prefix", _t1937,)) end if msg.target_file_size_bytes != 0 - _t1940 = _make_value_int64(pp, msg.target_file_size_bytes) - push!(result, ("target_file_size_bytes", _t1940,)) + _t1938 = _make_value_int64(pp, msg.target_file_size_bytes) + push!(result, ("target_file_size_bytes", _t1938,)) end if msg.compression != "" - _t1941 = _make_value_string(pp, msg.compression) - push!(result, ("compression", _t1941,)) + _t1939 = _make_value_string(pp, msg.compression) + push!(result, ("compression", _t1939,)) end if length(result) == 0 return nothing else - _t1942 = nothing + _t1940 = nothing end return sort(result) end @@ -650,7 +645,7 @@ function deconstruct_relation_id_uint128(pp::PrettyPrinter, msg::Proto.RelationI if isnothing(name) return relation_id_to_uint128(pp, msg) else - _t1943 = nothing + _t1941 = nothing end return nothing end @@ -5377,12 +5372,12 @@ end function pretty_debug_info(pp::PrettyPrinter, msg::Proto.DebugInfo) write(pp, "(debug_info") indent_sexp!(pp) - for (i1944, _rid) in enumerate(msg.ids) - _idx = i1944 - 1 + for (i1942, _rid) in enumerate(msg.ids) + _idx = i1942 - 1 newline(pp) write(pp, "(") - _t1945 = Proto.UInt128Value(low=_rid.id_low, high=_rid.id_high) - _pprint_dispatch(pp, _t1945) + _t1943 = Proto.UInt128Value(low=_rid.id_low, high=_rid.id_high) + _pprint_dispatch(pp, _t1943) write(pp, " ") write(pp, format_string(DEFAULT_CONSTANT_FORMATTER, pp, msg.orig_names[_idx + 1])) write(pp, ")") @@ -5446,8 +5441,8 @@ function pretty_cdc_targets(pp::PrettyPrinter, msg::Proto.CDCTargets) indent_sexp!(pp) newline(pp) write(pp, ":inserts (") - for (i1946, _elem) in enumerate(msg.inserts) - _idx = i1946 - 1 + for (i1944, _elem) in enumerate(msg.inserts) + _idx = i1944 - 1 if (_idx > 0) write(pp, " ") end @@ -5456,8 +5451,8 @@ function pretty_cdc_targets(pp::PrettyPrinter, msg::Proto.CDCTargets) write(pp, ")") newline(pp) write(pp, ":deletes (") - for (i1947, _elem) in enumerate(msg.deletes) - _idx = i1947 - 1 + for (i1945, _elem) in enumerate(msg.deletes) + _idx = i1945 - 1 if (_idx > 0) write(pp, " ") end @@ -5481,8 +5476,8 @@ function pretty_functional_dependency(pp::PrettyPrinter, msg::Proto.FunctionalDe _pprint_dispatch(pp, msg.guard) newline(pp) write(pp, ":keys (") - for (i1948, _elem) in enumerate(msg.keys) - _idx = i1948 - 1 + for (i1946, _elem) in enumerate(msg.keys) + _idx = i1946 - 1 if (_idx > 0) write(pp, " ") end @@ -5491,8 +5486,8 @@ function pretty_functional_dependency(pp::PrettyPrinter, msg::Proto.FunctionalDe write(pp, ")") newline(pp) write(pp, ":values (") - for (i1949, _elem) in enumerate(msg.values) - _idx = i1949 - 1 + for (i1947, _elem) in enumerate(msg.values) + _idx = i1947 - 1 if (_idx > 0) write(pp, " ") end @@ -5518,8 +5513,8 @@ function pretty_plain_targets(pp::PrettyPrinter, msg::Proto.PlainTargets) indent_sexp!(pp) newline(pp) write(pp, ":targets (") - for (i1950, _elem) in enumerate(msg.targets) - _idx = i1950 - 1 + for (i1948, _elem) in enumerate(msg.targets) + _idx = i1948 - 1 if (_idx > 0) write(pp, " ") end @@ -5558,27 +5553,13 @@ function pretty_u_int128_value(pp::PrettyPrinter, msg::Proto.UInt128Value) return nothing end -function pretty_ast_size_limit(pp::PrettyPrinter, msg::Proto.ASTSizeLimit) - write(pp, "(ast_size_limit") - indent_sexp!(pp) - newline(pp) - write(pp, ":warning_limit ") - write(pp, string(msg.warning_limit)) - newline(pp) - write(pp, ":exception_limit ") - write(pp, string(msg.exception_limit)) - write(pp, ")") - dedent!(pp) - return nothing -end - function pretty_export_csv_columns(pp::PrettyPrinter, msg::Proto.ExportCSVColumns) write(pp, "(export_csv_columns") indent_sexp!(pp) newline(pp) write(pp, ":columns (") - for (i1951, _elem) in enumerate(msg.columns) - _idx = i1951 - 1 + for (i1949, _elem) in enumerate(msg.columns) + _idx = i1949 - 1 if (_idx > 0) write(pp, " ") end @@ -5744,7 +5725,6 @@ _pprint_dispatch(pp::PrettyPrinter, x::Proto.MissingValue) = pretty_missing_valu _pprint_dispatch(pp::PrettyPrinter, x::Proto.PlainTargets) = pretty_plain_targets(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.StorageIntegration) = pretty_storage_integration(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.UInt128Value) = pretty_u_int128_value(pp, x) -_pprint_dispatch(pp::PrettyPrinter, x::Proto.ASTSizeLimit) = pretty_ast_size_limit(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.ExportCSVColumns) = pretty_export_csv_columns(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.IVMConfig) = pretty_ivm_config(pp, x) _pprint_dispatch(pp::PrettyPrinter, x::Proto.MaintenanceLevel.T) = pretty_maintenance_level(pp, x) diff --git a/sdks/python/src/lqp/gen/parser.py b/sdks/python/src/lqp/gen/parser.py index f4608367..efacb409 100644 --- a/sdks/python/src/lqp/gen/parser.py +++ b/sdks/python/src/lqp/gen/parser.py @@ -635,10 +635,8 @@ def construct_betree_info(self, key_types: Sequence[logic_pb2.Type], value_types def default_configure(self) -> transactions_pb2.Configure: _t2257 = transactions_pb2.IVMConfig(level=transactions_pb2.MaintenanceLevel.MAINTENANCE_LEVEL_OFF) ivm_config = _t2257 - _t2258 = transactions_pb2.ASTSizeLimit(warning_limit=0, exception_limit=0) - ast_size_limit = _t2258 - _t2259 = transactions_pb2.Configure(semantics_version=0, ivm_config=ivm_config, ast_size_limit=ast_size_limit) - return _t2259 + _t2258 = transactions_pb2.Configure(semantics_version=0, ivm_config=ivm_config) + return _t2258 def construct_configure(self, config_dict: Sequence[tuple[str, logic_pb2.Value]]) -> transactions_pb2.Configure: config = dict(config_dict) @@ -655,63 +653,62 @@ def construct_configure(self, config_dict: Sequence[tuple[str, logic_pb2.Value]] maintenance_level = transactions_pb2.MaintenanceLevel.MAINTENANCE_LEVEL_ALL else: maintenance_level = transactions_pb2.MaintenanceLevel.MAINTENANCE_LEVEL_OFF - _t2260 = transactions_pb2.IVMConfig(level=maintenance_level) - ivm_config = _t2260 - _t2261 = self._extract_value_int64(config.get("semantics_version"), 0) - semantics_version = _t2261 - _t2262 = self._extract_value_int64(config.get("ast_size.warning_limit"), 0) - warning_limit = _t2262 - _t2263 = self._extract_value_int64(config.get("ast_size.exception_limit"), 0) - exception_limit = _t2263 - _t2264 = transactions_pb2.ASTSizeLimit(warning_limit=warning_limit, exception_limit=exception_limit) - ast_size_limit = _t2264 - _t2265 = transactions_pb2.Configure(semantics_version=semantics_version, ivm_config=ivm_config, ast_size_limit=ast_size_limit) - return _t2265 + _t2259 = transactions_pb2.IVMConfig(level=maintenance_level) + ivm_config = _t2259 + _t2260 = self._extract_value_int64(config.get("semantics_version"), 0) + semantics_version = _t2260 + config_values_pairs = [] + for pair in config_dict: + if (pair[0] != "semantics_version" and pair[0] != "ivm.maintenance_level"): + config_values_pairs.append(pair) + configuration_values = dict(config_values_pairs) + _t2261 = transactions_pb2.Configure(semantics_version=semantics_version, ivm_config=ivm_config, configuration_values=configuration_values) + return _t2261 def construct_export_csv_config(self, path: str, columns: Sequence[transactions_pb2.ExportCSVColumn], config_dict: Sequence[tuple[str, logic_pb2.Value]]) -> transactions_pb2.ExportCSVConfig: config = dict(config_dict) - _t2266 = self._extract_value_int64(config.get("partition_size"), 0) - partition_size = _t2266 - _t2267 = self._extract_value_string(config.get("compression"), "") - compression = _t2267 - _t2268 = self._extract_value_boolean(config.get("syntax_header_row"), True) - syntax_header_row = _t2268 - _t2269 = self._extract_value_string(config.get("syntax_missing_string"), "") - syntax_missing_string = _t2269 - _t2270 = self._extract_value_string(config.get("syntax_delim"), ",") - syntax_delim = _t2270 - _t2271 = self._extract_value_string(config.get("syntax_quotechar"), '"') - syntax_quotechar = _t2271 - _t2272 = self._extract_value_string(config.get("syntax_escapechar"), "\\") - syntax_escapechar = _t2272 - _t2273 = transactions_pb2.ExportCSVConfig(path=path, data_columns=columns, partition_size=partition_size, compression=compression, syntax_header_row=syntax_header_row, syntax_missing_string=syntax_missing_string, syntax_delim=syntax_delim, syntax_quotechar=syntax_quotechar, syntax_escapechar=syntax_escapechar) - return _t2273 + _t2262 = self._extract_value_int64(config.get("partition_size"), 0) + partition_size = _t2262 + _t2263 = self._extract_value_string(config.get("compression"), "") + compression = _t2263 + _t2264 = self._extract_value_boolean(config.get("syntax_header_row"), True) + syntax_header_row = _t2264 + _t2265 = self._extract_value_string(config.get("syntax_missing_string"), "") + syntax_missing_string = _t2265 + _t2266 = self._extract_value_string(config.get("syntax_delim"), ",") + syntax_delim = _t2266 + _t2267 = self._extract_value_string(config.get("syntax_quotechar"), '"') + syntax_quotechar = _t2267 + _t2268 = self._extract_value_string(config.get("syntax_escapechar"), "\\") + syntax_escapechar = _t2268 + _t2269 = transactions_pb2.ExportCSVConfig(path=path, data_columns=columns, partition_size=partition_size, compression=compression, syntax_header_row=syntax_header_row, syntax_missing_string=syntax_missing_string, syntax_delim=syntax_delim, syntax_quotechar=syntax_quotechar, syntax_escapechar=syntax_escapechar) + return _t2269 def construct_export_csv_config_with_location(self, location: tuple[str, str], csv_source: transactions_pb2.ExportCSVSource, csv_config: logic_pb2.CSVConfig) -> transactions_pb2.ExportCSVConfig: - _t2274 = transactions_pb2.ExportCSVConfig(path=location[0], transaction_output_name=location[1], csv_source=csv_source, csv_config=csv_config) - return _t2274 + _t2270 = transactions_pb2.ExportCSVConfig(path=location[0], transaction_output_name=location[1], csv_source=csv_source, csv_config=csv_config) + return _t2270 def construct_iceberg_catalog_config(self, catalog_uri: str, scope_opt: str | None, property_pairs: Sequence[tuple[str, str]], auth_property_pairs: Sequence[tuple[str, str]]) -> logic_pb2.IcebergCatalogConfig: props = dict(property_pairs) auth_props = dict(auth_property_pairs) - _t2275 = logic_pb2.IcebergCatalogConfig(catalog_uri=catalog_uri, scope=(scope_opt if scope_opt is not None else ""), properties=props, auth_properties=auth_props) - return _t2275 + _t2271 = logic_pb2.IcebergCatalogConfig(catalog_uri=catalog_uri, scope=(scope_opt if scope_opt is not None else ""), properties=props, auth_properties=auth_props) + return _t2271 def construct_iceberg_data(self, locator: logic_pb2.IcebergLocator, config: logic_pb2.IcebergCatalogConfig, columns: Sequence[logic_pb2.GNFColumn], from_snapshot_opt: str | None, to_snapshot_opt: str | None, returns_delta: bool) -> logic_pb2.IcebergData: - _t2276 = logic_pb2.IcebergData(locator=locator, config=config, columns=columns, from_snapshot=(from_snapshot_opt if from_snapshot_opt is not None else ""), to_snapshot=(to_snapshot_opt if to_snapshot_opt is not None else ""), returns_delta=returns_delta) - return _t2276 + _t2272 = logic_pb2.IcebergData(locator=locator, config=config, columns=columns, from_snapshot=(from_snapshot_opt if from_snapshot_opt is not None else ""), to_snapshot=(to_snapshot_opt if to_snapshot_opt is not None else ""), returns_delta=returns_delta) + return _t2272 def construct_export_iceberg_config_full(self, locator: logic_pb2.IcebergLocator, config: logic_pb2.IcebergCatalogConfig, table_def: logic_pb2.RelationId, table_property_pairs: Sequence[tuple[str, str]], config_dict: Sequence[tuple[str, logic_pb2.Value]] | None) -> transactions_pb2.ExportIcebergConfig: cfg = dict((config_dict if config_dict is not None else [])) - _t2277 = self._extract_value_string(cfg.get("prefix"), "") - prefix = _t2277 - _t2278 = self._extract_value_int64(cfg.get("target_file_size_bytes"), 0) - target_file_size_bytes = _t2278 - _t2279 = self._extract_value_string(cfg.get("compression"), "") - compression = _t2279 + _t2273 = self._extract_value_string(cfg.get("prefix"), "") + prefix = _t2273 + _t2274 = self._extract_value_int64(cfg.get("target_file_size_bytes"), 0) + target_file_size_bytes = _t2274 + _t2275 = self._extract_value_string(cfg.get("compression"), "") + compression = _t2275 table_props = dict(table_property_pairs) - _t2280 = transactions_pb2.ExportIcebergConfig(locator=locator, config=config, table_def=table_def, prefix=prefix, target_file_size_bytes=target_file_size_bytes, compression=compression, table_properties=table_props) - return _t2280 + _t2276 = transactions_pb2.ExportIcebergConfig(locator=locator, config=config, table_def=table_def, prefix=prefix, target_file_size_bytes=target_file_size_bytes, compression=compression, table_properties=table_props) + return _t2276 # --- Parse methods --- diff --git a/sdks/python/src/lqp/gen/pretty.py b/sdks/python/src/lqp/gen/pretty.py index a94d288b..033d5600 100644 --- a/sdks/python/src/lqp/gen/pretty.py +++ b/sdks/python/src/lqp/gen/pretty.py @@ -273,127 +273,123 @@ def deconstruct_configure(self, msg: transactions_pb2.Configure) -> list[tuple[s result.append(("ivm.maintenance_level", _t1855,)) _t1856 = self._make_value_int64(msg.semantics_version) result.append(("semantics_version", _t1856,)) - if msg.ast_size_limit.warning_limit != 0: - _t1857 = self._make_value_int64(msg.ast_size_limit.warning_limit) - result.append(("ast_size.warning_limit", _t1857,)) - if msg.ast_size_limit.exception_limit != 0: - _t1858 = self._make_value_int64(msg.ast_size_limit.exception_limit) - result.append(("ast_size.exception_limit", _t1858,)) + for pair in sorted(msg.configuration_values.items()): + result.append(pair) return sorted(result) def deconstruct_csv_config(self, msg: logic_pb2.CSVConfig) -> list[tuple[str, logic_pb2.Value]]: result = [] - _t1859 = self._make_value_int32(msg.header_row) - result.append(("csv_header_row", _t1859,)) - _t1860 = self._make_value_int64(msg.skip) - result.append(("csv_skip", _t1860,)) + _t1857 = self._make_value_int32(msg.header_row) + result.append(("csv_header_row", _t1857,)) + _t1858 = self._make_value_int64(msg.skip) + result.append(("csv_skip", _t1858,)) if msg.new_line != "": - _t1861 = self._make_value_string(msg.new_line) - result.append(("csv_new_line", _t1861,)) - _t1862 = self._make_value_string(msg.delimiter) - result.append(("csv_delimiter", _t1862,)) - _t1863 = self._make_value_string(msg.quotechar) - result.append(("csv_quotechar", _t1863,)) - _t1864 = self._make_value_string(msg.escapechar) - result.append(("csv_escapechar", _t1864,)) + _t1859 = self._make_value_string(msg.new_line) + result.append(("csv_new_line", _t1859,)) + _t1860 = self._make_value_string(msg.delimiter) + result.append(("csv_delimiter", _t1860,)) + _t1861 = self._make_value_string(msg.quotechar) + result.append(("csv_quotechar", _t1861,)) + _t1862 = self._make_value_string(msg.escapechar) + result.append(("csv_escapechar", _t1862,)) if msg.comment != "": - _t1865 = self._make_value_string(msg.comment) - result.append(("csv_comment", _t1865,)) + _t1863 = self._make_value_string(msg.comment) + result.append(("csv_comment", _t1863,)) for missing_string in msg.missing_strings: - _t1866 = self._make_value_string(missing_string) - result.append(("csv_missing_strings", _t1866,)) - _t1867 = self._make_value_string(msg.decimal_separator) - result.append(("csv_decimal_separator", _t1867,)) - _t1868 = self._make_value_string(msg.encoding) - result.append(("csv_encoding", _t1868,)) - _t1869 = self._make_value_string(msg.compression) - result.append(("csv_compression", _t1869,)) + _t1864 = self._make_value_string(missing_string) + result.append(("csv_missing_strings", _t1864,)) + _t1865 = self._make_value_string(msg.decimal_separator) + result.append(("csv_decimal_separator", _t1865,)) + _t1866 = self._make_value_string(msg.encoding) + result.append(("csv_encoding", _t1866,)) + _t1867 = self._make_value_string(msg.compression) + result.append(("csv_compression", _t1867,)) if msg.partition_size_mb != 0: - _t1870 = self._make_value_int64(msg.partition_size_mb) - result.append(("csv_partition_size_mb", _t1870,)) + _t1868 = self._make_value_int64(msg.partition_size_mb) + result.append(("csv_partition_size_mb", _t1868,)) return sorted(result) def deconstruct_csv_storage_integration_optional(self, msg: logic_pb2.CSVConfig) -> Sequence[tuple[str, logic_pb2.Value]] | None: if not msg.HasField("storage_integration"): return None else: - _t1871 = None + _t1869 = None assert msg.storage_integration is not None si = msg.storage_integration result = [] if si.provider != "": - _t1872 = self._make_value_string(si.provider) - result.append(("provider", _t1872,)) + _t1870 = self._make_value_string(si.provider) + result.append(("provider", _t1870,)) if si.azure_sas_token != "": - _t1873 = self._make_value_string("***") - result.append(("azure_sas_token", _t1873,)) + _t1871 = self._make_value_string("***") + result.append(("azure_sas_token", _t1871,)) if si.s3_region != "": - _t1874 = self._make_value_string(si.s3_region) - result.append(("s3_region", _t1874,)) + _t1872 = self._make_value_string(si.s3_region) + result.append(("s3_region", _t1872,)) if si.s3_access_key_id != "": - _t1875 = self._make_value_string("***") - result.append(("s3_access_key_id", _t1875,)) + _t1873 = self._make_value_string("***") + result.append(("s3_access_key_id", _t1873,)) if si.s3_secret_access_key != "": - _t1876 = self._make_value_string("***") - result.append(("s3_secret_access_key", _t1876,)) + _t1874 = self._make_value_string("***") + result.append(("s3_secret_access_key", _t1874,)) return sorted(result) def deconstruct_betree_info_config(self, msg: logic_pb2.BeTreeInfo) -> list[tuple[str, logic_pb2.Value]]: result = [] - _t1877 = self._make_value_float64(msg.storage_config.epsilon) - result.append(("betree_config_epsilon", _t1877,)) - _t1878 = self._make_value_int64(msg.storage_config.max_pivots) - result.append(("betree_config_max_pivots", _t1878,)) - _t1879 = self._make_value_int64(msg.storage_config.max_deltas) - result.append(("betree_config_max_deltas", _t1879,)) - _t1880 = self._make_value_int64(msg.storage_config.max_leaf) - result.append(("betree_config_max_leaf", _t1880,)) + _t1875 = self._make_value_float64(msg.storage_config.epsilon) + result.append(("betree_config_epsilon", _t1875,)) + _t1876 = self._make_value_int64(msg.storage_config.max_pivots) + result.append(("betree_config_max_pivots", _t1876,)) + _t1877 = self._make_value_int64(msg.storage_config.max_deltas) + result.append(("betree_config_max_deltas", _t1877,)) + _t1878 = self._make_value_int64(msg.storage_config.max_leaf) + result.append(("betree_config_max_leaf", _t1878,)) if msg.relation_locator.HasField("root_pageid"): if msg.relation_locator.root_pageid is not None: assert msg.relation_locator.root_pageid is not None - _t1881 = self._make_value_uint128(msg.relation_locator.root_pageid) - result.append(("betree_locator_root_pageid", _t1881,)) + _t1879 = self._make_value_uint128(msg.relation_locator.root_pageid) + result.append(("betree_locator_root_pageid", _t1879,)) if msg.relation_locator.HasField("inline_data"): if msg.relation_locator.inline_data is not None: assert msg.relation_locator.inline_data is not None - _t1882 = self._make_value_string(msg.relation_locator.inline_data.decode('utf-8')) - result.append(("betree_locator_inline_data", _t1882,)) - _t1883 = self._make_value_int64(msg.relation_locator.element_count) - result.append(("betree_locator_element_count", _t1883,)) - _t1884 = self._make_value_int64(msg.relation_locator.tree_height) - result.append(("betree_locator_tree_height", _t1884,)) + _t1880 = self._make_value_string(msg.relation_locator.inline_data.decode('utf-8')) + result.append(("betree_locator_inline_data", _t1880,)) + _t1881 = self._make_value_int64(msg.relation_locator.element_count) + result.append(("betree_locator_element_count", _t1881,)) + _t1882 = self._make_value_int64(msg.relation_locator.tree_height) + result.append(("betree_locator_tree_height", _t1882,)) return sorted(result) def deconstruct_export_csv_config(self, msg: transactions_pb2.ExportCSVConfig) -> list[tuple[str, logic_pb2.Value]]: result = [] if msg.partition_size is not None: assert msg.partition_size is not None - _t1885 = self._make_value_int64(msg.partition_size) - result.append(("partition_size", _t1885,)) + _t1883 = self._make_value_int64(msg.partition_size) + result.append(("partition_size", _t1883,)) if msg.compression is not None: assert msg.compression is not None - _t1886 = self._make_value_string(msg.compression) - result.append(("compression", _t1886,)) + _t1884 = self._make_value_string(msg.compression) + result.append(("compression", _t1884,)) if msg.syntax_header_row is not None: assert msg.syntax_header_row is not None - _t1887 = self._make_value_boolean(msg.syntax_header_row) - result.append(("syntax_header_row", _t1887,)) + _t1885 = self._make_value_boolean(msg.syntax_header_row) + result.append(("syntax_header_row", _t1885,)) if msg.syntax_missing_string is not None: assert msg.syntax_missing_string is not None - _t1888 = self._make_value_string(msg.syntax_missing_string) - result.append(("syntax_missing_string", _t1888,)) + _t1886 = self._make_value_string(msg.syntax_missing_string) + result.append(("syntax_missing_string", _t1886,)) if msg.syntax_delim is not None: assert msg.syntax_delim is not None - _t1889 = self._make_value_string(msg.syntax_delim) - result.append(("syntax_delim", _t1889,)) + _t1887 = self._make_value_string(msg.syntax_delim) + result.append(("syntax_delim", _t1887,)) if msg.syntax_quotechar is not None: assert msg.syntax_quotechar is not None - _t1890 = self._make_value_string(msg.syntax_quotechar) - result.append(("syntax_quotechar", _t1890,)) + _t1888 = self._make_value_string(msg.syntax_quotechar) + result.append(("syntax_quotechar", _t1888,)) if msg.syntax_escapechar is not None: assert msg.syntax_escapechar is not None - _t1891 = self._make_value_string(msg.syntax_escapechar) - result.append(("syntax_escapechar", _t1891,)) + _t1889 = self._make_value_string(msg.syntax_escapechar) + result.append(("syntax_escapechar", _t1889,)) return sorted(result) def mask_secret_value(self, pair: tuple[str, str]) -> str: @@ -405,7 +401,7 @@ def deconstruct_iceberg_catalog_config_scope_optional(self, msg: logic_pb2.Icebe assert msg.scope is not None return msg.scope else: - _t1892 = None + _t1890 = None return None def deconstruct_iceberg_data_from_snapshot_optional(self, msg: logic_pb2.IcebergData) -> str | None: @@ -414,7 +410,7 @@ def deconstruct_iceberg_data_from_snapshot_optional(self, msg: logic_pb2.Iceberg assert msg.from_snapshot is not None return msg.from_snapshot else: - _t1893 = None + _t1891 = None return None def deconstruct_iceberg_data_to_snapshot_optional(self, msg: logic_pb2.IcebergData) -> str | None: @@ -423,7 +419,7 @@ def deconstruct_iceberg_data_to_snapshot_optional(self, msg: logic_pb2.IcebergDa assert msg.to_snapshot is not None return msg.to_snapshot else: - _t1894 = None + _t1892 = None return None def deconstruct_export_iceberg_config_optional(self, msg: transactions_pb2.ExportIcebergConfig) -> Sequence[tuple[str, logic_pb2.Value]] | None: @@ -431,20 +427,20 @@ def deconstruct_export_iceberg_config_optional(self, msg: transactions_pb2.Expor assert msg.prefix is not None if msg.prefix != "": assert msg.prefix is not None - _t1895 = self._make_value_string(msg.prefix) - result.append(("prefix", _t1895,)) + _t1893 = self._make_value_string(msg.prefix) + result.append(("prefix", _t1893,)) assert msg.target_file_size_bytes is not None if msg.target_file_size_bytes != 0: assert msg.target_file_size_bytes is not None - _t1896 = self._make_value_int64(msg.target_file_size_bytes) - result.append(("target_file_size_bytes", _t1896,)) + _t1894 = self._make_value_int64(msg.target_file_size_bytes) + result.append(("target_file_size_bytes", _t1894,)) if msg.compression != "": - _t1897 = self._make_value_string(msg.compression) - result.append(("compression", _t1897,)) + _t1895 = self._make_value_string(msg.compression) + result.append(("compression", _t1895,)) if len(result) == 0: return None else: - _t1898 = None + _t1896 = None return sorted(result) def deconstruct_relation_id_string(self, msg: logic_pb2.RelationId) -> str: @@ -457,7 +453,7 @@ def deconstruct_relation_id_uint128(self, msg: logic_pb2.RelationId) -> logic_pb if name is None: return self.relation_id_to_uint128(msg) else: - _t1899 = None + _t1897 = None return None def deconstruct_bindings(self, abs: logic_pb2.Abstraction) -> tuple[Sequence[logic_pb2.Binding], Sequence[logic_pb2.Binding]]: @@ -4642,8 +4638,8 @@ def pretty_debug_info(self, msg: fragments_pb2.DebugInfo): for _idx, _rid in enumerate(msg.ids): self.newline() self.write("(") - _t1900 = logic_pb2.UInt128Value(low=_rid.id_low, high=_rid.id_high) - self.pprint_dispatch(_t1900) + _t1898 = logic_pb2.UInt128Value(low=_rid.id_low, high=_rid.id_high) + self.pprint_dispatch(_t1898) self.write(" ") self.write(self.format_string_value(msg.orig_names[_idx])) self.write(")") @@ -4779,18 +4775,6 @@ def pretty_storage_integration(self, msg: logic_pb2.StorageIntegration): def pretty_u_int128_value(self, msg: logic_pb2.UInt128Value): self.write(self.format_uint128(msg)) - def pretty_ast_size_limit(self, msg: transactions_pb2.ASTSizeLimit): - self.write("(ast_size_limit") - self.indent_sexp() - self.newline() - self.write(":warning_limit ") - self.write(str(msg.warning_limit)) - self.newline() - self.write(":exception_limit ") - self.write(str(msg.exception_limit)) - self.write(")") - self.dedent() - def pretty_export_csv_columns(self, msg: transactions_pb2.ExportCSVColumns): self.write("(export_csv_columns") self.indent_sexp() @@ -5036,8 +5020,6 @@ def pprint_dispatch(self, msg): self.pretty_storage_integration(msg) elif isinstance(msg, logic_pb2.UInt128Value): self.pretty_u_int128_value(msg) - elif isinstance(msg, transactions_pb2.ASTSizeLimit): - self.pretty_ast_size_limit(msg) elif isinstance(msg, transactions_pb2.ExportCSVColumns): self.pretty_export_csv_columns(msg) elif isinstance(msg, transactions_pb2.IVMConfig): diff --git a/sdks/python/src/lqp/proto/v1/transactions_pb2.py b/sdks/python/src/lqp/proto/v1/transactions_pb2.py index d2b017c8..6989b691 100644 --- a/sdks/python/src/lqp/proto/v1/transactions_pb2.py +++ b/sdks/python/src/lqp/proto/v1/transactions_pb2.py @@ -26,7 +26,7 @@ from lqp.proto.v1 import logic_pb2 as relationalai_dot_lqp_dot_v1_dot_logic__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&relationalai/lqp/v1/transactions.proto\x12\x13relationalai.lqp.v1\x1a#relationalai/lqp/v1/fragments.proto\x1a\x1frelationalai/lqp/v1/logic.proto\"\xbc\x01\n\x0bTransaction\x12\x32\n\x06\x65pochs\x18\x01 \x03(\x0b\x32\x1a.relationalai.lqp.v1.EpochR\x06\x65pochs\x12<\n\tconfigure\x18\x02 \x01(\x0b\x32\x1e.relationalai.lqp.v1.ConfigureR\tconfigure\x12\x32\n\x04sync\x18\x03 \x01(\x0b\x32\x19.relationalai.lqp.v1.SyncH\x00R\x04sync\x88\x01\x01\x42\x07\n\x05_sync\"\xc0\x01\n\tConfigure\x12+\n\x11semantics_version\x18\x01 \x01(\x03R\x10semanticsVersion\x12=\n\nivm_config\x18\x02 \x01(\x0b\x32\x1e.relationalai.lqp.v1.IVMConfigR\tivmConfig\x12G\n\x0e\x61st_size_limit\x18\x03 \x01(\x0b\x32!.relationalai.lqp.v1.ASTSizeLimitR\x0c\x61stSizeLimit\"H\n\tIVMConfig\x12;\n\x05level\x18\x01 \x01(\x0e\x32%.relationalai.lqp.v1.MaintenanceLevelR\x05level\"\\\n\x0c\x41STSizeLimit\x12#\n\rwarning_limit\x18\x01 \x01(\x03R\x0cwarningLimit\x12\'\n\x0f\x65xception_limit\x18\x02 \x01(\x03R\x0e\x65xceptionLimit\"E\n\x04Sync\x12=\n\tfragments\x18\x01 \x03(\x0b\x32\x1f.relationalai.lqp.v1.FragmentIdR\tfragments\"l\n\x05\x45poch\x12\x32\n\x06writes\x18\x01 \x03(\x0b\x32\x1a.relationalai.lqp.v1.WriteR\x06writes\x12/\n\x05reads\x18\x02 \x03(\x0b\x32\x19.relationalai.lqp.v1.ReadR\x05reads\"\x86\x02\n\x05Write\x12\x35\n\x06\x64\x65\x66ine\x18\x01 \x01(\x0b\x32\x1b.relationalai.lqp.v1.DefineH\x00R\x06\x64\x65\x66ine\x12;\n\x08undefine\x18\x02 \x01(\x0b\x32\x1d.relationalai.lqp.v1.UndefineH\x00R\x08undefine\x12\x38\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x1c.relationalai.lqp.v1.ContextH\x00R\x07\x63ontext\x12;\n\x08snapshot\x18\x05 \x01(\x0b\x32\x1d.relationalai.lqp.v1.SnapshotH\x00R\x08snapshotB\x0c\n\nwrite_typeJ\x04\x08\x04\x10\x05\"C\n\x06\x44\x65\x66ine\x12\x39\n\x08\x66ragment\x18\x01 \x01(\x0b\x32\x1d.relationalai.lqp.v1.FragmentR\x08\x66ragment\"L\n\x08Undefine\x12@\n\x0b\x66ragment_id\x18\x01 \x01(\x0b\x32\x1f.relationalai.lqp.v1.FragmentIdR\nfragmentId\"H\n\x07\x43ontext\x12=\n\trelations\x18\x01 \x03(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\trelations\"\x86\x01\n\x0fSnapshotMapping\x12)\n\x10\x64\x65stination_path\x18\x01 \x03(\tR\x0f\x64\x65stinationPath\x12H\n\x0fsource_relation\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\x0esourceRelation\"d\n\x08Snapshot\x12@\n\x08mappings\x18\x01 \x03(\x0b\x32$.relationalai.lqp.v1.SnapshotMappingR\x08mappings\x12\x16\n\x06prefix\x18\x02 \x03(\tR\x06prefix\"\x80\x06\n\x0f\x45xportCSVConfig\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x36\n\x17transaction_output_name\x18\x0c \x01(\tR\x15transactionOutputName\x12\x43\n\ncsv_source\x18\n \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVSourceR\tcsvSource\x12=\n\ncsv_config\x18\x0b \x01(\x0b\x32\x1e.relationalai.lqp.v1.CSVConfigR\tcsvConfig\x12G\n\x0c\x64\x61ta_columns\x18\x02 \x03(\x0b\x32$.relationalai.lqp.v1.ExportCSVColumnR\x0b\x64\x61taColumns\x12*\n\x0epartition_size\x18\x03 \x01(\x03H\x00R\rpartitionSize\x88\x01\x01\x12%\n\x0b\x63ompression\x18\x04 \x01(\tH\x01R\x0b\x63ompression\x88\x01\x01\x12/\n\x11syntax_header_row\x18\x05 \x01(\x08H\x02R\x0fsyntaxHeaderRow\x88\x01\x01\x12\x37\n\x15syntax_missing_string\x18\x06 \x01(\tH\x03R\x13syntaxMissingString\x88\x01\x01\x12&\n\x0csyntax_delim\x18\x07 \x01(\tH\x04R\x0bsyntaxDelim\x88\x01\x01\x12.\n\x10syntax_quotechar\x18\x08 \x01(\tH\x05R\x0fsyntaxQuotechar\x88\x01\x01\x12\x30\n\x11syntax_escapechar\x18\t \x01(\tH\x06R\x10syntaxEscapechar\x88\x01\x01\x42\x11\n\x0f_partition_sizeB\x0e\n\x0c_compressionB\x14\n\x12_syntax_header_rowB\x18\n\x16_syntax_missing_stringB\x0f\n\r_syntax_delimB\x13\n\x11_syntax_quotecharB\x14\n\x12_syntax_escapechar\"t\n\x0f\x45xportCSVColumn\x12\x1f\n\x0b\x63olumn_name\x18\x01 \x01(\tR\ncolumnName\x12@\n\x0b\x63olumn_data\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\ncolumnData\"R\n\x10\x45xportCSVColumns\x12>\n\x07\x63olumns\x18\x01 \x03(\x0b\x32$.relationalai.lqp.v1.ExportCSVColumnR\x07\x63olumns\"\xa9\x01\n\x0f\x45xportCSVSource\x12H\n\x0bgnf_columns\x18\x01 \x01(\x0b\x32%.relationalai.lqp.v1.ExportCSVColumnsH\x00R\ngnfColumns\x12>\n\ttable_def\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdH\x00R\x08tableDefB\x0c\n\ncsv_source\"\xa8\x04\n\x13\x45xportIcebergConfig\x12=\n\x07locator\x18\x01 \x01(\x0b\x32#.relationalai.lqp.v1.IcebergLocatorR\x07locator\x12\x41\n\x06\x63onfig\x18\x02 \x01(\x0b\x32).relationalai.lqp.v1.IcebergCatalogConfigR\x06\x63onfig\x12<\n\ttable_def\x18\x03 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\x08tableDef\x12\x1b\n\x06prefix\x18\x05 \x01(\tH\x00R\x06prefix\x88\x01\x01\x12\x38\n\x16target_file_size_bytes\x18\x06 \x01(\x03H\x01R\x13targetFileSizeBytes\x88\x01\x01\x12 \n\x0b\x63ompression\x18\x07 \x01(\tR\x0b\x63ompression\x12h\n\x10table_properties\x18\x08 \x03(\x0b\x32=.relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntryR\x0ftableProperties\x1a\x42\n\x14TablePropertiesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\t\n\x07_prefixB\x19\n\x17_target_file_size_bytesJ\x04\x08\x04\x10\x05\"\xa4\x02\n\x04Read\x12\x35\n\x06\x64\x65mand\x18\x01 \x01(\x0b\x32\x1b.relationalai.lqp.v1.DemandH\x00R\x06\x64\x65mand\x12\x35\n\x06output\x18\x02 \x01(\x0b\x32\x1b.relationalai.lqp.v1.OutputH\x00R\x06output\x12\x36\n\x07what_if\x18\x03 \x01(\x0b\x32\x1b.relationalai.lqp.v1.WhatIfH\x00R\x06whatIf\x12\x32\n\x05\x61\x62ort\x18\x04 \x01(\x0b\x32\x1a.relationalai.lqp.v1.AbortH\x00R\x05\x61\x62ort\x12\x35\n\x06\x65xport\x18\x05 \x01(\x0b\x32\x1b.relationalai.lqp.v1.ExportH\x00R\x06\x65xportB\x0b\n\tread_type\"J\n\x06\x44\x65mand\x12@\n\x0brelation_id\x18\x01 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId\"^\n\x06Output\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x0brelation_id\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId\"\xb3\x01\n\x06\x45xport\x12\x45\n\ncsv_config\x18\x01 \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVConfigH\x00R\tcsvConfig\x12Q\n\x0eiceberg_config\x18\x02 \x01(\x0b\x32(.relationalai.lqp.v1.ExportIcebergConfigH\x00R\ricebergConfigB\x0f\n\rexport_config\"R\n\x06WhatIf\x12\x16\n\x06\x62ranch\x18\x01 \x01(\tR\x06\x62ranch\x12\x30\n\x05\x65poch\x18\x02 \x01(\x0b\x32\x1a.relationalai.lqp.v1.EpochR\x05\x65poch\"]\n\x05\x41\x62ort\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x0brelation_id\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId*\x87\x01\n\x10MaintenanceLevel\x12!\n\x1dMAINTENANCE_LEVEL_UNSPECIFIED\x10\x00\x12\x19\n\x15MAINTENANCE_LEVEL_OFF\x10\x01\x12\x1a\n\x16MAINTENANCE_LEVEL_AUTO\x10\x02\x12\x19\n\x15MAINTENANCE_LEVEL_ALL\x10\x03\x42\x43ZAgithub.com/RelationalAI/logical-query-protocol/sdks/go/src/lqp/v1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n&relationalai/lqp/v1/transactions.proto\x12\x13relationalai.lqp.v1\x1a#relationalai/lqp/v1/fragments.proto\x1a\x1frelationalai/lqp/v1/logic.proto\"\xbc\x01\n\x0bTransaction\x12\x32\n\x06\x65pochs\x18\x01 \x03(\x0b\x32\x1a.relationalai.lqp.v1.EpochR\x06\x65pochs\x12<\n\tconfigure\x18\x02 \x01(\x0b\x32\x1e.relationalai.lqp.v1.ConfigureR\tconfigure\x12\x32\n\x04sync\x18\x03 \x01(\x0b\x32\x19.relationalai.lqp.v1.SyncH\x00R\x04sync\x88\x01\x01\x42\x07\n\x05_sync\"\xc7\x02\n\tConfigure\x12+\n\x11semantics_version\x18\x01 \x01(\x03R\x10semanticsVersion\x12=\n\nivm_config\x18\x02 \x01(\x0b\x32\x1e.relationalai.lqp.v1.IVMConfigR\tivmConfig\x12j\n\x14\x63onfiguration_values\x18\x03 \x03(\x0b\x32\x37.relationalai.lqp.v1.Configure.ConfigurationValuesEntryR\x13\x63onfigurationValues\x1a\x62\n\x18\x43onfigurationValuesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x30\n\x05value\x18\x02 \x01(\x0b\x32\x1a.relationalai.lqp.v1.ValueR\x05value:\x02\x38\x01\"H\n\tIVMConfig\x12;\n\x05level\x18\x01 \x01(\x0e\x32%.relationalai.lqp.v1.MaintenanceLevelR\x05level\"E\n\x04Sync\x12=\n\tfragments\x18\x01 \x03(\x0b\x32\x1f.relationalai.lqp.v1.FragmentIdR\tfragments\"l\n\x05\x45poch\x12\x32\n\x06writes\x18\x01 \x03(\x0b\x32\x1a.relationalai.lqp.v1.WriteR\x06writes\x12/\n\x05reads\x18\x02 \x03(\x0b\x32\x19.relationalai.lqp.v1.ReadR\x05reads\"\x86\x02\n\x05Write\x12\x35\n\x06\x64\x65\x66ine\x18\x01 \x01(\x0b\x32\x1b.relationalai.lqp.v1.DefineH\x00R\x06\x64\x65\x66ine\x12;\n\x08undefine\x18\x02 \x01(\x0b\x32\x1d.relationalai.lqp.v1.UndefineH\x00R\x08undefine\x12\x38\n\x07\x63ontext\x18\x03 \x01(\x0b\x32\x1c.relationalai.lqp.v1.ContextH\x00R\x07\x63ontext\x12;\n\x08snapshot\x18\x05 \x01(\x0b\x32\x1d.relationalai.lqp.v1.SnapshotH\x00R\x08snapshotB\x0c\n\nwrite_typeJ\x04\x08\x04\x10\x05\"C\n\x06\x44\x65\x66ine\x12\x39\n\x08\x66ragment\x18\x01 \x01(\x0b\x32\x1d.relationalai.lqp.v1.FragmentR\x08\x66ragment\"L\n\x08Undefine\x12@\n\x0b\x66ragment_id\x18\x01 \x01(\x0b\x32\x1f.relationalai.lqp.v1.FragmentIdR\nfragmentId\"H\n\x07\x43ontext\x12=\n\trelations\x18\x01 \x03(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\trelations\"\x86\x01\n\x0fSnapshotMapping\x12)\n\x10\x64\x65stination_path\x18\x01 \x03(\tR\x0f\x64\x65stinationPath\x12H\n\x0fsource_relation\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\x0esourceRelation\"d\n\x08Snapshot\x12@\n\x08mappings\x18\x01 \x03(\x0b\x32$.relationalai.lqp.v1.SnapshotMappingR\x08mappings\x12\x16\n\x06prefix\x18\x02 \x03(\tR\x06prefix\"\x80\x06\n\x0f\x45xportCSVConfig\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12\x36\n\x17transaction_output_name\x18\x0c \x01(\tR\x15transactionOutputName\x12\x43\n\ncsv_source\x18\n \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVSourceR\tcsvSource\x12=\n\ncsv_config\x18\x0b \x01(\x0b\x32\x1e.relationalai.lqp.v1.CSVConfigR\tcsvConfig\x12G\n\x0c\x64\x61ta_columns\x18\x02 \x03(\x0b\x32$.relationalai.lqp.v1.ExportCSVColumnR\x0b\x64\x61taColumns\x12*\n\x0epartition_size\x18\x03 \x01(\x03H\x00R\rpartitionSize\x88\x01\x01\x12%\n\x0b\x63ompression\x18\x04 \x01(\tH\x01R\x0b\x63ompression\x88\x01\x01\x12/\n\x11syntax_header_row\x18\x05 \x01(\x08H\x02R\x0fsyntaxHeaderRow\x88\x01\x01\x12\x37\n\x15syntax_missing_string\x18\x06 \x01(\tH\x03R\x13syntaxMissingString\x88\x01\x01\x12&\n\x0csyntax_delim\x18\x07 \x01(\tH\x04R\x0bsyntaxDelim\x88\x01\x01\x12.\n\x10syntax_quotechar\x18\x08 \x01(\tH\x05R\x0fsyntaxQuotechar\x88\x01\x01\x12\x30\n\x11syntax_escapechar\x18\t \x01(\tH\x06R\x10syntaxEscapechar\x88\x01\x01\x42\x11\n\x0f_partition_sizeB\x0e\n\x0c_compressionB\x14\n\x12_syntax_header_rowB\x18\n\x16_syntax_missing_stringB\x0f\n\r_syntax_delimB\x13\n\x11_syntax_quotecharB\x14\n\x12_syntax_escapechar\"t\n\x0f\x45xportCSVColumn\x12\x1f\n\x0b\x63olumn_name\x18\x01 \x01(\tR\ncolumnName\x12@\n\x0b\x63olumn_data\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\ncolumnData\"R\n\x10\x45xportCSVColumns\x12>\n\x07\x63olumns\x18\x01 \x03(\x0b\x32$.relationalai.lqp.v1.ExportCSVColumnR\x07\x63olumns\"\xa9\x01\n\x0f\x45xportCSVSource\x12H\n\x0bgnf_columns\x18\x01 \x01(\x0b\x32%.relationalai.lqp.v1.ExportCSVColumnsH\x00R\ngnfColumns\x12>\n\ttable_def\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdH\x00R\x08tableDefB\x0c\n\ncsv_source\"\xa8\x04\n\x13\x45xportIcebergConfig\x12=\n\x07locator\x18\x01 \x01(\x0b\x32#.relationalai.lqp.v1.IcebergLocatorR\x07locator\x12\x41\n\x06\x63onfig\x18\x02 \x01(\x0b\x32).relationalai.lqp.v1.IcebergCatalogConfigR\x06\x63onfig\x12<\n\ttable_def\x18\x03 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\x08tableDef\x12\x1b\n\x06prefix\x18\x05 \x01(\tH\x00R\x06prefix\x88\x01\x01\x12\x38\n\x16target_file_size_bytes\x18\x06 \x01(\x03H\x01R\x13targetFileSizeBytes\x88\x01\x01\x12 \n\x0b\x63ompression\x18\x07 \x01(\tR\x0b\x63ompression\x12h\n\x10table_properties\x18\x08 \x03(\x0b\x32=.relationalai.lqp.v1.ExportIcebergConfig.TablePropertiesEntryR\x0ftableProperties\x1a\x42\n\x14TablePropertiesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\t\n\x07_prefixB\x19\n\x17_target_file_size_bytesJ\x04\x08\x04\x10\x05\"\xa4\x02\n\x04Read\x12\x35\n\x06\x64\x65mand\x18\x01 \x01(\x0b\x32\x1b.relationalai.lqp.v1.DemandH\x00R\x06\x64\x65mand\x12\x35\n\x06output\x18\x02 \x01(\x0b\x32\x1b.relationalai.lqp.v1.OutputH\x00R\x06output\x12\x36\n\x07what_if\x18\x03 \x01(\x0b\x32\x1b.relationalai.lqp.v1.WhatIfH\x00R\x06whatIf\x12\x32\n\x05\x61\x62ort\x18\x04 \x01(\x0b\x32\x1a.relationalai.lqp.v1.AbortH\x00R\x05\x61\x62ort\x12\x35\n\x06\x65xport\x18\x05 \x01(\x0b\x32\x1b.relationalai.lqp.v1.ExportH\x00R\x06\x65xportB\x0b\n\tread_type\"J\n\x06\x44\x65mand\x12@\n\x0brelation_id\x18\x01 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId\"^\n\x06Output\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x0brelation_id\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId\"\xb3\x01\n\x06\x45xport\x12\x45\n\ncsv_config\x18\x01 \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVConfigH\x00R\tcsvConfig\x12Q\n\x0eiceberg_config\x18\x02 \x01(\x0b\x32(.relationalai.lqp.v1.ExportIcebergConfigH\x00R\ricebergConfigB\x0f\n\rexport_config\"R\n\x06WhatIf\x12\x16\n\x06\x62ranch\x18\x01 \x01(\tR\x06\x62ranch\x12\x30\n\x05\x65poch\x18\x02 \x01(\x0b\x32\x1a.relationalai.lqp.v1.EpochR\x05\x65poch\"]\n\x05\x41\x62ort\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12@\n\x0brelation_id\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\nrelationId*\x87\x01\n\x10MaintenanceLevel\x12!\n\x1dMAINTENANCE_LEVEL_UNSPECIFIED\x10\x00\x12\x19\n\x15MAINTENANCE_LEVEL_OFF\x10\x01\x12\x1a\n\x16MAINTENANCE_LEVEL_AUTO\x10\x02\x12\x19\n\x15MAINTENANCE_LEVEL_ALL\x10\x03\x42\x43ZAgithub.com/RelationalAI/logical-query-protocol/sdks/go/src/lqp/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -34,56 +34,58 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'ZAgithub.com/RelationalAI/logical-query-protocol/sdks/go/src/lqp/v1' + _globals['_CONFIGURE_CONFIGURATIONVALUESENTRY']._loaded_options = None + _globals['_CONFIGURE_CONFIGURATIONVALUESENTRY']._serialized_options = b'8\001' _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._loaded_options = None _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_options = b'8\001' - _globals['_MAINTENANCELEVEL']._serialized_start=4122 - _globals['_MAINTENANCELEVEL']._serialized_end=4257 + _globals['_MAINTENANCELEVEL']._serialized_start=4163 + _globals['_MAINTENANCELEVEL']._serialized_end=4298 _globals['_TRANSACTION']._serialized_start=134 _globals['_TRANSACTION']._serialized_end=322 _globals['_CONFIGURE']._serialized_start=325 - _globals['_CONFIGURE']._serialized_end=517 - _globals['_IVMCONFIG']._serialized_start=519 - _globals['_IVMCONFIG']._serialized_end=591 - _globals['_ASTSIZELIMIT']._serialized_start=593 - _globals['_ASTSIZELIMIT']._serialized_end=685 - _globals['_SYNC']._serialized_start=687 - _globals['_SYNC']._serialized_end=756 - _globals['_EPOCH']._serialized_start=758 - _globals['_EPOCH']._serialized_end=866 - _globals['_WRITE']._serialized_start=869 - _globals['_WRITE']._serialized_end=1131 - _globals['_DEFINE']._serialized_start=1133 - _globals['_DEFINE']._serialized_end=1200 - _globals['_UNDEFINE']._serialized_start=1202 - _globals['_UNDEFINE']._serialized_end=1278 - _globals['_CONTEXT']._serialized_start=1280 - _globals['_CONTEXT']._serialized_end=1352 - _globals['_SNAPSHOTMAPPING']._serialized_start=1355 - _globals['_SNAPSHOTMAPPING']._serialized_end=1489 - _globals['_SNAPSHOT']._serialized_start=1491 - _globals['_SNAPSHOT']._serialized_end=1591 - _globals['_EXPORTCSVCONFIG']._serialized_start=1594 - _globals['_EXPORTCSVCONFIG']._serialized_end=2362 - _globals['_EXPORTCSVCOLUMN']._serialized_start=2364 - _globals['_EXPORTCSVCOLUMN']._serialized_end=2480 - _globals['_EXPORTCSVCOLUMNS']._serialized_start=2482 - _globals['_EXPORTCSVCOLUMNS']._serialized_end=2564 - _globals['_EXPORTCSVSOURCE']._serialized_start=2567 - _globals['_EXPORTCSVSOURCE']._serialized_end=2736 - _globals['_EXPORTICEBERGCONFIG']._serialized_start=2739 - _globals['_EXPORTICEBERGCONFIG']._serialized_end=3291 - _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_start=3181 - _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_end=3247 - _globals['_READ']._serialized_start=3294 - _globals['_READ']._serialized_end=3586 - _globals['_DEMAND']._serialized_start=3588 - _globals['_DEMAND']._serialized_end=3662 - _globals['_OUTPUT']._serialized_start=3664 - _globals['_OUTPUT']._serialized_end=3758 - _globals['_EXPORT']._serialized_start=3761 - _globals['_EXPORT']._serialized_end=3940 - _globals['_WHATIF']._serialized_start=3942 - _globals['_WHATIF']._serialized_end=4024 - _globals['_ABORT']._serialized_start=4026 - _globals['_ABORT']._serialized_end=4119 + _globals['_CONFIGURE']._serialized_end=652 + _globals['_CONFIGURE_CONFIGURATIONVALUESENTRY']._serialized_start=554 + _globals['_CONFIGURE_CONFIGURATIONVALUESENTRY']._serialized_end=652 + _globals['_IVMCONFIG']._serialized_start=654 + _globals['_IVMCONFIG']._serialized_end=726 + _globals['_SYNC']._serialized_start=728 + _globals['_SYNC']._serialized_end=797 + _globals['_EPOCH']._serialized_start=799 + _globals['_EPOCH']._serialized_end=907 + _globals['_WRITE']._serialized_start=910 + _globals['_WRITE']._serialized_end=1172 + _globals['_DEFINE']._serialized_start=1174 + _globals['_DEFINE']._serialized_end=1241 + _globals['_UNDEFINE']._serialized_start=1243 + _globals['_UNDEFINE']._serialized_end=1319 + _globals['_CONTEXT']._serialized_start=1321 + _globals['_CONTEXT']._serialized_end=1393 + _globals['_SNAPSHOTMAPPING']._serialized_start=1396 + _globals['_SNAPSHOTMAPPING']._serialized_end=1530 + _globals['_SNAPSHOT']._serialized_start=1532 + _globals['_SNAPSHOT']._serialized_end=1632 + _globals['_EXPORTCSVCONFIG']._serialized_start=1635 + _globals['_EXPORTCSVCONFIG']._serialized_end=2403 + _globals['_EXPORTCSVCOLUMN']._serialized_start=2405 + _globals['_EXPORTCSVCOLUMN']._serialized_end=2521 + _globals['_EXPORTCSVCOLUMNS']._serialized_start=2523 + _globals['_EXPORTCSVCOLUMNS']._serialized_end=2605 + _globals['_EXPORTCSVSOURCE']._serialized_start=2608 + _globals['_EXPORTCSVSOURCE']._serialized_end=2777 + _globals['_EXPORTICEBERGCONFIG']._serialized_start=2780 + _globals['_EXPORTICEBERGCONFIG']._serialized_end=3332 + _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_start=3222 + _globals['_EXPORTICEBERGCONFIG_TABLEPROPERTIESENTRY']._serialized_end=3288 + _globals['_READ']._serialized_start=3335 + _globals['_READ']._serialized_end=3627 + _globals['_DEMAND']._serialized_start=3629 + _globals['_DEMAND']._serialized_end=3703 + _globals['_OUTPUT']._serialized_start=3705 + _globals['_OUTPUT']._serialized_end=3799 + _globals['_EXPORT']._serialized_start=3802 + _globals['_EXPORT']._serialized_end=3981 + _globals['_WHATIF']._serialized_start=3983 + _globals['_WHATIF']._serialized_end=4065 + _globals['_ABORT']._serialized_start=4067 + _globals['_ABORT']._serialized_end=4160 # @@protoc_insertion_point(module_scope) diff --git a/sdks/python/src/lqp/proto/v1/transactions_pb2.pyi b/sdks/python/src/lqp/proto/v1/transactions_pb2.pyi index 4c8dcece..872e694f 100644 --- a/sdks/python/src/lqp/proto/v1/transactions_pb2.pyi +++ b/sdks/python/src/lqp/proto/v1/transactions_pb2.pyi @@ -31,14 +31,21 @@ class Transaction(_message.Message): def __init__(self, epochs: _Optional[_Iterable[_Union[Epoch, _Mapping]]] = ..., configure: _Optional[_Union[Configure, _Mapping]] = ..., sync: _Optional[_Union[Sync, _Mapping]] = ...) -> None: ... class Configure(_message.Message): - __slots__ = ("semantics_version", "ivm_config", "ast_size_limit") + __slots__ = ("semantics_version", "ivm_config", "configuration_values") + class ConfigurationValuesEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: str + value: _logic_pb2.Value + def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[_logic_pb2.Value, _Mapping]] = ...) -> None: ... SEMANTICS_VERSION_FIELD_NUMBER: _ClassVar[int] IVM_CONFIG_FIELD_NUMBER: _ClassVar[int] - AST_SIZE_LIMIT_FIELD_NUMBER: _ClassVar[int] + CONFIGURATION_VALUES_FIELD_NUMBER: _ClassVar[int] semantics_version: int ivm_config: IVMConfig - ast_size_limit: ASTSizeLimit - def __init__(self, semantics_version: _Optional[int] = ..., ivm_config: _Optional[_Union[IVMConfig, _Mapping]] = ..., ast_size_limit: _Optional[_Union[ASTSizeLimit, _Mapping]] = ...) -> None: ... + configuration_values: _containers.MessageMap[str, _logic_pb2.Value] + def __init__(self, semantics_version: _Optional[int] = ..., ivm_config: _Optional[_Union[IVMConfig, _Mapping]] = ..., configuration_values: _Optional[_Mapping[str, _logic_pb2.Value]] = ...) -> None: ... class IVMConfig(_message.Message): __slots__ = ("level",) @@ -46,14 +53,6 @@ class IVMConfig(_message.Message): level: MaintenanceLevel def __init__(self, level: _Optional[_Union[MaintenanceLevel, str]] = ...) -> None: ... -class ASTSizeLimit(_message.Message): - __slots__ = ("warning_limit", "exception_limit") - WARNING_LIMIT_FIELD_NUMBER: _ClassVar[int] - EXCEPTION_LIMIT_FIELD_NUMBER: _ClassVar[int] - warning_limit: int - exception_limit: int - def __init__(self, warning_limit: _Optional[int] = ..., exception_limit: _Optional[int] = ...) -> None: ... - class Sync(_message.Message): __slots__ = ("fragments",) FRAGMENTS_FIELD_NUMBER: _ClassVar[int] diff --git a/tests/bin/configuration_values.bin b/tests/bin/configuration_values.bin new file mode 100644 index 0000000000000000000000000000000000000000..c28e8866a467ad4e0a431130590c2298dd08f55f GIT binary patch literal 244 zcmd;D&B)ck$koco)x^lf!o`$kC=|mL#U;dP)#I `output` From 71f50b5f8f4c6d5b5479ece0f9ee9d0e67b58f6a Mon Sep 17 00:00:00 2001 From: David Zhao Date: Mon, 27 Jul 2026 11:15:14 +1000 Subject: [PATCH 10/10] Add comment --- proto/relationalai/lqp/v1/transactions.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/proto/relationalai/lqp/v1/transactions.proto b/proto/relationalai/lqp/v1/transactions.proto index dd6ab145..c69d946a 100644 --- a/proto/relationalai/lqp/v1/transactions.proto +++ b/proto/relationalai/lqp/v1/transactions.proto @@ -18,7 +18,8 @@ message Configure { IVMConfig ivm_config = 2; // A generic configuration dictionary. The engine can choose how to interpret any entries - // in this config dict. + // in this config dict. Absence of an entry must be interpreted with safe defaults in the + // engine. map configuration_values = 3; }