From 98bcd206779a845cd04f69d0409c09f1edddd613 Mon Sep 17 00:00:00 2001 From: aydogduberkay Date: Wed, 11 Feb 2026 11:11:17 +0100 Subject: [PATCH 1/4] Add optimization levels --- go/src/lqp/v1/transactions.pb.go | 488 ++++++++++-------- proto/relationalai/lqp/v1/transactions.proto | 8 + python-tools/src/lqp/emit.py | 6 +- python-tools/src/lqp/generated_parser.py | 17 +- python-tools/src/lqp/ir.py | 10 + python-tools/src/lqp/parser.py | 11 +- python-tools/src/lqp/print.py | 2 + .../src/lqp/proto/v1/transactions_pb2.py | 72 +-- .../src/lqp/proto/v1/transactions_pb2.pyi | 17 +- python-tools/src/meta/grammar.y | 16 + .../tests/lqp_debug_output/arithmetic.lqp | 1 + .../tests/lqp_debug_output/attributes.lqp | 1 + .../tests/lqp_debug_output/config_flags.lqp | 1 + python-tools/tests/lqp_debug_output/csv.lqp | 1 + python-tools/tests/lqp_debug_output/edb.lqp | 1 + python-tools/tests/lqp_debug_output/fd.lqp | 1 + python-tools/tests/lqp_debug_output/ffi.lqp | 1 + python-tools/tests/lqp_debug_output/loops.lqp | 1 + .../tests/lqp_debug_output/missing.lqp | 1 + .../tests/lqp_debug_output/monoid_monus.lqp | 1 + .../lqp_debug_output/multiple_export.lqp | 1 + python-tools/tests/lqp_debug_output/not.lqp | 1 + .../tests/lqp_debug_output/number_ids.lqp | 1 + python-tools/tests/lqp_debug_output/outer.lqp | 1 + .../tests/lqp_debug_output/piece_of_q1.lqp | 1 + .../tests/lqp_debug_output/pragma.lqp | 1 + .../lqp_debug_output/primitive_types.lqp | 1 + .../tests/lqp_debug_output/primitives.lqp | 1 + .../tests/lqp_debug_output/quantifier.lqp | 1 + .../lqp_debug_output/redefine_fragment.lqp | 1 + .../tests/lqp_debug_output/simple_cast.lqp | 1 + .../tests/lqp_debug_output/simple_export.lqp | 1 + .../tests/lqp_debug_output/simple_ic.lqp | 1 + .../lqp_debug_output/simple_recursion.lqp | 1 + .../tests/lqp_debug_output/simple_relatom.lqp | 1 + .../lqp_debug_output/sum_with_groupby.lqp | 1 + python-tools/tests/lqp_debug_output/sync.lqp | 1 + .../lqp_debug_output/undefined_relation.lqp | 1 + .../lqp_debug_output/undefined_relation2.lqp | 1 + .../tests/lqp_debug_output/unicode.lqp | 1 + .../tests/lqp_debug_output/upsert.lqp | 1 + .../tests/lqp_debug_output/value_types.lqp | 1 + .../tests/lqp_debug_output/values.lqp | 1 + .../multiple_export.lqp | 1 + .../simple_export.lqp | 1 + python-tools/tests/lqp_output/arithmetic.lqp | 1 + python-tools/tests/lqp_output/attributes.lqp | 1 + .../tests/lqp_output/config_flags.lqp | 1 + python-tools/tests/lqp_output/csv.lqp | 1 + python-tools/tests/lqp_output/edb.lqp | 1 + python-tools/tests/lqp_output/fd.lqp | 1 + python-tools/tests/lqp_output/ffi.lqp | 1 + python-tools/tests/lqp_output/loops.lqp | 1 + python-tools/tests/lqp_output/missing.lqp | 1 + .../tests/lqp_output/monoid_monus.lqp | 1 + .../tests/lqp_output/multiple_export.lqp | 1 + python-tools/tests/lqp_output/not.lqp | 1 + python-tools/tests/lqp_output/number_ids.lqp | 1 + python-tools/tests/lqp_output/outer.lqp | 1 + python-tools/tests/lqp_output/piece_of_q1.lqp | 1 + python-tools/tests/lqp_output/pragma.lqp | 1 + .../tests/lqp_output/primitive_types.lqp | 1 + python-tools/tests/lqp_output/primitives.lqp | 1 + python-tools/tests/lqp_output/quantifier.lqp | 1 + .../tests/lqp_output/redefine_fragment.lqp | 1 + python-tools/tests/lqp_output/simple_cast.lqp | 1 + .../tests/lqp_output/simple_export.lqp | 1 + python-tools/tests/lqp_output/simple_ic.lqp | 1 + .../tests/lqp_output/simple_recursion.lqp | 1 + .../tests/lqp_output/simple_relatom.lqp | 1 + .../tests/lqp_output/sum_with_groupby.lqp | 1 + python-tools/tests/lqp_output/sync.lqp | 1 + .../tests/lqp_output/undefined_relation.lqp | 1 + .../tests/lqp_output/undefined_relation2.lqp | 1 + python-tools/tests/lqp_output/unicode.lqp | 1 + python-tools/tests/lqp_output/upsert.lqp | 1 + python-tools/tests/lqp_output/value_types.lqp | 1 + python-tools/tests/lqp_output/values.lqp | 1 + .../tests/lqp_pretty_output/arithmetic.lqp | 1 + .../tests/lqp_pretty_output/attributes.lqp | 1 + .../tests/lqp_pretty_output/config_flags.lqp | 1 + python-tools/tests/lqp_pretty_output/csv.lqp | 1 + python-tools/tests/lqp_pretty_output/edb.lqp | 1 + python-tools/tests/lqp_pretty_output/fd.lqp | 1 + python-tools/tests/lqp_pretty_output/ffi.lqp | 1 + .../tests/lqp_pretty_output/loops.lqp | 1 + .../tests/lqp_pretty_output/missing.lqp | 1 + .../tests/lqp_pretty_output/monoid_monus.lqp | 1 + .../lqp_pretty_output/multiple_export.lqp | 1 + python-tools/tests/lqp_pretty_output/not.lqp | 1 + .../tests/lqp_pretty_output/number_ids.lqp | 1 + .../tests/lqp_pretty_output/outer.lqp | 1 + .../tests/lqp_pretty_output/piece_of_q1.lqp | 1 + .../tests/lqp_pretty_output/pragma.lqp | 1 + .../lqp_pretty_output/primitive_types.lqp | 1 + .../tests/lqp_pretty_output/primitives.lqp | 1 + .../tests/lqp_pretty_output/quantifier.lqp | 1 + .../lqp_pretty_output/redefine_fragment.lqp | 1 + .../tests/lqp_pretty_output/simple_cast.lqp | 1 + .../tests/lqp_pretty_output/simple_export.lqp | 1 + .../tests/lqp_pretty_output/simple_ic.lqp | 1 + .../lqp_pretty_output/simple_recursion.lqp | 1 + .../lqp_pretty_output/simple_relatom.lqp | 1 + .../lqp_pretty_output/sum_with_groupby.lqp | 1 + python-tools/tests/lqp_pretty_output/sync.lqp | 1 + .../lqp_pretty_output/undefined_relation.lqp | 1 + .../lqp_pretty_output/undefined_relation2.lqp | 1 + .../tests/lqp_pretty_output/unicode.lqp | 1 + .../tests/lqp_pretty_output/upsert.lqp | 1 + .../tests/lqp_pretty_output/value_types.lqp | 1 + .../tests/lqp_pretty_output/values.lqp | 1 + .../tests/test_files/bin/arithmetic.bin | 2 +- .../tests/test_files/bin/attributes.bin | Bin 397 -> 399 bytes .../tests/test_files/bin/config_flags.bin | Bin 152 -> 154 bytes python-tools/tests/test_files/bin/csv.bin | Bin 1397 -> 1399 bytes python-tools/tests/test_files/bin/edb.bin | Bin 1668 -> 1670 bytes python-tools/tests/test_files/bin/fd.bin | Bin 5562 -> 5564 bytes python-tools/tests/test_files/bin/ffi.bin | Bin 654 -> 656 bytes python-tools/tests/test_files/bin/loops.bin | Bin 1634 -> 1636 bytes python-tools/tests/test_files/bin/missing.bin | Bin 247 -> 249 bytes .../tests/test_files/bin/monoid_monus.bin | Bin 1719 -> 1721 bytes .../tests/test_files/bin/multiple_export.bin | Bin 1225 -> 1227 bytes python-tools/tests/test_files/bin/not.bin | Bin 157 -> 159 bytes .../tests/test_files/bin/number_ids.bin | Bin 149 -> 151 bytes python-tools/tests/test_files/bin/outer.bin | Bin 639 -> 641 bytes .../tests/test_files/bin/piece_of_q1.bin | Bin 552 -> 554 bytes python-tools/tests/test_files/bin/pragma.bin | Bin 984 -> 986 bytes .../tests/test_files/bin/primitive_types.bin | Bin 3624 -> 3626 bytes .../tests/test_files/bin/primitives.bin | Bin 312 -> 314 bytes .../tests/test_files/bin/quantifier.bin | Bin 4836 -> 4838 bytes .../test_files/bin/redefine_fragment.bin | Bin 449 -> 451 bytes .../tests/test_files/bin/simple_cast.bin | Bin 758 -> 760 bytes .../tests/test_files/bin/simple_export.bin | Bin 392 -> 394 bytes .../tests/test_files/bin/simple_ic.bin | 2 +- .../tests/test_files/bin/simple_recursion.bin | Bin 1220 -> 1222 bytes .../tests/test_files/bin/simple_relatom.bin | Bin 230 -> 232 bytes .../tests/test_files/bin/sum_with_groupby.bin | Bin 1173 -> 1175 bytes python-tools/tests/test_files/bin/sync.bin | Bin 140 -> 142 bytes .../test_files/bin/undefined_relation.bin | Bin 285 -> 287 bytes .../test_files/bin/undefined_relation2.bin | Bin 267 -> 269 bytes python-tools/tests/test_files/bin/unicode.bin | Bin 717 -> 719 bytes python-tools/tests/test_files/bin/upsert.bin | Bin 898 -> 900 bytes .../tests/test_files/bin/value_types.bin | Bin 431 -> 433 bytes python-tools/tests/test_files/bin/values.bin | Bin 2325 -> 2327 bytes .../tests/test_files/lqp/config_flags.lqp | 1 + 145 files changed, 505 insertions(+), 248 deletions(-) diff --git a/go/src/lqp/v1/transactions.pb.go b/go/src/lqp/v1/transactions.pb.go index 9bdf2e11..67f8b532 100644 --- a/go/src/lqp/v1/transactions.pb.go +++ b/go/src/lqp/v1/transactions.pb.go @@ -73,6 +73,58 @@ func (MaintenanceLevel) EnumDescriptor() ([]byte, []int) { return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{0} } +type OptimizationLevel int32 + +const ( + OptimizationLevel_OPTIMIZATION_LEVEL_UNSPECIFIED OptimizationLevel = 0 + OptimizationLevel_OPTIMIZATION_LEVEL_DEFAULT OptimizationLevel = 1 + OptimizationLevel_OPTIMIZATION_LEVEL_CONSERVATIVE OptimizationLevel = 2 + OptimizationLevel_OPTIMIZATION_LEVEL_AGGRESSIVE OptimizationLevel = 3 +) + +// Enum value maps for OptimizationLevel. +var ( + OptimizationLevel_name = map[int32]string{ + 0: "OPTIMIZATION_LEVEL_UNSPECIFIED", + 1: "OPTIMIZATION_LEVEL_DEFAULT", + 2: "OPTIMIZATION_LEVEL_CONSERVATIVE", + 3: "OPTIMIZATION_LEVEL_AGGRESSIVE", + } + OptimizationLevel_value = map[string]int32{ + "OPTIMIZATION_LEVEL_UNSPECIFIED": 0, + "OPTIMIZATION_LEVEL_DEFAULT": 1, + "OPTIMIZATION_LEVEL_CONSERVATIVE": 2, + "OPTIMIZATION_LEVEL_AGGRESSIVE": 3, + } +) + +func (x OptimizationLevel) Enum() *OptimizationLevel { + p := new(OptimizationLevel) + *p = x + return p +} + +func (x OptimizationLevel) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (OptimizationLevel) Descriptor() protoreflect.EnumDescriptor { + return file_relationalai_lqp_v1_transactions_proto_enumTypes[1].Descriptor() +} + +func (OptimizationLevel) Type() protoreflect.EnumType { + return &file_relationalai_lqp_v1_transactions_proto_enumTypes[1] +} + +func (x OptimizationLevel) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use OptimizationLevel.Descriptor instead. +func (OptimizationLevel) EnumDescriptor() ([]byte, []int) { + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{1} +} + type Transaction struct { state protoimpl.MessageState `protogen:"open.v1"` Epochs []*Epoch `protobuf:"bytes,1,rep,name=epochs,proto3" json:"epochs,omitempty"` @@ -134,11 +186,12 @@ func (x *Transaction) GetSync() *Sync { } 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"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + 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"` + OptimizationLevel OptimizationLevel `protobuf:"varint,3,opt,name=optimization_level,json=optimizationLevel,proto3,enum=relationalai.lqp.v1.OptimizationLevel" json:"optimization_level,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Configure) Reset() { @@ -185,6 +238,13 @@ func (x *Configure) GetIvmConfig() *IVMConfig { return nil } +func (x *Configure) GetOptimizationLevel() OptimizationLevel { + if x != nil { + return x.OptimizationLevel + } + return OptimizationLevel_OPTIMIZATION_LEVEL_UNSPECIFIED +} + 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"` @@ -1134,158 +1194,174 @@ 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, 0xc9, 0x01, 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, 0xce, 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, 0x55, 0x0a, 0x12, + 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x52, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 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, 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, 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, + 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, 0xc9, 0x01, 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, 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, 0xc4, 0x04, 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, 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, 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, + 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, 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, 0xc4, 0x04, 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, 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, - 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, + 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, 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, 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, 0x22, 0x60, 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, 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, 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, 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, 0x1f, 0x5a, 0x1d, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x2d, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x71, 0x70, - 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, 0x60, 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, 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, 0x2a, 0x9f, 0x01, 0x0a, 0x11, 0x4f, + 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, + 0x4c, 0x54, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x5a, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, + 0x52, 0x56, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x50, 0x54, + 0x49, 0x4d, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, + 0x41, 0x47, 0x47, 0x52, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x10, 0x03, 0x42, 0x1f, 0x5a, 0x1d, + 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x2d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2d, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x71, 0x70, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1300,63 +1376,65 @@ func file_relationalai_lqp_v1_transactions_proto_rawDescGZIP() []byte { return file_relationalai_lqp_v1_transactions_proto_rawDescData } -var file_relationalai_lqp_v1_transactions_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_relationalai_lqp_v1_transactions_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_relationalai_lqp_v1_transactions_proto_msgTypes = make([]protoimpl.MessageInfo, 17) 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 - (*ExportCSVConfig)(nil), // 10: relationalai.lqp.v1.ExportCSVConfig - (*ExportCSVColumn)(nil), // 11: relationalai.lqp.v1.ExportCSVColumn - (*Read)(nil), // 12: relationalai.lqp.v1.Read - (*Demand)(nil), // 13: relationalai.lqp.v1.Demand - (*Output)(nil), // 14: relationalai.lqp.v1.Output - (*Export)(nil), // 15: relationalai.lqp.v1.Export - (*WhatIf)(nil), // 16: relationalai.lqp.v1.WhatIf - (*Abort)(nil), // 17: relationalai.lqp.v1.Abort - (*FragmentId)(nil), // 18: relationalai.lqp.v1.FragmentId - (*Fragment)(nil), // 19: relationalai.lqp.v1.Fragment - (*RelationId)(nil), // 20: relationalai.lqp.v1.RelationId + (OptimizationLevel)(0), // 1: relationalai.lqp.v1.OptimizationLevel + (*Transaction)(nil), // 2: relationalai.lqp.v1.Transaction + (*Configure)(nil), // 3: relationalai.lqp.v1.Configure + (*IVMConfig)(nil), // 4: relationalai.lqp.v1.IVMConfig + (*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 + (*ExportCSVConfig)(nil), // 11: relationalai.lqp.v1.ExportCSVConfig + (*ExportCSVColumn)(nil), // 12: relationalai.lqp.v1.ExportCSVColumn + (*Read)(nil), // 13: relationalai.lqp.v1.Read + (*Demand)(nil), // 14: relationalai.lqp.v1.Demand + (*Output)(nil), // 15: relationalai.lqp.v1.Output + (*Export)(nil), // 16: relationalai.lqp.v1.Export + (*WhatIf)(nil), // 17: relationalai.lqp.v1.WhatIf + (*Abort)(nil), // 18: relationalai.lqp.v1.Abort + (*FragmentId)(nil), // 19: relationalai.lqp.v1.FragmentId + (*Fragment)(nil), // 20: relationalai.lqp.v1.Fragment + (*RelationId)(nil), // 21: relationalai.lqp.v1.RelationId } var file_relationalai_lqp_v1_transactions_proto_depIdxs = []int32{ - 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 - 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 - 0, // 4: relationalai.lqp.v1.IVMConfig.level:type_name -> relationalai.lqp.v1.MaintenanceLevel - 18, // 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 - 12, // 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 - 19, // 11: relationalai.lqp.v1.Define.fragment:type_name -> relationalai.lqp.v1.Fragment - 18, // 12: relationalai.lqp.v1.Undefine.fragment_id:type_name -> relationalai.lqp.v1.FragmentId - 20, // 13: relationalai.lqp.v1.Context.relations:type_name -> relationalai.lqp.v1.RelationId - 11, // 14: relationalai.lqp.v1.ExportCSVConfig.data_columns:type_name -> relationalai.lqp.v1.ExportCSVColumn - 20, // 15: relationalai.lqp.v1.ExportCSVColumn.column_data:type_name -> relationalai.lqp.v1.RelationId - 13, // 16: relationalai.lqp.v1.Read.demand:type_name -> relationalai.lqp.v1.Demand - 14, // 17: relationalai.lqp.v1.Read.output:type_name -> relationalai.lqp.v1.Output - 16, // 18: relationalai.lqp.v1.Read.what_if:type_name -> relationalai.lqp.v1.WhatIf - 17, // 19: relationalai.lqp.v1.Read.abort:type_name -> relationalai.lqp.v1.Abort - 15, // 20: relationalai.lqp.v1.Read.export:type_name -> relationalai.lqp.v1.Export - 20, // 21: relationalai.lqp.v1.Demand.relation_id:type_name -> relationalai.lqp.v1.RelationId - 20, // 22: relationalai.lqp.v1.Output.relation_id:type_name -> relationalai.lqp.v1.RelationId - 10, // 23: relationalai.lqp.v1.Export.csv_config:type_name -> relationalai.lqp.v1.ExportCSVConfig - 5, // 24: relationalai.lqp.v1.WhatIf.epoch:type_name -> relationalai.lqp.v1.Epoch - 20, // 25: relationalai.lqp.v1.Abort.relation_id:type_name -> relationalai.lqp.v1.RelationId - 26, // [26:26] is the sub-list for method output_type - 26, // [26:26] is the sub-list for method input_type - 26, // [26:26] is the sub-list for extension type_name - 26, // [26:26] is the sub-list for extension extendee - 0, // [0:26] is the sub-list for field type_name + 6, // 0: relationalai.lqp.v1.Transaction.epochs:type_name -> relationalai.lqp.v1.Epoch + 3, // 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, // 3: relationalai.lqp.v1.Configure.ivm_config:type_name -> relationalai.lqp.v1.IVMConfig + 1, // 4: relationalai.lqp.v1.Configure.optimization_level:type_name -> relationalai.lqp.v1.OptimizationLevel + 0, // 5: relationalai.lqp.v1.IVMConfig.level:type_name -> relationalai.lqp.v1.MaintenanceLevel + 19, // 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 + 13, // 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 + 20, // 12: relationalai.lqp.v1.Define.fragment:type_name -> relationalai.lqp.v1.Fragment + 19, // 13: relationalai.lqp.v1.Undefine.fragment_id:type_name -> relationalai.lqp.v1.FragmentId + 21, // 14: relationalai.lqp.v1.Context.relations:type_name -> relationalai.lqp.v1.RelationId + 12, // 15: relationalai.lqp.v1.ExportCSVConfig.data_columns:type_name -> relationalai.lqp.v1.ExportCSVColumn + 21, // 16: relationalai.lqp.v1.ExportCSVColumn.column_data:type_name -> relationalai.lqp.v1.RelationId + 14, // 17: relationalai.lqp.v1.Read.demand:type_name -> relationalai.lqp.v1.Demand + 15, // 18: relationalai.lqp.v1.Read.output:type_name -> relationalai.lqp.v1.Output + 17, // 19: relationalai.lqp.v1.Read.what_if:type_name -> relationalai.lqp.v1.WhatIf + 18, // 20: relationalai.lqp.v1.Read.abort:type_name -> relationalai.lqp.v1.Abort + 16, // 21: relationalai.lqp.v1.Read.export:type_name -> relationalai.lqp.v1.Export + 21, // 22: relationalai.lqp.v1.Demand.relation_id:type_name -> relationalai.lqp.v1.RelationId + 21, // 23: relationalai.lqp.v1.Output.relation_id:type_name -> relationalai.lqp.v1.RelationId + 11, // 24: relationalai.lqp.v1.Export.csv_config:type_name -> relationalai.lqp.v1.ExportCSVConfig + 6, // 25: relationalai.lqp.v1.WhatIf.epoch:type_name -> relationalai.lqp.v1.Epoch + 21, // 26: relationalai.lqp.v1.Abort.relation_id:type_name -> relationalai.lqp.v1.RelationId + 27, // [27:27] is the sub-list for method output_type + 27, // [27:27] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name } func init() { file_relationalai_lqp_v1_transactions_proto_init() } @@ -1388,7 +1466,7 @@ func file_relationalai_lqp_v1_transactions_proto_init() { File: protoimpl.DescBuilder{ 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, + NumEnums: 2, NumMessages: 17, NumExtensions: 0, NumServices: 0, diff --git a/proto/relationalai/lqp/v1/transactions.proto b/proto/relationalai/lqp/v1/transactions.proto index ff921bef..9e0587d2 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; + OptimizationLevel optimization_level = 3; } message IVMConfig { @@ -29,6 +30,13 @@ enum MaintenanceLevel { MAINTENANCE_LEVEL_ALL = 3; } +enum OptimizationLevel { + OPTIMIZATION_LEVEL_UNSPECIFIED = 0; + OPTIMIZATION_LEVEL_DEFAULT = 1; + OPTIMIZATION_LEVEL_CONSERVATIVE = 2; + OPTIMIZATION_LEVEL_AGGRESSIVE = 3; +} + message Sync { repeated FragmentId fragments = 1; } diff --git a/python-tools/src/lqp/emit.py b/python-tools/src/lqp/emit.py index 6159c050..62230c4e 100644 --- a/python-tools/src/lqp/emit.py +++ b/python-tools/src/lqp/emit.py @@ -531,7 +531,8 @@ def convert_epoch(e: ir.Epoch) -> transactions_pb2.Epoch: def convert_configure(c: ir.Configure) -> transactions_pb2.Configure: return transactions_pb2.Configure( semantics_version=c.semantics_version, - ivm_config=convert_ivm_config(c.ivm_config) + ivm_config=convert_ivm_config(c.ivm_config), + optimization_level=convert_optimization_level(c.optimization_level) ) def convert_ivm_config(c: ir.IVMConfig) -> transactions_pb2.IVMConfig: @@ -542,6 +543,9 @@ def convert_ivm_config(c: ir.IVMConfig) -> transactions_pb2.IVMConfig: def convert_maintenance_level(l: ir.MaintenanceLevel) -> transactions_pb2.MaintenanceLevel: return transactions_pb2.MaintenanceLevel.Name(l.value) # type: ignore[missing-attribute] +def convert_optimization_level(o: ir.OptimizationLevel) -> transactions_pb2.OptimizationLevel: + return transactions_pb2.OptimizationLevel.Name(o.value) + def convert_sync(c: ir.Sync) -> transactions_pb2.Sync: return transactions_pb2.Sync(fragments=[convert_fragment_id(rid) for rid in c.fragments]) diff --git a/python-tools/src/lqp/generated_parser.py b/python-tools/src/lqp/generated_parser.py index df700250..6b89b9c3 100644 --- a/python-tools/src/lqp/generated_parser.py +++ b/python-tools/src/lqp/generated_parser.py @@ -405,7 +405,7 @@ def construct_betree_info(key_types: list[logic_pb2.Type], value_types: list[log def default_configure() -> transactions_pb2.Configure: _t969 = transactions_pb2.IVMConfig(level=transactions_pb2.MaintenanceLevel.MAINTENANCE_LEVEL_OFF) ivm_config = _t969 - _t970 = transactions_pb2.Configure(semantics_version=0, ivm_config=ivm_config) + _t970 = transactions_pb2.Configure(semantics_version=0, ivm_config=ivm_config, optimization_level=transactions_pb2.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT) return _t970 @staticmethod @@ -428,7 +428,20 @@ def construct_configure(config_dict: list[tuple[str, logic_pb2.Value]]) -> trans ivm_config = _t971 _t972 = Parser._extract_value_int64(config.get('semantics_version'), 0) semantics_version = _t972 - _t973 = transactions_pb2.Configure(semantics_version=semantics_version, ivm_config=ivm_config) + optimization_level_val = config.get('optimization_level') + optimization_level = transactions_pb2.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT + if (optimization_level_val is not None and optimization_level_val.HasField('string_value')): + if optimization_level_val.string_value == 'default': + optimization_level = transactions_pb2.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT + else: + if optimization_level_val.string_value == 'conservative': + optimization_level = transactions_pb2.OptimizationLevel.OPTIMIZATION_LEVEL_CONSERVATIVE + else: + if optimization_level_val.string_value == 'aggressive': + optimization_level = transactions_pb2.OptimizationLevel.OPTIMIZATION_LEVEL_AGGRESSIVE + else: + optimization_level = transactions_pb2.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT + _t973 = transactions_pb2.Configure(semantics_version=semantics_version, ivm_config=ivm_config, optimization_level=optimization_level) return _t973 @staticmethod diff --git a/python-tools/src/lqp/ir.py b/python-tools/src/lqp/ir.py index 4920a412..3d80de20 100644 --- a/python-tools/src/lqp/ir.py +++ b/python-tools/src/lqp/ir.py @@ -533,6 +533,7 @@ class Transaction(LqpNode): class Configure(LqpNode): semantics_version: int ivm_config: IVMConfig + optimization_level: OptimizationLevel # Sync(fragments::FragmentId[]) @dataclass(frozen=True) @@ -552,3 +553,12 @@ class MaintenanceLevel(Enum): def __str__(self) -> str: return self.name + +class OptimizationLevel(Enum): + UNSPECIFIED = 0 + DEFAULT = 1 + CONSERVATIVE = 2 + AGGRESSIVE = 3 + + def __str__(self) -> str: + return self.name \ No newline at end of file diff --git a/python-tools/src/lqp/parser.py b/python-tools/src/lqp/parser.py index 8742aad8..911262bf 100644 --- a/python-tools/src/lqp/parser.py +++ b/python-tools/src/lqp/parser.py @@ -178,16 +178,25 @@ def construct_configure(config_dict, meta): maintenance_level = ir.MaintenanceLevel.OFF ivm_config = ir.IVMConfig(level=maintenance_level, meta=meta) - # Construct Configure + # Get optimization level + optimization_level_value = config_dict.get("optimization_level") + if optimization_level_value: + optimization_level = getattr(ir.OptimizationLevel, optimization_level_value.value.upper()) + else: + optimization_level = ir.OptimizationLevel.DEFAULT + + # Get semantics_version semantics_version_value = config_dict.get("semantics_version") if semantics_version_value: semantics_version = semantics_version_value.value else: semantics_version = 0 + # Construct & return Configure return ir.Configure( semantics_version=semantics_version, ivm_config=ivm_config, + optimization_level=optimization_level, meta=meta, ) diff --git a/python-tools/src/lqp/print.py b/python-tools/src/lqp/print.py index 0f1ab1aa..82905cfc 100644 --- a/python-tools/src/lqp/print.py +++ b/python-tools/src/lqp/print.py @@ -182,6 +182,8 @@ def program_to_str(node: ir.Transaction, options: Dict = {}) -> str: config_dict["semantics_version"] = config.semantics_version if config.ivm_config.level != ir.MaintenanceLevel.UNSPECIFIED: config_dict["ivm.maintenance_level"] = config.ivm_config.level.name.lower() + if config.optimization_level != ir.OptimizationLevel.UNSPECIFIED: + config_dict["optimization_level"] = config.optimization_level.name.lower() s += "\n" + conf.indentation(1) + conf.LPAREN() + conf.kw("configure") + "\n" s += config_dict_to_str(config_dict, 2, options) diff --git a/python-tools/src/lqp/proto/v1/transactions_pb2.py b/python-tools/src/lqp/proto/v1/transactions_pb2.py index 7dc49e2e..3f3b0d46 100644 --- a/python-tools/src/lqp/proto/v1/transactions_pb2.py +++ b/python-tools/src/lqp/proto/v1/transactions_pb2.py @@ -16,7 +16,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\"\xc9\x01\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\x63ontextB\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\"\xc4\x04\n\x0f\x45xportCSVConfig\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\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\"\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\"`\n\x06\x45xport\x12\x45\n\ncsv_config\x18\x01 \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVConfigH\x00R\tcsvConfigB\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\x1fZ\x1dlogical-query-protocol/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\"\xce\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\x12U\n\x12optimization_level\x18\x03 \x01(\x0e\x32&.relationalai.lqp.v1.OptimizationLevelR\x11optimizationLevel\"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\"\xc9\x01\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\x63ontextB\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\"\xc4\x04\n\x0f\x45xportCSVConfig\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\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\"\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\"`\n\x06\x45xport\x12\x45\n\ncsv_config\x18\x01 \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVConfigH\x00R\tcsvConfigB\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*\x9f\x01\n\x11OptimizationLevel\x12\"\n\x1eOPTIMIZATION_LEVEL_UNSPECIFIED\x10\x00\x12\x1e\n\x1aOPTIMIZATION_LEVEL_DEFAULT\x10\x01\x12#\n\x1fOPTIMIZATION_LEVEL_CONSERVATIVE\x10\x02\x12!\n\x1dOPTIMIZATION_LEVEL_AGGRESSIVE\x10\x03\x42\x1fZ\x1dlogical-query-protocol/lqp/v1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -24,40 +24,42 @@ if _descriptor._USE_C_DESCRIPTORS == False: _globals['DESCRIPTOR']._options = None _globals['DESCRIPTOR']._serialized_options = b'Z\035logical-query-protocol/lqp/v1' - _globals['_MAINTENANCELEVEL']._serialized_start=2571 - _globals['_MAINTENANCELEVEL']._serialized_end=2706 + _globals['_MAINTENANCELEVEL']._serialized_start=2659 + _globals['_MAINTENANCELEVEL']._serialized_end=2794 + _globals['_OPTIMIZATIONLEVEL']._serialized_start=2797 + _globals['_OPTIMIZATIONLEVEL']._serialized_end=2956 _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=902 - _globals['_DEFINE']._serialized_start=904 - _globals['_DEFINE']._serialized_end=971 - _globals['_UNDEFINE']._serialized_start=973 - _globals['_UNDEFINE']._serialized_end=1049 - _globals['_CONTEXT']._serialized_start=1051 - _globals['_CONTEXT']._serialized_end=1123 - _globals['_EXPORTCSVCONFIG']._serialized_start=1126 - _globals['_EXPORTCSVCONFIG']._serialized_end=1706 - _globals['_EXPORTCSVCOLUMN']._serialized_start=1708 - _globals['_EXPORTCSVCOLUMN']._serialized_end=1824 - _globals['_READ']._serialized_start=1827 - _globals['_READ']._serialized_end=2119 - _globals['_DEMAND']._serialized_start=2121 - _globals['_DEMAND']._serialized_end=2195 - _globals['_OUTPUT']._serialized_start=2197 - _globals['_OUTPUT']._serialized_end=2291 - _globals['_EXPORT']._serialized_start=2293 - _globals['_EXPORT']._serialized_end=2389 - _globals['_WHATIF']._serialized_start=2391 - _globals['_WHATIF']._serialized_end=2473 - _globals['_ABORT']._serialized_start=2475 - _globals['_ABORT']._serialized_end=2568 + _globals['_CONFIGURE']._serialized_start=325 + _globals['_CONFIGURE']._serialized_end=531 + _globals['_IVMCONFIG']._serialized_start=533 + _globals['_IVMCONFIG']._serialized_end=605 + _globals['_SYNC']._serialized_start=607 + _globals['_SYNC']._serialized_end=676 + _globals['_EPOCH']._serialized_start=678 + _globals['_EPOCH']._serialized_end=786 + _globals['_WRITE']._serialized_start=789 + _globals['_WRITE']._serialized_end=990 + _globals['_DEFINE']._serialized_start=992 + _globals['_DEFINE']._serialized_end=1059 + _globals['_UNDEFINE']._serialized_start=1061 + _globals['_UNDEFINE']._serialized_end=1137 + _globals['_CONTEXT']._serialized_start=1139 + _globals['_CONTEXT']._serialized_end=1211 + _globals['_EXPORTCSVCONFIG']._serialized_start=1214 + _globals['_EXPORTCSVCONFIG']._serialized_end=1794 + _globals['_EXPORTCSVCOLUMN']._serialized_start=1796 + _globals['_EXPORTCSVCOLUMN']._serialized_end=1912 + _globals['_READ']._serialized_start=1915 + _globals['_READ']._serialized_end=2207 + _globals['_DEMAND']._serialized_start=2209 + _globals['_DEMAND']._serialized_end=2283 + _globals['_OUTPUT']._serialized_start=2285 + _globals['_OUTPUT']._serialized_end=2379 + _globals['_EXPORT']._serialized_start=2381 + _globals['_EXPORT']._serialized_end=2477 + _globals['_WHATIF']._serialized_start=2479 + _globals['_WHATIF']._serialized_end=2561 + _globals['_ABORT']._serialized_start=2563 + _globals['_ABORT']._serialized_end=2656 # @@protoc_insertion_point(module_scope) diff --git a/python-tools/src/lqp/proto/v1/transactions_pb2.pyi b/python-tools/src/lqp/proto/v1/transactions_pb2.pyi index 25d8005c..a055345f 100644 --- a/python-tools/src/lqp/proto/v1/transactions_pb2.pyi +++ b/python-tools/src/lqp/proto/v1/transactions_pb2.pyi @@ -15,10 +15,21 @@ class MaintenanceLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): MAINTENANCE_LEVEL_OFF: _ClassVar[MaintenanceLevel] MAINTENANCE_LEVEL_AUTO: _ClassVar[MaintenanceLevel] MAINTENANCE_LEVEL_ALL: _ClassVar[MaintenanceLevel] + +class OptimizationLevel(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + OPTIMIZATION_LEVEL_UNSPECIFIED: _ClassVar[OptimizationLevel] + OPTIMIZATION_LEVEL_DEFAULT: _ClassVar[OptimizationLevel] + OPTIMIZATION_LEVEL_CONSERVATIVE: _ClassVar[OptimizationLevel] + OPTIMIZATION_LEVEL_AGGRESSIVE: _ClassVar[OptimizationLevel] MAINTENANCE_LEVEL_UNSPECIFIED: MaintenanceLevel MAINTENANCE_LEVEL_OFF: MaintenanceLevel MAINTENANCE_LEVEL_AUTO: MaintenanceLevel MAINTENANCE_LEVEL_ALL: MaintenanceLevel +OPTIMIZATION_LEVEL_UNSPECIFIED: OptimizationLevel +OPTIMIZATION_LEVEL_DEFAULT: OptimizationLevel +OPTIMIZATION_LEVEL_CONSERVATIVE: OptimizationLevel +OPTIMIZATION_LEVEL_AGGRESSIVE: OptimizationLevel class Transaction(_message.Message): __slots__ = ("epochs", "configure", "sync") @@ -31,12 +42,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", "optimization_level") SEMANTICS_VERSION_FIELD_NUMBER: _ClassVar[int] IVM_CONFIG_FIELD_NUMBER: _ClassVar[int] + OPTIMIZATION_LEVEL_FIELD_NUMBER: _ClassVar[int] semantics_version: int ivm_config: IVMConfig - def __init__(self, semantics_version: _Optional[int] = ..., ivm_config: _Optional[_Union[IVMConfig, _Mapping]] = ...) -> None: ... + optimization_level: OptimizationLevel + def __init__(self, semantics_version: _Optional[int] = ..., ivm_config: _Optional[_Union[IVMConfig, _Mapping]] = ..., optimization_level: _Optional[_Union[OptimizationLevel, str]] = ...) -> None: ... class IVMConfig(_message.Message): __slots__ = ("level",) diff --git a/python-tools/src/meta/grammar.y b/python-tools/src/meta/grammar.y index f11e5594..948c3e23 100644 --- a/python-tools/src/meta/grammar.y +++ b/python-tools/src/meta/grammar.y @@ -872,6 +872,7 @@ def default_configure() -> transactions.Configure: return transactions.Configure( semantics_version=0, ivm_config=ivm_config, + optimization_level=transactions.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT, ) def construct_configure(config_dict: List[Tuple[String, logic.Value]]) -> transactions.Configure: @@ -890,9 +891,24 @@ def construct_configure(config_dict: List[Tuple[String, logic.Value]]) -> transa 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) + + optimization_level_val: Optional[logic.Value] = builtin.dict_get(config, "optimization_level") + optimization_level: transactions.OptimizationLevel = transactions.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT + if (optimization_level_val is not None + and builtin.has_proto_field(optimization_level_val, 'string_value')): + if optimization_level_val.string_value == "default": + optimization_level = transactions.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT + elif optimization_level_val.string_value == "conservative": + optimization_level = transactions.OptimizationLevel.OPTIMIZATION_LEVEL_CONSERVATIVE + elif optimization_level_val.string_value == "aggressive": + optimization_level = transactions.OptimizationLevel.OPTIMIZATION_LEVEL_AGGRESSIVE + else: + optimization_level = transactions.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT + return transactions.Configure( semantics_version=semantics_version, ivm_config=ivm_config, + optimization_level=optimization_level, ) diff --git a/python-tools/tests/lqp_debug_output/arithmetic.lqp b/python-tools/tests/lqp_debug_output/arithmetic.lqp index 0a8903ae..dd5bca6e 100644 --- a/python-tools/tests/lqp_debug_output/arithmetic.lqp +++ b/python-tools/tests/lqp_debug_output/arithmetic.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/attributes.lqp b/python-tools/tests/lqp_debug_output/attributes.lqp index 85d0b3e6..b0943b77 100644 --- a/python-tools/tests/lqp_debug_output/attributes.lqp +++ b/python-tools/tests/lqp_debug_output/attributes.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/config_flags.lqp b/python-tools/tests/lqp_debug_output/config_flags.lqp index 200eb6d7..adf4ca9c 100644 --- a/python-tools/tests/lqp_debug_output/config_flags.lqp +++ b/python-tools/tests/lqp_debug_output/config_flags.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "auto" + :optimization_level "aggressive" :semantics_version 1}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/csv.lqp b/python-tools/tests/lqp_debug_output/csv.lqp index 23aad939..96a8539e 100644 --- a/python-tools/tests/lqp_debug_output/csv.lqp +++ b/python-tools/tests/lqp_debug_output/csv.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/edb.lqp b/python-tools/tests/lqp_debug_output/edb.lqp index efcde91d..00370d19 100644 --- a/python-tools/tests/lqp_debug_output/edb.lqp +++ b/python-tools/tests/lqp_debug_output/edb.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/fd.lqp b/python-tools/tests/lqp_debug_output/fd.lqp index 24ccca60..4207c123 100644 --- a/python-tools/tests/lqp_debug_output/fd.lqp +++ b/python-tools/tests/lqp_debug_output/fd.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/ffi.lqp b/python-tools/tests/lqp_debug_output/ffi.lqp index 5113710c..9f5ad85f 100644 --- a/python-tools/tests/lqp_debug_output/ffi.lqp +++ b/python-tools/tests/lqp_debug_output/ffi.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/loops.lqp b/python-tools/tests/lqp_debug_output/loops.lqp index cd355753..5b31c9d3 100644 --- a/python-tools/tests/lqp_debug_output/loops.lqp +++ b/python-tools/tests/lqp_debug_output/loops.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/missing.lqp b/python-tools/tests/lqp_debug_output/missing.lqp index 91cf3c17..3fb8bd1b 100644 --- a/python-tools/tests/lqp_debug_output/missing.lqp +++ b/python-tools/tests/lqp_debug_output/missing.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/monoid_monus.lqp b/python-tools/tests/lqp_debug_output/monoid_monus.lqp index e0d2257d..9aa728dd 100644 --- a/python-tools/tests/lqp_debug_output/monoid_monus.lqp +++ b/python-tools/tests/lqp_debug_output/monoid_monus.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/multiple_export.lqp b/python-tools/tests/lqp_debug_output/multiple_export.lqp index 370b22ec..5f4a6bef 100644 --- a/python-tools/tests/lqp_debug_output/multiple_export.lqp +++ b/python-tools/tests/lqp_debug_output/multiple_export.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/not.lqp b/python-tools/tests/lqp_debug_output/not.lqp index 9095b332..61271877 100644 --- a/python-tools/tests/lqp_debug_output/not.lqp +++ b/python-tools/tests/lqp_debug_output/not.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/number_ids.lqp b/python-tools/tests/lqp_debug_output/number_ids.lqp index 5e77083c..eab69eb0 100644 --- a/python-tools/tests/lqp_debug_output/number_ids.lqp +++ b/python-tools/tests/lqp_debug_output/number_ids.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/outer.lqp b/python-tools/tests/lqp_debug_output/outer.lqp index c9378032..ee1ece29 100644 --- a/python-tools/tests/lqp_debug_output/outer.lqp +++ b/python-tools/tests/lqp_debug_output/outer.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/piece_of_q1.lqp b/python-tools/tests/lqp_debug_output/piece_of_q1.lqp index 044c1eb5..091291a9 100644 --- a/python-tools/tests/lqp_debug_output/piece_of_q1.lqp +++ b/python-tools/tests/lqp_debug_output/piece_of_q1.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/pragma.lqp b/python-tools/tests/lqp_debug_output/pragma.lqp index 0b475bf7..4afc7b94 100644 --- a/python-tools/tests/lqp_debug_output/pragma.lqp +++ b/python-tools/tests/lqp_debug_output/pragma.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/primitive_types.lqp b/python-tools/tests/lqp_debug_output/primitive_types.lqp index 860ecc60..52e4a084 100644 --- a/python-tools/tests/lqp_debug_output/primitive_types.lqp +++ b/python-tools/tests/lqp_debug_output/primitive_types.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/primitives.lqp b/python-tools/tests/lqp_debug_output/primitives.lqp index 103931cc..388b53a5 100644 --- a/python-tools/tests/lqp_debug_output/primitives.lqp +++ b/python-tools/tests/lqp_debug_output/primitives.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/quantifier.lqp b/python-tools/tests/lqp_debug_output/quantifier.lqp index c4196cd4..26cfd5f9 100644 --- a/python-tools/tests/lqp_debug_output/quantifier.lqp +++ b/python-tools/tests/lqp_debug_output/quantifier.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/redefine_fragment.lqp b/python-tools/tests/lqp_debug_output/redefine_fragment.lqp index 3a1cb4f5..d4eec5e6 100644 --- a/python-tools/tests/lqp_debug_output/redefine_fragment.lqp +++ b/python-tools/tests/lqp_debug_output/redefine_fragment.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/simple_cast.lqp b/python-tools/tests/lqp_debug_output/simple_cast.lqp index 174f5e24..e48c07a9 100644 --- a/python-tools/tests/lqp_debug_output/simple_cast.lqp +++ b/python-tools/tests/lqp_debug_output/simple_cast.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/simple_export.lqp b/python-tools/tests/lqp_debug_output/simple_export.lqp index c2a9680d..c64e8bcc 100644 --- a/python-tools/tests/lqp_debug_output/simple_export.lqp +++ b/python-tools/tests/lqp_debug_output/simple_export.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/simple_ic.lqp b/python-tools/tests/lqp_debug_output/simple_ic.lqp index 1eb940b5..a8d896d0 100644 --- a/python-tools/tests/lqp_debug_output/simple_ic.lqp +++ b/python-tools/tests/lqp_debug_output/simple_ic.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/simple_recursion.lqp b/python-tools/tests/lqp_debug_output/simple_recursion.lqp index 9013c20d..51149e6f 100644 --- a/python-tools/tests/lqp_debug_output/simple_recursion.lqp +++ b/python-tools/tests/lqp_debug_output/simple_recursion.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/simple_relatom.lqp b/python-tools/tests/lqp_debug_output/simple_relatom.lqp index 15c88e9d..9cc67873 100644 --- a/python-tools/tests/lqp_debug_output/simple_relatom.lqp +++ b/python-tools/tests/lqp_debug_output/simple_relatom.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/sum_with_groupby.lqp b/python-tools/tests/lqp_debug_output/sum_with_groupby.lqp index 16b3d8db..327f24d5 100644 --- a/python-tools/tests/lqp_debug_output/sum_with_groupby.lqp +++ b/python-tools/tests/lqp_debug_output/sum_with_groupby.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/sync.lqp b/python-tools/tests/lqp_debug_output/sync.lqp index ba7c93c8..f9fdfcf3 100644 --- a/python-tools/tests/lqp_debug_output/sync.lqp +++ b/python-tools/tests/lqp_debug_output/sync.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (sync :foo :bar) (epoch diff --git a/python-tools/tests/lqp_debug_output/undefined_relation.lqp b/python-tools/tests/lqp_debug_output/undefined_relation.lqp index 7d8f34b2..e66533b3 100644 --- a/python-tools/tests/lqp_debug_output/undefined_relation.lqp +++ b/python-tools/tests/lqp_debug_output/undefined_relation.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/undefined_relation2.lqp b/python-tools/tests/lqp_debug_output/undefined_relation2.lqp index ddb80042..320aec72 100644 --- a/python-tools/tests/lqp_debug_output/undefined_relation2.lqp +++ b/python-tools/tests/lqp_debug_output/undefined_relation2.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/unicode.lqp b/python-tools/tests/lqp_debug_output/unicode.lqp index 7f838be0..af3683d7 100644 --- a/python-tools/tests/lqp_debug_output/unicode.lqp +++ b/python-tools/tests/lqp_debug_output/unicode.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/upsert.lqp b/python-tools/tests/lqp_debug_output/upsert.lqp index 7549ea4d..ce61b61e 100644 --- a/python-tools/tests/lqp_debug_output/upsert.lqp +++ b/python-tools/tests/lqp_debug_output/upsert.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/value_types.lqp b/python-tools/tests/lqp_debug_output/value_types.lqp index 48ea4bea..4f0ebfed 100644 --- a/python-tools/tests/lqp_debug_output/value_types.lqp +++ b/python-tools/tests/lqp_debug_output/value_types.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_debug_output/values.lqp b/python-tools/tests/lqp_debug_output/values.lqp index 5a033d92..3a1fa200 100644 --- a/python-tools/tests/lqp_debug_output/values.lqp +++ b/python-tools/tests/lqp_debug_output/values.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_no_csv_filename_output/multiple_export.lqp b/python-tools/tests/lqp_no_csv_filename_output/multiple_export.lqp index 62a9242b..a079f6bb 100644 --- a/python-tools/tests/lqp_no_csv_filename_output/multiple_export.lqp +++ b/python-tools/tests/lqp_no_csv_filename_output/multiple_export.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_no_csv_filename_output/simple_export.lqp b/python-tools/tests/lqp_no_csv_filename_output/simple_export.lqp index 0513692d..6d3f075f 100644 --- a/python-tools/tests/lqp_no_csv_filename_output/simple_export.lqp +++ b/python-tools/tests/lqp_no_csv_filename_output/simple_export.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/arithmetic.lqp b/python-tools/tests/lqp_output/arithmetic.lqp index 90a09f04..cc331fdf 100644 --- a/python-tools/tests/lqp_output/arithmetic.lqp +++ b/python-tools/tests/lqp_output/arithmetic.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/attributes.lqp b/python-tools/tests/lqp_output/attributes.lqp index f0af9d1d..eb2aa8dd 100644 --- a/python-tools/tests/lqp_output/attributes.lqp +++ b/python-tools/tests/lqp_output/attributes.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/config_flags.lqp b/python-tools/tests/lqp_output/config_flags.lqp index 2c9c1540..df14e8b0 100644 --- a/python-tools/tests/lqp_output/config_flags.lqp +++ b/python-tools/tests/lqp_output/config_flags.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "auto" + :optimization_level "aggressive" :semantics_version 1}) (epoch (writes diff --git a/python-tools/tests/lqp_output/csv.lqp b/python-tools/tests/lqp_output/csv.lqp index 1f0d023b..6f3cc26d 100644 --- a/python-tools/tests/lqp_output/csv.lqp +++ b/python-tools/tests/lqp_output/csv.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/edb.lqp b/python-tools/tests/lqp_output/edb.lqp index 8234c697..eaad7827 100644 --- a/python-tools/tests/lqp_output/edb.lqp +++ b/python-tools/tests/lqp_output/edb.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/fd.lqp b/python-tools/tests/lqp_output/fd.lqp index c4084feb..77d4dd9d 100644 --- a/python-tools/tests/lqp_output/fd.lqp +++ b/python-tools/tests/lqp_output/fd.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/ffi.lqp b/python-tools/tests/lqp_output/ffi.lqp index 18019b23..86852a2f 100644 --- a/python-tools/tests/lqp_output/ffi.lqp +++ b/python-tools/tests/lqp_output/ffi.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/loops.lqp b/python-tools/tests/lqp_output/loops.lqp index 353ec345..5aa3db6e 100644 --- a/python-tools/tests/lqp_output/loops.lqp +++ b/python-tools/tests/lqp_output/loops.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/missing.lqp b/python-tools/tests/lqp_output/missing.lqp index 8a67f062..bc541153 100644 --- a/python-tools/tests/lqp_output/missing.lqp +++ b/python-tools/tests/lqp_output/missing.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/monoid_monus.lqp b/python-tools/tests/lqp_output/monoid_monus.lqp index 2e0200d2..b2c88e3b 100644 --- a/python-tools/tests/lqp_output/monoid_monus.lqp +++ b/python-tools/tests/lqp_output/monoid_monus.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/multiple_export.lqp b/python-tools/tests/lqp_output/multiple_export.lqp index c997ab7c..cab6f03a 100644 --- a/python-tools/tests/lqp_output/multiple_export.lqp +++ b/python-tools/tests/lqp_output/multiple_export.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/not.lqp b/python-tools/tests/lqp_output/not.lqp index 82e6cef6..c75176ec 100644 --- a/python-tools/tests/lqp_output/not.lqp +++ b/python-tools/tests/lqp_output/not.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/number_ids.lqp b/python-tools/tests/lqp_output/number_ids.lqp index 9a79430c..957f89eb 100644 --- a/python-tools/tests/lqp_output/number_ids.lqp +++ b/python-tools/tests/lqp_output/number_ids.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/outer.lqp b/python-tools/tests/lqp_output/outer.lqp index 802e6dbf..7dc66152 100644 --- a/python-tools/tests/lqp_output/outer.lqp +++ b/python-tools/tests/lqp_output/outer.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/piece_of_q1.lqp b/python-tools/tests/lqp_output/piece_of_q1.lqp index d226ad1d..f1965a27 100644 --- a/python-tools/tests/lqp_output/piece_of_q1.lqp +++ b/python-tools/tests/lqp_output/piece_of_q1.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/pragma.lqp b/python-tools/tests/lqp_output/pragma.lqp index d681a1bf..611d5a7b 100644 --- a/python-tools/tests/lqp_output/pragma.lqp +++ b/python-tools/tests/lqp_output/pragma.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/primitive_types.lqp b/python-tools/tests/lqp_output/primitive_types.lqp index dbcae880..5ce7ca5a 100644 --- a/python-tools/tests/lqp_output/primitive_types.lqp +++ b/python-tools/tests/lqp_output/primitive_types.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/primitives.lqp b/python-tools/tests/lqp_output/primitives.lqp index 92e7def9..fc352afe 100644 --- a/python-tools/tests/lqp_output/primitives.lqp +++ b/python-tools/tests/lqp_output/primitives.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/quantifier.lqp b/python-tools/tests/lqp_output/quantifier.lqp index e1408726..ba642c89 100644 --- a/python-tools/tests/lqp_output/quantifier.lqp +++ b/python-tools/tests/lqp_output/quantifier.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/redefine_fragment.lqp b/python-tools/tests/lqp_output/redefine_fragment.lqp index 1d17ad63..af0ef9a8 100644 --- a/python-tools/tests/lqp_output/redefine_fragment.lqp +++ b/python-tools/tests/lqp_output/redefine_fragment.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/simple_cast.lqp b/python-tools/tests/lqp_output/simple_cast.lqp index 16e15c8e..40781a61 100644 --- a/python-tools/tests/lqp_output/simple_cast.lqp +++ b/python-tools/tests/lqp_output/simple_cast.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/simple_export.lqp b/python-tools/tests/lqp_output/simple_export.lqp index 7174fda2..4adae0c1 100644 --- a/python-tools/tests/lqp_output/simple_export.lqp +++ b/python-tools/tests/lqp_output/simple_export.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/simple_ic.lqp b/python-tools/tests/lqp_output/simple_ic.lqp index 4ab84358..c7f51013 100644 --- a/python-tools/tests/lqp_output/simple_ic.lqp +++ b/python-tools/tests/lqp_output/simple_ic.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/simple_recursion.lqp b/python-tools/tests/lqp_output/simple_recursion.lqp index c0b73bae..723e2188 100644 --- a/python-tools/tests/lqp_output/simple_recursion.lqp +++ b/python-tools/tests/lqp_output/simple_recursion.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/simple_relatom.lqp b/python-tools/tests/lqp_output/simple_relatom.lqp index 4ce29d3d..2fb2bb12 100644 --- a/python-tools/tests/lqp_output/simple_relatom.lqp +++ b/python-tools/tests/lqp_output/simple_relatom.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/sum_with_groupby.lqp b/python-tools/tests/lqp_output/sum_with_groupby.lqp index 0d05e7b0..547bbff4 100644 --- a/python-tools/tests/lqp_output/sum_with_groupby.lqp +++ b/python-tools/tests/lqp_output/sum_with_groupby.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/sync.lqp b/python-tools/tests/lqp_output/sync.lqp index 082e78ec..f90f689c 100644 --- a/python-tools/tests/lqp_output/sync.lqp +++ b/python-tools/tests/lqp_output/sync.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (sync :foo :bar) (epoch diff --git a/python-tools/tests/lqp_output/undefined_relation.lqp b/python-tools/tests/lqp_output/undefined_relation.lqp index 8be7b816..91490417 100644 --- a/python-tools/tests/lqp_output/undefined_relation.lqp +++ b/python-tools/tests/lqp_output/undefined_relation.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/undefined_relation2.lqp b/python-tools/tests/lqp_output/undefined_relation2.lqp index bb0f2e47..df4172b1 100644 --- a/python-tools/tests/lqp_output/undefined_relation2.lqp +++ b/python-tools/tests/lqp_output/undefined_relation2.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/unicode.lqp b/python-tools/tests/lqp_output/unicode.lqp index 9b28c931..ec9f1b35 100644 --- a/python-tools/tests/lqp_output/unicode.lqp +++ b/python-tools/tests/lqp_output/unicode.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/upsert.lqp b/python-tools/tests/lqp_output/upsert.lqp index 2677e1bb..49b2d635 100644 --- a/python-tools/tests/lqp_output/upsert.lqp +++ b/python-tools/tests/lqp_output/upsert.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/value_types.lqp b/python-tools/tests/lqp_output/value_types.lqp index c8f853ac..1470b872 100644 --- a/python-tools/tests/lqp_output/value_types.lqp +++ b/python-tools/tests/lqp_output/value_types.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_output/values.lqp b/python-tools/tests/lqp_output/values.lqp index 976859fa..d176dba3 100644 --- a/python-tools/tests/lqp_output/values.lqp +++ b/python-tools/tests/lqp_output/values.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/arithmetic.lqp b/python-tools/tests/lqp_pretty_output/arithmetic.lqp index 6f3e7130..a5b8d749 100644 --- a/python-tools/tests/lqp_pretty_output/arithmetic.lqp +++ b/python-tools/tests/lqp_pretty_output/arithmetic.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/attributes.lqp b/python-tools/tests/lqp_pretty_output/attributes.lqp index 34ecf22a..39161d9d 100644 --- a/python-tools/tests/lqp_pretty_output/attributes.lqp +++ b/python-tools/tests/lqp_pretty_output/attributes.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/config_flags.lqp b/python-tools/tests/lqp_pretty_output/config_flags.lqp index 84dd8cad..9f41ef95 100644 --- a/python-tools/tests/lqp_pretty_output/config_flags.lqp +++ b/python-tools/tests/lqp_pretty_output/config_flags.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "auto" + :optimization_level "aggressive" :semantics_version 1}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/csv.lqp b/python-tools/tests/lqp_pretty_output/csv.lqp index 470c6259..80305153 100644 --- a/python-tools/tests/lqp_pretty_output/csv.lqp +++ b/python-tools/tests/lqp_pretty_output/csv.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/edb.lqp b/python-tools/tests/lqp_pretty_output/edb.lqp index 42fd2396..dc8e6717 100644 --- a/python-tools/tests/lqp_pretty_output/edb.lqp +++ b/python-tools/tests/lqp_pretty_output/edb.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/fd.lqp b/python-tools/tests/lqp_pretty_output/fd.lqp index f101568e..3a2415ee 100644 --- a/python-tools/tests/lqp_pretty_output/fd.lqp +++ b/python-tools/tests/lqp_pretty_output/fd.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/ffi.lqp b/python-tools/tests/lqp_pretty_output/ffi.lqp index b55d2b08..7c490d93 100644 --- a/python-tools/tests/lqp_pretty_output/ffi.lqp +++ b/python-tools/tests/lqp_pretty_output/ffi.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/loops.lqp b/python-tools/tests/lqp_pretty_output/loops.lqp index 2d625b65..a0777b1e 100644 --- a/python-tools/tests/lqp_pretty_output/loops.lqp +++ b/python-tools/tests/lqp_pretty_output/loops.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/missing.lqp b/python-tools/tests/lqp_pretty_output/missing.lqp index 906792e4..c0e98e84 100644 --- a/python-tools/tests/lqp_pretty_output/missing.lqp +++ b/python-tools/tests/lqp_pretty_output/missing.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/monoid_monus.lqp b/python-tools/tests/lqp_pretty_output/monoid_monus.lqp index 5c074e1d..55b8aaa8 100644 --- a/python-tools/tests/lqp_pretty_output/monoid_monus.lqp +++ b/python-tools/tests/lqp_pretty_output/monoid_monus.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/multiple_export.lqp b/python-tools/tests/lqp_pretty_output/multiple_export.lqp index 33794d9b..e25ab59e 100644 --- a/python-tools/tests/lqp_pretty_output/multiple_export.lqp +++ b/python-tools/tests/lqp_pretty_output/multiple_export.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/not.lqp b/python-tools/tests/lqp_pretty_output/not.lqp index fe129382..f755aa26 100644 --- a/python-tools/tests/lqp_pretty_output/not.lqp +++ b/python-tools/tests/lqp_pretty_output/not.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/number_ids.lqp b/python-tools/tests/lqp_pretty_output/number_ids.lqp index 9a79430c..957f89eb 100644 --- a/python-tools/tests/lqp_pretty_output/number_ids.lqp +++ b/python-tools/tests/lqp_pretty_output/number_ids.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/outer.lqp b/python-tools/tests/lqp_pretty_output/outer.lqp index 477634d9..7fb4f2ea 100644 --- a/python-tools/tests/lqp_pretty_output/outer.lqp +++ b/python-tools/tests/lqp_pretty_output/outer.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/piece_of_q1.lqp b/python-tools/tests/lqp_pretty_output/piece_of_q1.lqp index a88faf84..7d6e49b9 100644 --- a/python-tools/tests/lqp_pretty_output/piece_of_q1.lqp +++ b/python-tools/tests/lqp_pretty_output/piece_of_q1.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/pragma.lqp b/python-tools/tests/lqp_pretty_output/pragma.lqp index 5f1a5dfc..7a9992ac 100644 --- a/python-tools/tests/lqp_pretty_output/pragma.lqp +++ b/python-tools/tests/lqp_pretty_output/pragma.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/primitive_types.lqp b/python-tools/tests/lqp_pretty_output/primitive_types.lqp index 74eee91d..c94587e7 100644 --- a/python-tools/tests/lqp_pretty_output/primitive_types.lqp +++ b/python-tools/tests/lqp_pretty_output/primitive_types.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/primitives.lqp b/python-tools/tests/lqp_pretty_output/primitives.lqp index ee94c9a2..fcfe6e0e 100644 --- a/python-tools/tests/lqp_pretty_output/primitives.lqp +++ b/python-tools/tests/lqp_pretty_output/primitives.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/quantifier.lqp b/python-tools/tests/lqp_pretty_output/quantifier.lqp index 3d816aec..162689fc 100644 --- a/python-tools/tests/lqp_pretty_output/quantifier.lqp +++ b/python-tools/tests/lqp_pretty_output/quantifier.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/redefine_fragment.lqp b/python-tools/tests/lqp_pretty_output/redefine_fragment.lqp index f9140488..f7f01b2a 100644 --- a/python-tools/tests/lqp_pretty_output/redefine_fragment.lqp +++ b/python-tools/tests/lqp_pretty_output/redefine_fragment.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/simple_cast.lqp b/python-tools/tests/lqp_pretty_output/simple_cast.lqp index 6a344bf6..8e171e6d 100644 --- a/python-tools/tests/lqp_pretty_output/simple_cast.lqp +++ b/python-tools/tests/lqp_pretty_output/simple_cast.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/simple_export.lqp b/python-tools/tests/lqp_pretty_output/simple_export.lqp index 953b5362..476e4259 100644 --- a/python-tools/tests/lqp_pretty_output/simple_export.lqp +++ b/python-tools/tests/lqp_pretty_output/simple_export.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/simple_ic.lqp b/python-tools/tests/lqp_pretty_output/simple_ic.lqp index 25e13770..14d57153 100644 --- a/python-tools/tests/lqp_pretty_output/simple_ic.lqp +++ b/python-tools/tests/lqp_pretty_output/simple_ic.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/simple_recursion.lqp b/python-tools/tests/lqp_pretty_output/simple_recursion.lqp index cca3730a..4e886134 100644 --- a/python-tools/tests/lqp_pretty_output/simple_recursion.lqp +++ b/python-tools/tests/lqp_pretty_output/simple_recursion.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/simple_relatom.lqp b/python-tools/tests/lqp_pretty_output/simple_relatom.lqp index 1d6e1ae0..5c84fdfe 100644 --- a/python-tools/tests/lqp_pretty_output/simple_relatom.lqp +++ b/python-tools/tests/lqp_pretty_output/simple_relatom.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/sum_with_groupby.lqp b/python-tools/tests/lqp_pretty_output/sum_with_groupby.lqp index 1e0d1075..9563b45e 100644 --- a/python-tools/tests/lqp_pretty_output/sum_with_groupby.lqp +++ b/python-tools/tests/lqp_pretty_output/sum_with_groupby.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/sync.lqp b/python-tools/tests/lqp_pretty_output/sync.lqp index 4b3e9fe1..12888474 100644 --- a/python-tools/tests/lqp_pretty_output/sync.lqp +++ b/python-tools/tests/lqp_pretty_output/sync.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (sync :foo :bar) (epoch diff --git a/python-tools/tests/lqp_pretty_output/undefined_relation.lqp b/python-tools/tests/lqp_pretty_output/undefined_relation.lqp index 29ce26b0..6b1373a2 100644 --- a/python-tools/tests/lqp_pretty_output/undefined_relation.lqp +++ b/python-tools/tests/lqp_pretty_output/undefined_relation.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/undefined_relation2.lqp b/python-tools/tests/lqp_pretty_output/undefined_relation2.lqp index fc1c1ca1..13361409 100644 --- a/python-tools/tests/lqp_pretty_output/undefined_relation2.lqp +++ b/python-tools/tests/lqp_pretty_output/undefined_relation2.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/unicode.lqp b/python-tools/tests/lqp_pretty_output/unicode.lqp index ae4e49c7..b51c8dd5 100644 --- a/python-tools/tests/lqp_pretty_output/unicode.lqp +++ b/python-tools/tests/lqp_pretty_output/unicode.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/upsert.lqp b/python-tools/tests/lqp_pretty_output/upsert.lqp index f48fbbd0..09442745 100644 --- a/python-tools/tests/lqp_pretty_output/upsert.lqp +++ b/python-tools/tests/lqp_pretty_output/upsert.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/value_types.lqp b/python-tools/tests/lqp_pretty_output/value_types.lqp index 90da33fa..630fe6c6 100644 --- a/python-tools/tests/lqp_pretty_output/value_types.lqp +++ b/python-tools/tests/lqp_pretty_output/value_types.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/lqp_pretty_output/values.lqp b/python-tools/tests/lqp_pretty_output/values.lqp index dbed46cd..bfe545ae 100644 --- a/python-tools/tests/lqp_pretty_output/values.lqp +++ b/python-tools/tests/lqp_pretty_output/values.lqp @@ -1,6 +1,7 @@ (transaction (configure { :ivm.maintenance_level "off" + :optimization_level "default" :semantics_version 0}) (epoch (writes diff --git a/python-tools/tests/test_files/bin/arithmetic.bin b/python-tools/tests/test_files/bin/arithmetic.bin index fab45503..d8c8cfdb 100644 --- a/python-tools/tests/test_files/bin/arithmetic.bin +++ b/python-tools/tests/test_files/bin/arithmetic.bin @@ -137,4 +137,4 @@ AJ? VŃñÚ decimal_64 decimal_128 dec_64 V×ijN&â¼ -dec_128 VŃñÚ \ No newline at end of file +dec_128 VŃñÚ \ No newline at end of file diff --git a/python-tools/tests/test_files/bin/attributes.bin b/python-tools/tests/test_files/bin/attributes.bin index 0d07432075c9e2236dd3269546fd578fecaaecad..b49fc38711d70689efb56b2e9147c6e9dd716322 100644 GIT binary patch delta 15 WcmeBW?q}Z6!N|@g#KgfU!3Y2y_yV5* delta 13 UcmeBY?q%N4!N|%Y#Kge}02rwPf&c&j diff --git a/python-tools/tests/test_files/bin/config_flags.bin b/python-tools/tests/test_files/bin/config_flags.bin index 58ee74c9448ddb603d97cfa45bb2563fd056d3a0..69f1e6cd31ef419f5329727e290ee51c698445dd 100644 GIT binary patch delta 16 XcmbQiIE!(@L{1J4Mj<8+CJAN$Aj<-& delta 14 VcmbQmID>J*M0Pd~Mj<8+CIA~^0*U|t diff --git a/python-tools/tests/test_files/bin/csv.bin b/python-tools/tests/test_files/bin/csv.bin index 72409a11654b3ec31156af4c99e42745ac300ec7..2e36652c8c50dd8429d8d4f56c50c759a3877c25 100644 GIT binary patch delta 15 Wcmey$^_^=&0V_M35EBQZ1S0?`LIY_4 delta 13 Ucmey)^_6Qw0V^wu5EBO@03u%lOaK4? diff --git a/python-tools/tests/test_files/bin/edb.bin b/python-tools/tests/test_files/bin/edb.bin index 1ba4ba3d778d488341e74f80d2b579edbdf95eb8..85beaefde55f1ba8808ad473400758fef7296327 100644 GIT binary patch delta 15 WcmZqSZR6cg&&JLs#KgfU!3Y2y(*m6U delta 13 UcmZqUZQ3$yf)M~7TLPy5 delta 13 UcmbQh+Q+(~lZll@h>3#{02urNiU0rr diff --git a/python-tools/tests/test_files/bin/loops.bin b/python-tools/tests/test_files/bin/loops.bin index 9cb06ac960ddb9aff98afa78b0ea8796d7f795c6..d3909000684afa67d91824dad467ea1a22a940f1 100644 GIT binary patch delta 15 WcmaFF^Mq$ZEE_wU5EBQZ1S0?@tphax delta 13 UcmaFD^N43dEE_9}5EBO@03b307ytkO diff --git a/python-tools/tests/test_files/bin/missing.bin b/python-tools/tests/test_files/bin/missing.bin index 918a85ddcfd440026718ef13f8a1090e2afd04cf..2505fdffc31d612c223681c4e3b499b698a8dba5 100644 GIT binary patch delta 14 Vcmey)_>*zMCw4X=CJsgkMgSaWCsr0ACJsgbAt3{s diff --git a/python-tools/tests/test_files/bin/monoid_monus.bin b/python-tools/tests/test_files/bin/monoid_monus.bin index ec04197d46e703bdcf5331d5b8080faabae4de0c..17cef714a3f6a358c12cb51e0aee700ba563ec33 100644 GIT binary patch delta 15 WcmdnayOVdrCN_39Atnw+2}S@VWdk+< delta 13 UcmdnVyPbE#CN@?UAtnw+03PTA82|tP diff --git a/python-tools/tests/test_files/bin/multiple_export.bin b/python-tools/tests/test_files/bin/multiple_export.bin index 8f8f07bba285e75feca495d76032afcaa373f98c..011e4d5307dff0c651b0abc2f7f007eb7e0bf994 100644 GIT binary patch delta 15 WcmX@fd75*>5f*kfAtnw+2}S@Xmjhw| delta 13 UcmX@jd6IL(5f)Y!Atnw+03gBxMF0Q* diff --git a/python-tools/tests/test_files/bin/not.bin b/python-tools/tests/test_files/bin/not.bin index 609a56463a6844402773900afe8fa397ea4f56ed..e524af2ce4c3eeac0db06098ac03f606b15cbb46 100644 GIT binary patch delta 14 VcmbQsIG=IC40bjlCJsgkMgSaC0;&K2 delta 12 TcmbQwIG1t43|1B)CJsgb7ViR$ diff --git a/python-tools/tests/test_files/bin/number_ids.bin b/python-tools/tests/test_files/bin/number_ids.bin index 97bc28020cfd6b6a08b4b66a595440cc9447f9f5..728e7a96863d0877ba6af041eaf74f4073bfabd5 100644 GIT binary patch delta 14 VcmbQrIGu6A1a>wdCJsgkMgSW;0+Ij# delta 12 TcmbQvIF)h21XdOyCJsgb76$@# diff --git a/python-tools/tests/test_files/bin/outer.bin b/python-tools/tests/test_files/bin/outer.bin index 2fd9bef3da4a3d5bc084b75ef9635973f2de81b2..ac0177bff6618ba6d5b3ade963958a18816b6f5d 100644 GIT binary patch delta 15 Wcmey*(#X1@iiw>~h>3$yf)M~ClLGkw delta 13 UcmZo<{m-(Yiiwp)h>3#{034D6+yDRo diff --git a/python-tools/tests/test_files/bin/piece_of_q1.bin b/python-tools/tests/test_files/bin/piece_of_q1.bin index a33414b93eed3d284b59d119eb4bf1b2dbf5d7a6..44c11f12b1dad6072cebcbf39e4807dfe9024b71 100644 GIT binary patch delta 15 WcmZ3%vWjJcG7~$S5EBQZ1S0?)9RhOz delta 13 UcmZ3*vVvuUG7~F{5EBO@02n3$RsaA1 diff --git a/python-tools/tests/test_files/bin/pragma.bin b/python-tools/tests/test_files/bin/pragma.bin index 7fca10791d963a1f318a4c48aacfa93c43383a0f..7e87005c89165677bc1a2f96ebc7bc8238ac2fc4 100644 GIT binary patch delta 15 Wcmcb?ev5s>WoC9ZAtnw+2}S@Zlmm(Y delta 13 Ucmcb`euI6(WoA|uAtnw+03vS#Z2$lO diff --git a/python-tools/tests/test_files/bin/primitive_types.bin b/python-tools/tests/test_files/bin/primitive_types.bin index 153ae3127788c65afccf6dc6d46ef55be2a9ab84..85b90179e0afb389680393a6f0847a77a3252afa 100644 GIT binary patch delta 15 WcmZ1>vr1-zG9Npe5EBQZ1S0?+`2w#1 delta 13 UcmZ1_vqENrG9N385EBO@02+z{k^lez diff --git a/python-tools/tests/test_files/bin/primitives.bin b/python-tools/tests/test_files/bin/primitives.bin index 75ebc8d5dea48b3f2aef640d8b893c37f1db35cb..4f7b8d97329be3a17882477ae2e1bd0ff8ddeede 100644 GIT binary patch delta 15 WcmdnNw2NtjF(W&h5EBQZ1S0?+Kmwis delta 13 UcmdnRw1a7bF(WIB5EBO@02%WFfdBvi diff --git a/python-tools/tests/test_files/bin/quantifier.bin b/python-tools/tests/test_files/bin/quantifier.bin index 319f3f1adbf1471844c23cef021e5f8f2082ee04..ead4e7aa864c45b23789a61b9edf6f4c0a98c1cc 100644 GIT binary patch delta 15 WcmaE&`b>4heIa%>Atnw+2}S@e?*sV& delta 13 UcmaE+`b2fZeIZsBAtnw+04D4M+yDRo diff --git a/python-tools/tests/test_files/bin/redefine_fragment.bin b/python-tools/tests/test_files/bin/redefine_fragment.bin index 770e847a757bc062bb2a88c16c3b1da3b460dd8b..d8e48837eeabd852a248ceac0bc82470116c9439 100644 GIT binary patch delta 15 WcmX@ee3*H|9!7RHAtnw+2}S@Vumd{) delta 13 UcmX@ie2{s=9!6FcAtnw+03Rs>9smFU diff --git a/python-tools/tests/test_files/bin/simple_cast.bin b/python-tools/tests/test_files/bin/simple_cast.bin index d1160d58e429594d8b360e5b135e32b44c3b44bb..1a6cb371065a8ef112839a948cb984f6d7056ac0 100644 GIT binary patch delta 15 Wcmeyy`h#`DM<#YQAtnw+2}S@d%LCs4 delta 13 Ucmeyt`i*tNM6JFLsk|cCJsgbA2b7K diff --git a/python-tools/tests/test_files/bin/sum_with_groupby.bin b/python-tools/tests/test_files/bin/sum_with_groupby.bin index 1217e7644362531979b72617f217d5988c67594a..047cfea3d71aafeb35571330e60240b22f14de1d 100644 GIT binary patch delta 15 WcmbQrIh}LE1QvESAtnw+2}S@P-vY(} delta 13 UcmbQvIhAw61Qu2nAtnw+02)F9sQ>@~ diff --git a/python-tools/tests/test_files/bin/sync.bin b/python-tools/tests/test_files/bin/sync.bin index 99c76f1e2867cc9639e6ea5209b961be09cc43ca..664739daedf24dd956f087c5610dee3c93675fc4 100644 GIT binary patch delta 30 icmeBS>|>lzF3u*z#K9=RD8|vZxF3KXr#K9=V$HmIUoR*&tqLLDe08GIJGXMYp diff --git a/python-tools/tests/test_files/bin/undefined_relation.bin b/python-tools/tests/test_files/bin/undefined_relation.bin index 4c7be99f7c69c0411e532a70bd8e565073cfd5dc..f22c5b6df1b11355d932d2364cf018084d013f9b 100644 GIT binary patch delta 15 WcmbQsG@ogM1S30}5EBQZ1S0?&J_1bu delta 13 UcmbQwG?!_E1S2bp5EBO@02Y%1FaQ7m diff --git a/python-tools/tests/test_files/bin/undefined_relation2.bin b/python-tools/tests/test_files/bin/undefined_relation2.bin index 4ee3152dae29773ce5cf34655a63c3fea25ee0b3..89dd79dbcd590dc303376d221512fb93cad2afb0 100644 GIT binary patch delta 15 WcmeBX>Sfx%#>mbl#KgfU!3Y2tk^&b1 delta 13 UcmeBW>So%&#>mPd#Kge}02EUJ`Tzg` diff --git a/python-tools/tests/test_files/bin/unicode.bin b/python-tools/tests/test_files/bin/unicode.bin index 48c6f799ac6db3c64548da0f0aea360a0240e685..8645b0a217845bd1bcab91bef274bf74cbf2f568 100644 GIT binary patch delta 15 WcmX@hdY*N|2_|+nAtnw+2}S@XwF6`T delta 13 UcmX@ldX{y=2_{w+Atnw+03h50M*si- diff --git a/python-tools/tests/test_files/bin/upsert.bin b/python-tools/tests/test_files/bin/upsert.bin index bfcecfd3ac6c04002cd4e3335aeff4e444849e16..60ebd87067ed5a00f7d8ab7779419623751abe33 100644 GIT binary patch delta 15 WcmZo-Z(-k1%goLu#KgfU!3Y2x&;p16 delta 13 UcmZo+Z(`q2%go9m#Kge}02i+UYXATM diff --git a/python-tools/tests/test_files/bin/value_types.bin b/python-tools/tests/test_files/bin/value_types.bin index 1224d08a5ce974e702a74443b2d4f05a5d94dcf3..78349e06fbfec674e8453b0b1e06af67e15d975d 100644 GIT binary patch delta 15 WcmZ3_ypegsDn@oTAtnw+2}S@T1Oo*C delta 13 UcmdnUyq Date: Wed, 11 Feb 2026 13:23:14 +0100 Subject: [PATCH 2/4] fixing the bugs --- julia/LQPParser/src/parser.jl | 24 +++++- .../src/relationalai/lqp/v1/fragments_pb.jl | 7 +- .../src/relationalai/lqp/v1/logic_pb.jl | 79 ++++++++++++++++--- .../relationalai/lqp/v1/transactions_pb.jl | 41 ++++++++-- 4 files changed, 127 insertions(+), 24 deletions(-) diff --git a/julia/LQPParser/src/parser.jl b/julia/LQPParser/src/parser.jl index 9a580329..8ce3e51c 100644 --- a/julia/LQPParser/src/parser.jl +++ b/julia/LQPParser/src/parser.jl @@ -473,7 +473,7 @@ end function default_configure(parser::Parser)::Proto.Configure _t969 = Proto.IVMConfig(Proto.MaintenanceLevel.MAINTENANCE_LEVEL_OFF) ivm_config = _t969 - _t970 = Proto.Configure(0, ivm_config) + _t970 = Proto.Configure(0, ivm_config, Proto.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT) return _t970 end @@ -500,7 +500,24 @@ function construct_configure(parser::Parser, config_dict::Vector{Tuple{String, P ivm_config = _t971 _t972 = _extract_value_int64(parser, get(config, "semantics_version", nothing), 0) semantics_version = _t972 - _t973 = Proto.Configure(semantics_version, ivm_config) + optimization_level_val = get(config, "optimization_level", nothing) + optimization_level = Proto.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT + if (!isnothing(optimization_level_val) && _has_proto_field(optimization_level_val, Symbol("string_value"))) + if _get_oneof_field(optimization_level_val, :string_value) == "default" + optimization_level = Proto.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT + else + if _get_oneof_field(optimization_level_val, :string_value) == "conservative" + optimization_level = Proto.OptimizationLevel.OPTIMIZATION_LEVEL_CONSERVATIVE + else + if _get_oneof_field(optimization_level_val, :string_value) == "aggressive" + optimization_level = Proto.OptimizationLevel.OPTIMIZATION_LEVEL_AGGRESSIVE + else + optimization_level = Proto.OptimizationLevel.OPTIMIZATION_LEVEL_DEFAULT + end + end + end + end + _t973 = Proto.Configure(semantics_version, ivm_config, optimization_level) return _t973 end @@ -2865,6 +2882,9 @@ function parse_constraint(parser::Parser)::Proto.Constraint consume_literal!(parser, ")") _t851 = Proto.FunctionalDependency(abstraction258, functional_dependency_keys259, functional_dependency_values260) _t852 = Proto.Constraint(OneOf(:functional_dependency, _t851), relation_id257) + # TODO: This was changed manually - the generated code mixed the two inputs which lead to an error. + # original line is below + # _t852 = Proto.Constraint(relation_id257, OneOf(:functional_dependency, _t851)) return _t852 end diff --git a/julia/LQPParser/src/relationalai/lqp/v1/fragments_pb.jl b/julia/LQPParser/src/relationalai/lqp/v1/fragments_pb.jl index 51c61cf7..54d6996c 100644 --- a/julia/LQPParser/src/relationalai/lqp/v1/fragments_pb.jl +++ b/julia/LQPParser/src/relationalai/lqp/v1/fragments_pb.jl @@ -1,5 +1,5 @@ -# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-01-15T19:26:09.335 -# original file: /Users/nystrom/rai/nn-meta-4-parser-gen/proto/relationalai/lqp/v1/fragments.proto (proto3 syntax) +# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-02-11T12:34:20.995 +# original file: /home/berkay/logical-query-protocol/proto/relationalai/lqp/v1/fragments.proto (proto3 syntax) import ProtoBuf as PB using ProtoBuf: OneOf @@ -11,6 +11,7 @@ export FragmentId, DebugInfo, Fragment struct FragmentId id::Vector{UInt8} end +FragmentId(;id = UInt8[]) = FragmentId(id) PB.default_values(::Type{FragmentId}) = (;id = UInt8[]) PB.field_numbers(::Type{FragmentId}) = (;id = 1) @@ -42,6 +43,7 @@ struct DebugInfo ids::Vector{RelationId} orig_names::Vector{String} end +DebugInfo(;ids = Vector{RelationId}(), orig_names = Vector{String}()) = DebugInfo(ids, orig_names) PB.default_values(::Type{DebugInfo}) = (;ids = Vector{RelationId}(), orig_names = Vector{String}()) PB.field_numbers(::Type{DebugInfo}) = (;ids = 1, orig_names = 2) @@ -79,6 +81,7 @@ struct Fragment declarations::Vector{Declaration} debug_info::Union{Nothing,DebugInfo} end +Fragment(;id = nothing, declarations = Vector{Declaration}(), debug_info = nothing) = Fragment(id, declarations, debug_info) PB.default_values(::Type{Fragment}) = (;id = nothing, declarations = Vector{Declaration}(), debug_info = nothing) PB.field_numbers(::Type{Fragment}) = (;id = 1, declarations = 2, debug_info = 3) diff --git a/julia/LQPParser/src/relationalai/lqp/v1/logic_pb.jl b/julia/LQPParser/src/relationalai/lqp/v1/logic_pb.jl index a4c2e873..6cea874d 100644 --- a/julia/LQPParser/src/relationalai/lqp/v1/logic_pb.jl +++ b/julia/LQPParser/src/relationalai/lqp/v1/logic_pb.jl @@ -1,5 +1,5 @@ -# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-01-15T19:26:08.818 -# original file: /Users/nystrom/rai/nn-meta-4-parser-gen/proto/relationalai/lqp/v1/logic.proto (proto3 syntax) +# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-02-11T12:34:20.266 +# original file: /home/berkay/logical-query-protocol/proto/relationalai/lqp/v1/logic.proto (proto3 syntax) import ProtoBuf as PB using ProtoBuf: OneOf @@ -61,6 +61,7 @@ struct RelationId id_low::UInt64 id_high::UInt64 end +RelationId(;id_low = zero(UInt64), id_high = zero(UInt64)) = RelationId(id_low, id_high) PB.default_values(::Type{RelationId}) = (;id_low = zero(UInt64), id_high = zero(UInt64)) PB.field_numbers(::Type{RelationId}) = (;id_low = 1, id_high = 2) @@ -96,6 +97,7 @@ end struct Var name::String end +Var(;name = "") = Var(name) PB.default_values(::Type{Var}) = (;name = "") PB.field_numbers(::Type{Var}) = (;name = 1) @@ -167,6 +169,7 @@ struct BeTreeConfig max_deltas::Int64 max_leaf::Int64 end +BeTreeConfig(;epsilon = zero(Float64), max_pivots = zero(Int64), max_deltas = zero(Int64), max_leaf = zero(Int64)) = BeTreeConfig(epsilon, max_pivots, max_deltas, max_leaf) PB.default_values(::Type{BeTreeConfig}) = (;epsilon = zero(Float64), max_pivots = zero(Int64), max_deltas = zero(Int64), max_leaf = zero(Int64)) PB.field_numbers(::Type{BeTreeConfig}) = (;epsilon = 1, max_pivots = 2, max_deltas = 3, max_leaf = 4) @@ -218,6 +221,7 @@ struct DateTimeValue second::Int32 microsecond::Int32 end +DateTimeValue(;year = zero(Int32), month = zero(Int32), day = zero(Int32), hour = zero(Int32), minute = zero(Int32), second = zero(Int32), microsecond = zero(Int32)) = DateTimeValue(year, month, day, hour, minute, second, microsecond) PB.default_values(::Type{DateTimeValue}) = (;year = zero(Int32), month = zero(Int32), day = zero(Int32), hour = zero(Int32), minute = zero(Int32), second = zero(Int32), microsecond = zero(Int32)) PB.field_numbers(::Type{DateTimeValue}) = (;year = 1, month = 2, day = 3, hour = 4, minute = 5, second = 6, microsecond = 7) @@ -280,6 +284,7 @@ struct DateValue month::Int32 day::Int32 end +DateValue(;year = zero(Int32), month = zero(Int32), day = zero(Int32)) = DateValue(year, month, day) PB.default_values(::Type{DateValue}) = (;year = zero(Int32), month = zero(Int32), day = zero(Int32)) PB.field_numbers(::Type{DateValue}) = (;year = 1, month = 2, day = 3) @@ -340,6 +345,7 @@ struct CSVLocator paths::Vector{String} inline_data::Vector{UInt8} end +CSVLocator(;paths = Vector{String}(), inline_data = UInt8[]) = CSVLocator(paths, inline_data) PB.default_values(::Type{CSVLocator}) = (;paths = Vector{String}(), inline_data = UInt8[]) PB.field_numbers(::Type{CSVLocator}) = (;paths = 1, inline_data = 2) @@ -395,6 +401,7 @@ struct DecimalType precision::Int32 scale::Int32 end +DecimalType(;precision = zero(Int32), scale = zero(Int32)) = DecimalType(precision, scale) PB.default_values(::Type{DecimalType}) = (;precision = zero(Int32), scale = zero(Int32)) PB.field_numbers(::Type{DecimalType}) = (;precision = 1, scale = 2) @@ -516,6 +523,7 @@ struct CSVConfig encoding::String compression::String end +CSVConfig(;header_row = zero(Int32), skip = zero(Int64), new_line = "", delimiter = "", quotechar = "", escapechar = "", comment = "", missing_strings = Vector{String}(), decimal_separator = "", encoding = "", compression = "") = CSVConfig(header_row, skip, new_line, delimiter, quotechar, escapechar, comment, missing_strings, decimal_separator, encoding, compression) PB.default_values(::Type{CSVConfig}) = (;header_row = zero(Int32), skip = zero(Int64), new_line = "", delimiter = "", quotechar = "", escapechar = "", comment = "", missing_strings = Vector{String}(), decimal_separator = "", encoding = "", compression = "") PB.field_numbers(::Type{CSVConfig}) = (;header_row = 1, skip = 2, new_line = 3, delimiter = 4, quotechar = 5, escapechar = 6, comment = 7, missing_strings = 8, decimal_separator = 9, encoding = 10, compression = 11) @@ -635,6 +643,7 @@ struct Int128Value low::UInt64 high::UInt64 end +Int128Value(;low = zero(UInt64), high = zero(UInt64)) = Int128Value(low, high) PB.default_values(::Type{Int128Value}) = (;low = zero(UInt64), high = zero(UInt64)) PB.field_numbers(::Type{Int128Value}) = (;low = 1, high = 2) @@ -671,6 +680,7 @@ struct UInt128Value low::UInt64 high::UInt64 end +UInt128Value(;low = zero(UInt64), high = zero(UInt64)) = UInt128Value(low, high) PB.default_values(::Type{UInt128Value}) = (;low = zero(UInt64), high = zero(UInt64)) PB.field_numbers(::Type{UInt128Value}) = (;low = 1, high = 2) @@ -727,6 +737,7 @@ struct DecimalValue scale::Int32 value::Union{Nothing,Int128Value} end +DecimalValue(;precision = zero(Int32), scale = zero(Int32), value = nothing) = DecimalValue(precision, scale, value) PB.default_values(::Type{DecimalValue}) = (;precision = zero(Int32), scale = zero(Int32), value = nothing) PB.field_numbers(::Type{DecimalValue}) = (;precision = 1, scale = 2, value = 3) @@ -769,6 +780,7 @@ struct BeTreeLocator element_count::Int64 tree_height::Int64 end +BeTreeLocator(;location = nothing, element_count = zero(Int64), tree_height = zero(Int64)) = BeTreeLocator(location, element_count, tree_height) PB.oneof_field_types(::Type{BeTreeLocator}) = (; location = (;root_pageid=UInt128Value, inline_data=Vector{UInt8}), ) @@ -824,6 +836,7 @@ end struct var"#Type" var"#type"::Union{Nothing,OneOf{<:Union{UnspecifiedType,StringType,IntType,FloatType,UInt128Type,Int128Type,DateType,DateTimeType,MissingType,DecimalType,BooleanType}}} end +var"#Type"(;var"#type" = nothing) = var"#Type"(var"#type") PB.oneof_field_types(::Type{var"#Type"}) = (; var"#type" = (;unspecified_type=UnspecifiedType, string_type=StringType, int_type=IntType, float_type=FloatType, uint128_type=UInt128Type, int128_type=Int128Type, date_type=DateType, datetime_type=DateTimeType, missing_type=MissingType, decimal_type=DecimalType, boolean_type=BooleanType), ) @@ -923,6 +936,7 @@ end struct Value value::Union{Nothing,OneOf{<:Union{String,Int64,Float64,UInt128Value,Int128Value,MissingValue,DateValue,DateTimeValue,DecimalValue,Bool}}} end +Value(;value = nothing) = Value(value) PB.oneof_field_types(::Type{Value}) = (; value = (;string_value=String, int_value=Int64, float_value=Float64, uint128_value=UInt128Value, int128_value=Int128Value, missing_value=MissingValue, date_value=DateValue, datetime_value=DateTimeValue, decimal_value=DecimalValue, boolean_value=Bool), ) @@ -1018,6 +1032,7 @@ struct RelEDB path::Vector{String} types::Vector{var"#Type"} end +RelEDB(;target_id = nothing, path = Vector{String}(), types = Vector{var"#Type"}()) = RelEDB(target_id, path, types) PB.default_values(::Type{RelEDB}) = (;target_id = nothing, path = Vector{String}(), types = Vector{var"#Type"}()) PB.field_numbers(::Type{RelEDB}) = (;target_id = 1, path = 2, types = 3) @@ -1058,6 +1073,7 @@ end struct MinMonoid var"#type"::Union{Nothing,var"#Type"} end +MinMonoid(;var"#type" = nothing) = MinMonoid(var"#type") PB.default_values(::Type{MinMonoid}) = (;var"#type" = nothing) PB.field_numbers(::Type{MinMonoid}) = (;var"#type" = 1) @@ -1088,6 +1104,7 @@ end struct SumMonoid var"#type"::Union{Nothing,var"#Type"} end +SumMonoid(;var"#type" = nothing) = SumMonoid(var"#type") PB.default_values(::Type{SumMonoid}) = (;var"#type" = nothing) PB.field_numbers(::Type{SumMonoid}) = (;var"#type" = 1) @@ -1118,6 +1135,7 @@ end struct MaxMonoid var"#type"::Union{Nothing,var"#Type"} end +MaxMonoid(;var"#type" = nothing) = MaxMonoid(var"#type") PB.default_values(::Type{MaxMonoid}) = (;var"#type" = nothing) PB.field_numbers(::Type{MaxMonoid}) = (;var"#type" = 1) @@ -1151,6 +1169,7 @@ struct BeTreeInfo storage_config::Union{Nothing,BeTreeConfig} relation_locator::Union{Nothing,BeTreeLocator} end +BeTreeInfo(;key_types = Vector{var"#Type"}(), value_types = Vector{var"#Type"}(), storage_config = nothing, relation_locator = nothing) = BeTreeInfo(key_types, value_types, storage_config, relation_locator) PB.reserved_fields(::Type{BeTreeInfo}) = (names = String[], numbers = Union{Int,UnitRange{Int}}[3]) PB.default_values(::Type{BeTreeInfo}) = (;key_types = Vector{var"#Type"}(), value_types = Vector{var"#Type"}(), storage_config = nothing, relation_locator = nothing) PB.field_numbers(::Type{BeTreeInfo}) = (;key_types = 1, value_types = 2, storage_config = 4, relation_locator = 5) @@ -1198,6 +1217,7 @@ struct Binding var::Union{Nothing,Var} var"#type"::Union{Nothing,var"#Type"} end +Binding(;var = nothing, var"#type" = nothing) = Binding(var, var"#type") PB.default_values(::Type{Binding}) = (;var = nothing, var"#type" = nothing) PB.field_numbers(::Type{Binding}) = (;var = 1, var"#type" = 2) @@ -1235,6 +1255,7 @@ struct CSVColumn target_id::Union{Nothing,RelationId} types::Vector{var"#Type"} end +CSVColumn(;column_name = "", target_id = nothing, types = Vector{var"#Type"}()) = CSVColumn(column_name, target_id, types) PB.default_values(::Type{CSVColumn}) = (;column_name = "", target_id = nothing, types = Vector{var"#Type"}()) PB.field_numbers(::Type{CSVColumn}) = (;column_name = 1, target_id = 2, types = 3) @@ -1276,6 +1297,7 @@ struct Attribute name::String args::Vector{Value} end +Attribute(;name = "", args = Vector{Value}()) = Attribute(name, args) PB.default_values(::Type{Attribute}) = (;name = "", args = Vector{Value}()) PB.field_numbers(::Type{Attribute}) = (;name = 1, args = 2) @@ -1311,6 +1333,7 @@ end struct Term term_type::Union{Nothing,OneOf{<:Union{Var,Value}}} end +Term(;term_type = nothing) = Term(term_type) PB.oneof_field_types(::Type{Term}) = (; term_type = (;var=Var, constant=Value), ) @@ -1356,6 +1379,7 @@ end struct Monoid value::Union{Nothing,OneOf{<:Union{OrMonoid,MinMonoid,MaxMonoid,SumMonoid}}} end +Monoid(;value = nothing) = Monoid(value) PB.oneof_field_types(::Type{Monoid}) = (; value = (;or_monoid=OrMonoid, min_monoid=MinMonoid, max_monoid=MaxMonoid, sum_monoid=SumMonoid), ) @@ -1414,6 +1438,7 @@ struct BeTreeRelation name::Union{Nothing,RelationId} relation_info::Union{Nothing,BeTreeInfo} end +BeTreeRelation(;name = nothing, relation_info = nothing) = BeTreeRelation(name, relation_info) PB.default_values(::Type{BeTreeRelation}) = (;name = nothing, relation_info = nothing) PB.field_numbers(::Type{BeTreeRelation}) = (;name = 1, relation_info = 2) @@ -1452,6 +1477,7 @@ struct CSVData columns::Vector{CSVColumn} asof::String end +CSVData(;locator = nothing, config = nothing, columns = Vector{CSVColumn}(), asof = "") = CSVData(locator, config, columns, asof) PB.default_values(::Type{CSVData}) = (;locator = nothing, config = nothing, columns = Vector{CSVColumn}(), asof = "") PB.field_numbers(::Type{CSVData}) = (;locator = 1, config = 2, columns = 3, asof = 4) @@ -1498,6 +1524,7 @@ struct Cast input::Union{Nothing,Term} result::Union{Nothing,Term} end +Cast(;input = nothing, result = nothing) = Cast(input, result) PB.default_values(::Type{Cast}) = (;input = nothing, result = nothing) PB.field_numbers(::Type{Cast}) = (;input = 2, result = 3) @@ -1534,6 +1561,7 @@ struct Pragma name::String terms::Vector{Term} end +Pragma(;name = "", terms = Vector{Term}()) = Pragma(name, terms) PB.default_values(::Type{Pragma}) = (;name = "", terms = Vector{Term}()) PB.field_numbers(::Type{Pragma}) = (;name = 1, terms = 2) @@ -1570,6 +1598,7 @@ struct Atom name::Union{Nothing,RelationId} terms::Vector{Term} end +Atom(;name = nothing, terms = Vector{Term}()) = Atom(name, terms) PB.default_values(::Type{Atom}) = (;name = nothing, terms = Vector{Term}()) PB.field_numbers(::Type{Atom}) = (;name = 1, terms = 2) @@ -1605,6 +1634,7 @@ end struct RelTerm rel_term_type::Union{Nothing,OneOf{<:Union{Value,Term}}} end +RelTerm(;rel_term_type = nothing) = RelTerm(rel_term_type) PB.oneof_field_types(::Type{RelTerm}) = (; rel_term_type = (;specialized_value=Value, term=Term), ) @@ -1650,6 +1680,7 @@ end struct Data data_type::Union{Nothing,OneOf{<:Union{RelEDB,BeTreeRelation,CSVData}}} end +Data(;data_type = nothing) = Data(data_type) PB.oneof_field_types(::Type{Data}) = (; data_type = (;rel_edb=RelEDB, betree_relation=BeTreeRelation, csv_data=CSVData), ) @@ -1702,6 +1733,7 @@ struct Primitive name::String terms::Vector{RelTerm} end +Primitive(;name = "", terms = Vector{RelTerm}()) = Primitive(name, terms) PB.default_values(::Type{Primitive}) = (;name = "", terms = Vector{RelTerm}()) PB.field_numbers(::Type{Primitive}) = (;name = 1, terms = 2) @@ -1738,6 +1770,7 @@ struct RelAtom name::String terms::Vector{RelTerm} end +RelAtom(;name = "", terms = Vector{RelTerm}()) = RelAtom(name, terms) PB.default_values(::Type{RelAtom}) = (;name = "", terms = Vector{RelTerm}()) PB.field_numbers(::Type{RelAtom}) = (;name = 3, terms = 2) @@ -1798,8 +1831,8 @@ struct var"##Stub#Conjunction"{T1<:var"##Abstract#Formula"} <: var"##Abstract#Co end struct var"##Stub#Constraint"{T1<:var"##Abstract#FunctionalDependency"} <: var"##Abstract#Constraint" - constraint_type::Union{Nothing,OneOf{T1}} name::Union{Nothing,RelationId} + constraint_type::Union{Nothing,OneOf{T1}} end struct var"##Stub#Def"{T1<:var"##Abstract#Formula"} <: var"##Abstract#Def" @@ -1887,6 +1920,7 @@ struct var"##Stub#Formula" <: var"##Abstract#Formula" end const Abstraction = var"##Stub#Abstraction"{var"##Stub#Formula"} +Abstraction(;vars = Vector{Binding}(), value = nothing) = Abstraction(vars, value) PB.default_values(::Type{Abstraction}) = (;vars = Vector{Binding}(), value = nothing) PB.field_numbers(::Type{Abstraction}) = (;vars = 1, value = 2) @@ -1920,6 +1954,7 @@ function PB._encoded_size(x::Abstraction) end const Algorithm = var"##Stub#Algorithm"{var"##Stub#Script"{var"##Stub#Construct"{var"##Stub#Loop"{var"##Stub#Instruction"{var"##Stub#Formula"}},var"##Stub#Instruction"{var"##Stub#Formula"}}}} +Algorithm(;var"#global" = Vector{RelationId}(), body = nothing) = Algorithm(var"#global", body) PB.default_values(::Type{Algorithm}) = (;var"#global" = Vector{RelationId}(), body = nothing) PB.field_numbers(::Type{Algorithm}) = (;var"#global" = 1, body = 2) @@ -1953,6 +1988,7 @@ function PB._encoded_size(x::Algorithm) end const Assign = var"##Stub#Assign"{var"##Stub#Formula"} +Assign(;name = nothing, body = nothing, attrs = Vector{Attribute}()) = Assign(name, body, attrs) PB.default_values(::Type{Assign}) = (;name = nothing, body = nothing, attrs = Vector{Attribute}()) PB.field_numbers(::Type{Assign}) = (;name = 1, body = 2, attrs = 3) @@ -1991,6 +2027,7 @@ function PB._encoded_size(x::Assign) end const Break = var"##Stub#Break"{var"##Stub#Formula"} +Break(;name = nothing, body = nothing, attrs = Vector{Attribute}()) = Break(name, body, attrs) PB.default_values(::Type{Break}) = (;name = nothing, body = nothing, attrs = Vector{Attribute}()) PB.field_numbers(::Type{Break}) = (;name = 1, body = 2, attrs = 3) @@ -2029,6 +2066,7 @@ function PB._encoded_size(x::Break) end const Conjunction = var"##Stub#Conjunction"{var"##Stub#Formula"} +Conjunction(;args = Vector{Formula}()) = Conjunction(args) PB.default_values(::Type{Conjunction}) = (;args = Vector{Formula}()) PB.field_numbers(::Type{Conjunction}) = (;args = 1) @@ -2057,48 +2095,50 @@ function PB._encoded_size(x::Conjunction) end const Constraint = var"##Stub#Constraint"{var"##Stub#FunctionalDependency"{var"##Stub#Formula"}} +Constraint(;name = nothing, constraint_type = nothing) = Constraint(name, constraint_type) PB.oneof_field_types(::Type{Constraint}) = (; constraint_type = (;functional_dependency=FunctionalDependency), ) -PB.default_values(::Type{Constraint}) = (;functional_dependency = nothing, name = nothing) -PB.field_numbers(::Type{Constraint}) = (;functional_dependency = 1, name = 2) +PB.default_values(::Type{Constraint}) = (;name = nothing, functional_dependency = nothing) +PB.field_numbers(::Type{Constraint}) = (;name = 2, functional_dependency = 1) function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:Constraint}) + name = Ref{Union{Nothing,RelationId}}(nothing) constraint_type = nothing - name = nothing while !PB.message_done(d) field_number, wire_type = PB.decode_tag(d) - if field_number == 1 + if field_number == 2 + PB.decode!(d, name) + elseif field_number == 1 constraint_type = OneOf(:functional_dependency, PB.decode(d, Ref{FunctionalDependency})) - elseif field_number == 2 - name = PB.decode(d, Ref{RelationId}) else Base.skip(d, wire_type) end end - return Constraint(constraint_type, name) + return Constraint(name[], constraint_type) end function PB.encode(e::PB.AbstractProtoEncoder, x::Constraint) initpos = position(e.io) + !isnothing(x.name) && PB.encode(e, 2, x.name) if isnothing(x.constraint_type); elseif x.constraint_type.name === :functional_dependency PB.encode(e, 1, x.constraint_type[]::FunctionalDependency) end - !isnothing(x.name) && PB.encode(e, 2, x.name::RelationId) return position(e.io) - initpos end function PB._encoded_size(x::Constraint) encoded_size = 0 + !isnothing(x.name) && (encoded_size += PB._encoded_size(x.name, 2)) if isnothing(x.constraint_type); elseif x.constraint_type.name === :functional_dependency encoded_size += PB._encoded_size(x.constraint_type[]::FunctionalDependency, 1) end - !isnothing(x.name) && (encoded_size += PB._encoded_size(x.name::RelationId, 2)) return encoded_size end const Def = var"##Stub#Def"{var"##Stub#Formula"} +Def(;name = nothing, body = nothing, attrs = Vector{Attribute}()) = Def(name, body, attrs) PB.default_values(::Type{Def}) = (;name = nothing, body = nothing, attrs = Vector{Attribute}()) PB.field_numbers(::Type{Def}) = (;name = 1, body = 2, attrs = 3) @@ -2137,6 +2177,7 @@ function PB._encoded_size(x::Def) end const Disjunction = var"##Stub#Disjunction"{var"##Stub#Formula"} +Disjunction(;args = Vector{Formula}()) = Disjunction(args) PB.default_values(::Type{Disjunction}) = (;args = Vector{Formula}()) PB.field_numbers(::Type{Disjunction}) = (;args = 1) @@ -2165,6 +2206,7 @@ function PB._encoded_size(x::Disjunction) end const Exists = var"##Stub#Exists"{var"##Stub#Formula"} +Exists(;body = nothing) = Exists(body) PB.default_values(::Type{Exists}) = (;body = nothing) PB.field_numbers(::Type{Exists}) = (;body = 3) @@ -2193,6 +2235,7 @@ function PB._encoded_size(x::Exists) end const FFI = var"##Stub#FFI"{var"##Stub#Formula"} +FFI(;name = "", args = Vector{Abstraction}(), terms = Vector{Term}()) = FFI(name, args, terms) PB.default_values(::Type{FFI}) = (;name = "", args = Vector{Abstraction}(), terms = Vector{Term}()) PB.field_numbers(::Type{FFI}) = (;name = 1, args = 2, terms = 3) @@ -2231,6 +2274,7 @@ function PB._encoded_size(x::FFI) end const FunctionalDependency = var"##Stub#FunctionalDependency"{var"##Stub#Formula"} +FunctionalDependency(;guard = nothing, keys = Vector{Var}(), values = Vector{Var}()) = FunctionalDependency(guard, keys, values) PB.default_values(::Type{FunctionalDependency}) = (;guard = nothing, keys = Vector{Var}(), values = Vector{Var}()) PB.field_numbers(::Type{FunctionalDependency}) = (;guard = 1, keys = 2, values = 3) @@ -2269,6 +2313,7 @@ function PB._encoded_size(x::FunctionalDependency) end const MonoidDef = var"##Stub#MonoidDef"{var"##Stub#Formula"} +MonoidDef(;monoid = nothing, name = nothing, body = nothing, attrs = Vector{Attribute}(), value_arity = zero(Int64)) = MonoidDef(monoid, name, body, attrs, value_arity) PB.default_values(::Type{MonoidDef}) = (;monoid = nothing, name = nothing, body = nothing, attrs = Vector{Attribute}(), value_arity = zero(Int64)) PB.field_numbers(::Type{MonoidDef}) = (;monoid = 1, name = 2, body = 3, attrs = 4, value_arity = 5) @@ -2317,6 +2362,7 @@ function PB._encoded_size(x::MonoidDef) end const MonusDef = var"##Stub#MonusDef"{var"##Stub#Formula"} +MonusDef(;monoid = nothing, name = nothing, body = nothing, attrs = Vector{Attribute}(), value_arity = zero(Int64)) = MonusDef(monoid, name, body, attrs, value_arity) PB.default_values(::Type{MonusDef}) = (;monoid = nothing, name = nothing, body = nothing, attrs = Vector{Attribute}(), value_arity = zero(Int64)) PB.field_numbers(::Type{MonusDef}) = (;monoid = 1, name = 2, body = 3, attrs = 4, value_arity = 5) @@ -2365,6 +2411,7 @@ function PB._encoded_size(x::MonusDef) end const Not = var"##Stub#Not"{var"##Stub#Formula"} +Not(;arg = nothing) = Not(arg) PB.default_values(::Type{Not}) = (;arg = nothing) PB.field_numbers(::Type{Not}) = (;arg = 1) @@ -2393,6 +2440,7 @@ function PB._encoded_size(x::Not) end const Reduce = var"##Stub#Reduce"{var"##Stub#Formula"} +Reduce(;op = nothing, body = nothing, terms = Vector{Term}()) = Reduce(op, body, terms) PB.default_values(::Type{Reduce}) = (;op = nothing, body = nothing, terms = Vector{Term}()) PB.field_numbers(::Type{Reduce}) = (;op = 1, body = 2, terms = 3) @@ -2431,6 +2479,7 @@ function PB._encoded_size(x::Reduce) end const Script = var"##Stub#Script"{var"##Stub#Construct"{var"##Stub#Loop"{var"##Stub#Instruction"{var"##Stub#Formula"}},var"##Stub#Instruction"{var"##Stub#Formula"}}} +Script(;constructs = Vector{Construct}()) = Script(constructs) PB.default_values(::Type{Script}) = (;constructs = Vector{Construct}()) PB.field_numbers(::Type{Script}) = (;constructs = 1) @@ -2459,6 +2508,7 @@ function PB._encoded_size(x::Script) end const Upsert = var"##Stub#Upsert"{var"##Stub#Formula"} +Upsert(;name = nothing, body = nothing, attrs = Vector{Attribute}(), value_arity = zero(Int64)) = Upsert(name, body, attrs, value_arity) PB.default_values(::Type{Upsert}) = (;name = nothing, body = nothing, attrs = Vector{Attribute}(), value_arity = zero(Int64)) PB.field_numbers(::Type{Upsert}) = (;name = 1, body = 2, attrs = 3, value_arity = 4) @@ -2502,6 +2552,7 @@ function PB._encoded_size(x::Upsert) end const Construct = var"##Stub#Construct"{var"##Stub#Loop"{var"##Stub#Instruction"{var"##Stub#Formula"}},var"##Stub#Instruction"{var"##Stub#Formula"}} +Construct(;construct_type = nothing) = Construct(construct_type) PB.oneof_field_types(::Type{Construct}) = (; construct_type = (;loop=Loop, instruction=Instruction), ) @@ -2545,6 +2596,7 @@ function PB._encoded_size(x::Construct) end const Loop = var"##Stub#Loop"{var"##Stub#Instruction"{var"##Stub#Formula"}} +Loop(;init = Vector{Instruction}(), body = nothing) = Loop(init, body) PB.default_values(::Type{Loop}) = (;init = Vector{Instruction}(), body = nothing) PB.field_numbers(::Type{Loop}) = (;init = 1, body = 2) @@ -2578,6 +2630,7 @@ function PB._encoded_size(x::Loop) end const Declaration = var"##Stub#Declaration"{var"##Stub#Formula",var"##Stub#Instruction"{var"##Stub#Formula"}} +Declaration(;declaration_type = nothing) = Declaration(declaration_type) PB.oneof_field_types(::Type{Declaration}) = (; declaration_type = (;def=Def, algorithm=Algorithm, constraint=Constraint, data=Data), ) @@ -2633,6 +2686,7 @@ function PB._encoded_size(x::Declaration) end const Instruction = var"##Stub#Instruction"{var"##Stub#Formula"} +Instruction(;instr_type = nothing) = Instruction(instr_type) PB.reserved_fields(::Type{Instruction}) = (names = String[], numbers = Union{Int,UnitRange{Int}}[4]) PB.oneof_field_types(::Type{Instruction}) = (; instr_type = (;assign=Assign, upsert=Upsert, var"#break"=Break, monoid_def=MonoidDef, monus_def=MonusDef), @@ -2695,6 +2749,7 @@ function PB._encoded_size(x::Instruction) end const Formula = var"##Stub#Formula" +Formula(;formula_type = nothing) = Formula(formula_type) PB.oneof_field_types(::Type{Formula}) = (; formula_type = (;exists=Exists, reduce=Reduce, conjunction=Conjunction, disjunction=Disjunction, not=Not, ffi=FFI, atom=Atom, pragma=Pragma, primitive=Primitive, rel_atom=RelAtom, cast=Cast), ) diff --git a/julia/LQPParser/src/relationalai/lqp/v1/transactions_pb.jl b/julia/LQPParser/src/relationalai/lqp/v1/transactions_pb.jl index c6c13635..5f91639f 100644 --- a/julia/LQPParser/src/relationalai/lqp/v1/transactions_pb.jl +++ b/julia/LQPParser/src/relationalai/lqp/v1/transactions_pb.jl @@ -1,13 +1,13 @@ -# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-01-15T19:26:09.335 -# original file: /Users/nystrom/rai/nn-meta-4-parser-gen/proto/relationalai/lqp/v1/transactions.proto (proto3 syntax) +# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-02-11T12:34:20.995 +# original file: /home/berkay/logical-query-protocol/proto/relationalai/lqp/v1/transactions.proto (proto3 syntax) import ProtoBuf as PB using ProtoBuf: OneOf using ProtoBuf.EnumX: @enumx -export ExportCSVColumn, Demand, Undefine, MaintenanceLevel, Define, Context, Sync, Abort -export Output, ExportCSVConfig, IVMConfig, Write, Export, Configure, Epoch, Read -export Transaction, WhatIf +export ExportCSVColumn, Demand, OptimizationLevel, Undefine, MaintenanceLevel, Define +export Context, Sync, Abort, Output, ExportCSVConfig, IVMConfig, Write, Export, Configure +export Epoch, Read, Transaction, WhatIf abstract type var"##Abstract#Transaction" end abstract type var"##Abstract#Epoch" end abstract type var"##Abstract#Read" end @@ -18,6 +18,7 @@ struct ExportCSVColumn column_name::String column_data::Union{Nothing,RelationId} end +ExportCSVColumn(;column_name = "", column_data = nothing) = ExportCSVColumn(column_name, column_data) PB.default_values(::Type{ExportCSVColumn}) = (;column_name = "", column_data = nothing) PB.field_numbers(::Type{ExportCSVColumn}) = (;column_name = 1, column_data = 2) @@ -53,6 +54,7 @@ end struct Demand relation_id::Union{Nothing,RelationId} end +Demand(;relation_id = nothing) = Demand(relation_id) PB.default_values(::Type{Demand}) = (;relation_id = nothing) PB.field_numbers(::Type{Demand}) = (;relation_id = 1) @@ -80,9 +82,12 @@ function PB._encoded_size(x::Demand) return encoded_size end +@enumx OptimizationLevel OPTIMIZATION_LEVEL_UNSPECIFIED=0 OPTIMIZATION_LEVEL_DEFAULT=1 OPTIMIZATION_LEVEL_CONSERVATIVE=2 OPTIMIZATION_LEVEL_AGGRESSIVE=3 + struct Undefine fragment_id::Union{Nothing,FragmentId} end +Undefine(;fragment_id = nothing) = Undefine(fragment_id) PB.default_values(::Type{Undefine}) = (;fragment_id = nothing) PB.field_numbers(::Type{Undefine}) = (;fragment_id = 1) @@ -115,6 +120,7 @@ end struct Define fragment::Union{Nothing,Fragment} end +Define(;fragment = nothing) = Define(fragment) PB.default_values(::Type{Define}) = (;fragment = nothing) PB.field_numbers(::Type{Define}) = (;fragment = 1) @@ -145,6 +151,7 @@ end struct Context relations::Vector{RelationId} end +Context(;relations = Vector{RelationId}()) = Context(relations) PB.default_values(::Type{Context}) = (;relations = Vector{RelationId}()) PB.field_numbers(::Type{Context}) = (;relations = 1) @@ -175,6 +182,7 @@ end struct Sync fragments::Vector{FragmentId} end +Sync(;fragments = Vector{FragmentId}()) = Sync(fragments) PB.default_values(::Type{Sync}) = (;fragments = Vector{FragmentId}()) PB.field_numbers(::Type{Sync}) = (;fragments = 1) @@ -206,6 +214,7 @@ struct Abort name::String relation_id::Union{Nothing,RelationId} end +Abort(;name = "", relation_id = nothing) = Abort(name, relation_id) PB.default_values(::Type{Abort}) = (;name = "", relation_id = nothing) PB.field_numbers(::Type{Abort}) = (;name = 1, relation_id = 2) @@ -242,6 +251,7 @@ struct Output name::String relation_id::Union{Nothing,RelationId} end +Output(;name = "", relation_id = nothing) = Output(name, relation_id) PB.default_values(::Type{Output}) = (;name = "", relation_id = nothing) PB.field_numbers(::Type{Output}) = (;name = 1, relation_id = 2) @@ -285,6 +295,7 @@ struct ExportCSVConfig syntax_quotechar::String syntax_escapechar::String end +ExportCSVConfig(;path = "", data_columns = Vector{ExportCSVColumn}(), partition_size = zero(Int64), compression = "", syntax_header_row = false, syntax_missing_string = "", syntax_delim = "", syntax_quotechar = "", syntax_escapechar = "") = ExportCSVConfig(path, data_columns, partition_size, compression, syntax_header_row, syntax_missing_string, syntax_delim, syntax_quotechar, syntax_escapechar) PB.default_values(::Type{ExportCSVConfig}) = (;path = "", data_columns = Vector{ExportCSVColumn}(), partition_size = zero(Int64), compression = "", syntax_header_row = false, syntax_missing_string = "", syntax_delim = "", syntax_quotechar = "", syntax_escapechar = "") PB.field_numbers(::Type{ExportCSVConfig}) = (;path = 1, data_columns = 2, partition_size = 3, compression = 4, syntax_header_row = 5, syntax_missing_string = 6, syntax_delim = 7, syntax_quotechar = 8, syntax_escapechar = 9) @@ -355,6 +366,7 @@ end struct IVMConfig level::MaintenanceLevel.T end +IVMConfig(;level = MaintenanceLevel.MAINTENANCE_LEVEL_UNSPECIFIED) = IVMConfig(level) PB.default_values(::Type{IVMConfig}) = (;level = MaintenanceLevel.MAINTENANCE_LEVEL_UNSPECIFIED) PB.field_numbers(::Type{IVMConfig}) = (;level = 1) @@ -385,6 +397,7 @@ end struct Write write_type::Union{Nothing,OneOf{<:Union{Define,Undefine,Context}}} end +Write(;write_type = nothing) = Write(write_type) PB.reserved_fields(::Type{Write}) = (names = String[], numbers = Union{Int,UnitRange{Int}}[4]) PB.oneof_field_types(::Type{Write}) = (; write_type = (;define=Define, undefine=Undefine, context=Context), @@ -437,6 +450,7 @@ end struct Export export_config::Union{Nothing,OneOf{ExportCSVConfig}} end +Export(;export_config = nothing) = Export(export_config) PB.oneof_field_types(::Type{Export}) = (; export_config = (;csv_config=ExportCSVConfig), ) @@ -476,36 +490,43 @@ end struct Configure semantics_version::Int64 ivm_config::Union{Nothing,IVMConfig} + optimization_level::OptimizationLevel.T end -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, optimization_level = OptimizationLevel.OPTIMIZATION_LEVEL_UNSPECIFIED) = Configure(semantics_version, ivm_config, optimization_level) +PB.default_values(::Type{Configure}) = (;semantics_version = zero(Int64), ivm_config = nothing, optimization_level = OptimizationLevel.OPTIMIZATION_LEVEL_UNSPECIFIED) +PB.field_numbers(::Type{Configure}) = (;semantics_version = 1, ivm_config = 2, optimization_level = 3) function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:Configure}) semantics_version = zero(Int64) ivm_config = Ref{Union{Nothing,IVMConfig}}(nothing) + optimization_level = OptimizationLevel.OPTIMIZATION_LEVEL_UNSPECIFIED while !PB.message_done(d) 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 + optimization_level = PB.decode(d, OptimizationLevel.T) else Base.skip(d, wire_type) end end - return Configure(semantics_version, ivm_config[]) + return Configure(semantics_version, ivm_config[], optimization_level) 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) + x.optimization_level != OptimizationLevel.OPTIMIZATION_LEVEL_UNSPECIFIED && PB.encode(e, 3, x.optimization_level) 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)) + x.optimization_level != OptimizationLevel.OPTIMIZATION_LEVEL_UNSPECIFIED && (encoded_size += PB._encoded_size(x.optimization_level, 3)) return encoded_size end @@ -531,6 +552,7 @@ struct var"##Stub#WhatIf" <: var"##Abstract#WhatIf" end const Epoch = var"##Stub#Epoch"{var"##Stub#Read"{var"##Stub#WhatIf"}} +Epoch(;writes = Vector{Write}(), reads = Vector{Read}()) = Epoch(writes, reads) PB.default_values(::Type{Epoch}) = (;writes = Vector{Write}(), reads = Vector{Read}()) PB.field_numbers(::Type{Epoch}) = (;writes = 1, reads = 2) @@ -564,6 +586,7 @@ function PB._encoded_size(x::Epoch) end const Read = var"##Stub#Read"{var"##Stub#WhatIf"} +Read(;read_type = nothing) = Read(read_type) PB.oneof_field_types(::Type{Read}) = (; read_type = (;demand=Demand, output=Output, what_if=WhatIf, abort=Abort, var"#export"=Export), ) @@ -625,6 +648,7 @@ function PB._encoded_size(x::Read) end const Transaction = var"##Stub#Transaction"{var"##Stub#WhatIf"} +Transaction(;epochs = Vector{Epoch}(), configure = nothing, sync = nothing) = Transaction(epochs, configure, sync) PB.default_values(::Type{Transaction}) = (;epochs = Vector{Epoch}(), configure = nothing, sync = nothing) PB.field_numbers(::Type{Transaction}) = (;epochs = 1, configure = 2, sync = 3) @@ -663,6 +687,7 @@ function PB._encoded_size(x::Transaction) end const WhatIf = var"##Stub#WhatIf" +WhatIf(;branch = "", epoch = nothing) = WhatIf(branch, epoch) PB.default_values(::Type{WhatIf}) = (;branch = "", epoch = nothing) PB.field_numbers(::Type{WhatIf}) = (;branch = 1, epoch = 2) From 44bc10e9994a1155899115ccd76ffb41c70734d6 Mon Sep 17 00:00:00 2001 From: aydogduberkay Date: Wed, 11 Feb 2026 13:32:17 +0100 Subject: [PATCH 3/4] more fixes --- go/src/print.go | 6 ++++++ python-tools/src/lqp/emit.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/go/src/print.go b/go/src/print.go index 7a57fe2a..e5026e31 100644 --- a/go/src/print.go +++ b/go/src/print.go @@ -140,6 +140,12 @@ func (pp PrettyParams) pprint(node interface{}) { levelStr = strings.ToLower(strings.TrimPrefix(levelStr, "MAINTENANCE_LEVEL_")) configDict["ivm.maintenance_level"] = levelStr } + optimization_level := n.GetOptimizationLevel() + if optimization_level != pb.OptimizationLevel_OPTIMIZATION_LEVEL_UNSPECIFIED{ + levelStr := optimization_level.String() + levelStr = strings.ToLower(strings.TrimPrefix(levelStr, "OPTIMIZATION_LEVEL_")) + configDict["optimization_level"] = levelStr + } } pp.PARENS(func(pp PrettyParams) { pp.Write("configure") diff --git a/python-tools/src/lqp/emit.py b/python-tools/src/lqp/emit.py index 62230c4e..5b0949c5 100644 --- a/python-tools/src/lqp/emit.py +++ b/python-tools/src/lqp/emit.py @@ -544,7 +544,7 @@ def convert_maintenance_level(l: ir.MaintenanceLevel) -> transactions_pb2.Mainte return transactions_pb2.MaintenanceLevel.Name(l.value) # type: ignore[missing-attribute] def convert_optimization_level(o: ir.OptimizationLevel) -> transactions_pb2.OptimizationLevel: - return transactions_pb2.OptimizationLevel.Name(o.value) + return transactions_pb2.OptimizationLevel.Name(o.value) # type: ignore[missing-attribute] def convert_sync(c: ir.Sync) -> transactions_pb2.Sync: return transactions_pb2.Sync(fragments=[convert_fragment_id(rid) for rid in c.fragments]) From d82503c0c589329cd6e77c61abb6118b9af74ff1 Mon Sep 17 00:00:00 2001 From: aydogduberkay Date: Wed, 11 Feb 2026 13:45:00 +0100 Subject: [PATCH 4/4] fix after merge --- julia/LQPParser/src/parser.jl | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/julia/LQPParser/src/parser.jl b/julia/LQPParser/src/parser.jl index f866273b..04bc24e5 100644 --- a/julia/LQPParser/src/parser.jl +++ b/julia/LQPParser/src/parser.jl @@ -2881,10 +2881,7 @@ function parse_constraint(parser::Parser)::Proto.Constraint functional_dependency_values260 = _t850 consume_literal!(parser, ")") _t851 = Proto.FunctionalDependency(abstraction258, functional_dependency_keys259, functional_dependency_values260) - _t852 = Proto.Constraint(OneOf(:functional_dependency, _t851), relation_id257) - # TODO: This was changed manually - the generated code mixed the two inputs which lead to an error. - # original line is below - # _t852 = Proto.Constraint(relation_id257, OneOf(:functional_dependency, _t851)) + _t852 = Proto.Constraint(relation_id257, OneOf(:functional_dependency, _t851)) return _t852 end