diff --git a/go/src/lqp/v1/transactions.pb.go b/go/src/lqp/v1/transactions.pb.go index 9bdf2e11..702bf64c 100644 --- a/go/src/lqp/v1/transactions.pb.go +++ b/go/src/lqp/v1/transactions.pb.go @@ -715,6 +715,114 @@ func (x *ExportCSVColumn) GetColumnData() *RelationId { return nil } +type ExportCSVTableConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + TableDef *RelationId `protobuf:"bytes,2,opt,name=table_def,json=tableDef,proto3" json:"table_def,omitempty"` + PartitionSize *int64 `protobuf:"varint,3,opt,name=partition_size,json=partitionSize,proto3,oneof" json:"partition_size,omitempty"` + Compression *string `protobuf:"bytes,4,opt,name=compression,proto3,oneof" json:"compression,omitempty"` + SyntaxHeaderRow *bool `protobuf:"varint,5,opt,name=syntax_header_row,json=syntaxHeaderRow,proto3,oneof" json:"syntax_header_row,omitempty"` + SyntaxMissingString *string `protobuf:"bytes,6,opt,name=syntax_missing_string,json=syntaxMissingString,proto3,oneof" json:"syntax_missing_string,omitempty"` + SyntaxDelim *string `protobuf:"bytes,7,opt,name=syntax_delim,json=syntaxDelim,proto3,oneof" json:"syntax_delim,omitempty"` + SyntaxQuotechar *string `protobuf:"bytes,8,opt,name=syntax_quotechar,json=syntaxQuotechar,proto3,oneof" json:"syntax_quotechar,omitempty"` + SyntaxEscapechar *string `protobuf:"bytes,9,opt,name=syntax_escapechar,json=syntaxEscapechar,proto3,oneof" json:"syntax_escapechar,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExportCSVTableConfig) Reset() { + *x = ExportCSVTableConfig{} + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExportCSVTableConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExportCSVTableConfig) ProtoMessage() {} + +func (x *ExportCSVTableConfig) ProtoReflect() protoreflect.Message { + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExportCSVTableConfig.ProtoReflect.Descriptor instead. +func (*ExportCSVTableConfig) Descriptor() ([]byte, []int) { + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{11} +} + +func (x *ExportCSVTableConfig) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *ExportCSVTableConfig) GetTableDef() *RelationId { + if x != nil { + return x.TableDef + } + return nil +} + +func (x *ExportCSVTableConfig) GetPartitionSize() int64 { + if x != nil && x.PartitionSize != nil { + return *x.PartitionSize + } + return 0 +} + +func (x *ExportCSVTableConfig) GetCompression() string { + if x != nil && x.Compression != nil { + return *x.Compression + } + return "" +} + +func (x *ExportCSVTableConfig) GetSyntaxHeaderRow() bool { + if x != nil && x.SyntaxHeaderRow != nil { + return *x.SyntaxHeaderRow + } + return false +} + +func (x *ExportCSVTableConfig) GetSyntaxMissingString() string { + if x != nil && x.SyntaxMissingString != nil { + return *x.SyntaxMissingString + } + return "" +} + +func (x *ExportCSVTableConfig) GetSyntaxDelim() string { + if x != nil && x.SyntaxDelim != nil { + return *x.SyntaxDelim + } + return "" +} + +func (x *ExportCSVTableConfig) GetSyntaxQuotechar() string { + if x != nil && x.SyntaxQuotechar != nil { + return *x.SyntaxQuotechar + } + return "" +} + +func (x *ExportCSVTableConfig) GetSyntaxEscapechar() string { + if x != nil && x.SyntaxEscapechar != nil { + return *x.SyntaxEscapechar + } + return "" +} + type Read struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to ReadType: @@ -731,7 +839,7 @@ type Read struct { func (x *Read) Reset() { *x = Read{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -743,7 +851,7 @@ func (x *Read) String() string { func (*Read) ProtoMessage() {} func (x *Read) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[11] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -756,7 +864,7 @@ func (x *Read) ProtoReflect() protoreflect.Message { // Deprecated: Use Read.ProtoReflect.Descriptor instead. func (*Read) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{11} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{12} } func (x *Read) GetReadType() isRead_ReadType { @@ -854,7 +962,7 @@ type Demand struct { func (x *Demand) Reset() { *x = Demand{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -866,7 +974,7 @@ func (x *Demand) String() string { func (*Demand) ProtoMessage() {} func (x *Demand) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[12] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -879,7 +987,7 @@ func (x *Demand) ProtoReflect() protoreflect.Message { // Deprecated: Use Demand.ProtoReflect.Descriptor instead. func (*Demand) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{12} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{13} } func (x *Demand) GetRelationId() *RelationId { @@ -899,7 +1007,7 @@ type Output struct { func (x *Output) Reset() { *x = Output{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -911,7 +1019,7 @@ func (x *Output) String() string { func (*Output) ProtoMessage() {} func (x *Output) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[13] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -924,7 +1032,7 @@ func (x *Output) ProtoReflect() protoreflect.Message { // Deprecated: Use Output.ProtoReflect.Descriptor instead. func (*Output) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{13} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{14} } func (x *Output) GetName() string { @@ -946,6 +1054,7 @@ type Export struct { // Types that are valid to be assigned to ExportConfig: // // *Export_CsvConfig + // *Export_CsvTableConfig ExportConfig isExport_ExportConfig `protobuf_oneof:"export_config"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -953,7 +1062,7 @@ type Export struct { func (x *Export) Reset() { *x = Export{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -965,7 +1074,7 @@ func (x *Export) String() string { func (*Export) ProtoMessage() {} func (x *Export) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[14] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -978,7 +1087,7 @@ func (x *Export) ProtoReflect() protoreflect.Message { // Deprecated: Use Export.ProtoReflect.Descriptor instead. func (*Export) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{14} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{15} } func (x *Export) GetExportConfig() isExport_ExportConfig { @@ -997,6 +1106,15 @@ func (x *Export) GetCsvConfig() *ExportCSVConfig { return nil } +func (x *Export) GetCsvTableConfig() *ExportCSVTableConfig { + if x != nil { + if x, ok := x.ExportConfig.(*Export_CsvTableConfig); ok { + return x.CsvTableConfig + } + } + return nil +} + type isExport_ExportConfig interface { isExport_ExportConfig() } @@ -1005,8 +1123,14 @@ type Export_CsvConfig struct { CsvConfig *ExportCSVConfig `protobuf:"bytes,1,opt,name=csv_config,json=csvConfig,proto3,oneof"` } +type Export_CsvTableConfig struct { + CsvTableConfig *ExportCSVTableConfig `protobuf:"bytes,2,opt,name=csv_table_config,json=csvTableConfig,proto3,oneof"` +} + func (*Export_CsvConfig) isExport_ExportConfig() {} +func (*Export_CsvTableConfig) isExport_ExportConfig() {} + type WhatIf struct { state protoimpl.MessageState `protogen:"open.v1"` Branch string `protobuf:"bytes,1,opt,name=branch,proto3" json:"branch,omitempty"` @@ -1017,7 +1141,7 @@ type WhatIf struct { func (x *WhatIf) Reset() { *x = WhatIf{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1029,7 +1153,7 @@ func (x *WhatIf) String() string { func (*WhatIf) ProtoMessage() {} func (x *WhatIf) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[15] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1042,7 +1166,7 @@ func (x *WhatIf) ProtoReflect() protoreflect.Message { // Deprecated: Use WhatIf.ProtoReflect.Descriptor instead. func (*WhatIf) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{15} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{16} } func (x *WhatIf) GetBranch() string { @@ -1069,7 +1193,7 @@ type Abort struct { func (x *Abort) Reset() { *x = Abort{} - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1081,7 +1205,7 @@ func (x *Abort) String() string { func (*Abort) ProtoMessage() {} func (x *Abort) ProtoReflect() protoreflect.Message { - mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[16] + mi := &file_relationalai_lqp_v1_transactions_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1094,7 +1218,7 @@ func (x *Abort) ProtoReflect() protoreflect.Message { // Deprecated: Use Abort.ProtoReflect.Descriptor instead. func (*Abort) Descriptor() ([]byte, []int) { - return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{16} + return file_relationalai_lqp_v1_transactions_proto_rawDescGZIP(), []int{17} } func (x *Abort) GetName() string { @@ -1228,64 +1352,106 @@ var file_relationalai_lqp_v1_transactions_proto_rawDesc = string([]byte{ 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, + 0x22, 0xbe, 0x04, 0x0a, 0x14, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, 0x54, 0x61, + 0x62, 0x6c, 0x65, 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, 0x3c, 0x0a, + 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, + 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x66, 0x12, 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, 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, - 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x06, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x64, - 0x12, 0x35, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, - 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x48, 0x00, 0x52, - 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x77, 0x68, 0x61, 0x74, 0x5f, - 0x69, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x57, - 0x68, 0x61, 0x74, 0x49, 0x66, 0x48, 0x00, 0x52, 0x06, 0x77, 0x68, 0x61, 0x74, 0x49, 0x66, 0x12, - 0x32, 0x0a, 0x05, 0x61, 0x62, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, - 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x05, 0x61, 0x62, - 0x6f, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 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, 0xb7, 0x01, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, + 0x45, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, - 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, + 0x43, 0x53, 0x56, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 0x63, 0x73, 0x76, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x55, 0x0a, 0x10, 0x63, 0x73, 0x76, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, + 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x53, 0x56, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0e, 0x63, + 0x73, 0x76, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x0f, 0x0a, + 0x0d, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x52, + 0x0a, 0x06, 0x57, 0x68, 0x61, 0x74, 0x49, 0x66, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x12, 0x30, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x61, 0x69, 0x2e, 0x6c, + 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x52, 0x05, 0x65, 0x70, 0x6f, + 0x63, 0x68, 0x22, 0x5d, 0x0a, 0x05, 0x41, 0x62, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x40, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x61, 0x69, 0x2e, 0x6c, 0x71, 0x70, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x2a, 0x87, 0x01, 0x0a, 0x10, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, + 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x1d, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, + 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, + 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, + 0x46, 0x46, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, + 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, - 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4d, - 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, - 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x49, 0x4e, 0x54, - 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x41, 0x4c, 0x4c, - 0x10, 0x03, 0x42, 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, + 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, }) var ( @@ -1301,29 +1467,30 @@ func file_relationalai_lqp_v1_transactions_proto_rawDescGZIP() []byte { } var file_relationalai_lqp_v1_transactions_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_relationalai_lqp_v1_transactions_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_relationalai_lqp_v1_transactions_proto_msgTypes = make([]protoimpl.MessageInfo, 18) 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 + (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 + (*ExportCSVTableConfig)(nil), // 12: relationalai.lqp.v1.ExportCSVTableConfig + (*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 @@ -1331,32 +1498,34 @@ var file_relationalai_lqp_v1_transactions_proto_depIdxs = []int32{ 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 + 19, // 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 + 13, // 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 + 20, // 11: relationalai.lqp.v1.Define.fragment:type_name -> relationalai.lqp.v1.Fragment + 19, // 12: relationalai.lqp.v1.Undefine.fragment_id:type_name -> relationalai.lqp.v1.FragmentId + 21, // 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 + 21, // 15: relationalai.lqp.v1.ExportCSVColumn.column_data:type_name -> relationalai.lqp.v1.RelationId + 21, // 16: relationalai.lqp.v1.ExportCSVTableConfig.table_def: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 + 10, // 24: relationalai.lqp.v1.Export.csv_config:type_name -> relationalai.lqp.v1.ExportCSVConfig + 12, // 25: relationalai.lqp.v1.Export.csv_table_config:type_name -> relationalai.lqp.v1.ExportCSVTableConfig + 5, // 26: relationalai.lqp.v1.WhatIf.epoch:type_name -> relationalai.lqp.v1.Epoch + 21, // 27: relationalai.lqp.v1.Abort.relation_id:type_name -> relationalai.lqp.v1.RelationId + 28, // [28:28] is the sub-list for method output_type + 28, // [28:28] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_relationalai_lqp_v1_transactions_proto_init() } @@ -1373,15 +1542,17 @@ func file_relationalai_lqp_v1_transactions_proto_init() { (*Write_Context)(nil), } file_relationalai_lqp_v1_transactions_proto_msgTypes[9].OneofWrappers = []any{} - file_relationalai_lqp_v1_transactions_proto_msgTypes[11].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[11].OneofWrappers = []any{} + file_relationalai_lqp_v1_transactions_proto_msgTypes[12].OneofWrappers = []any{ (*Read_Demand)(nil), (*Read_Output)(nil), (*Read_WhatIf)(nil), (*Read_Abort)(nil), (*Read_Export)(nil), } - file_relationalai_lqp_v1_transactions_proto_msgTypes[14].OneofWrappers = []any{ + file_relationalai_lqp_v1_transactions_proto_msgTypes[15].OneofWrappers = []any{ (*Export_CsvConfig)(nil), + (*Export_CsvTableConfig)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -1389,7 +1560,7 @@ func file_relationalai_lqp_v1_transactions_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_relationalai_lqp_v1_transactions_proto_rawDesc), len(file_relationalai_lqp_v1_transactions_proto_rawDesc)), NumEnums: 1, - NumMessages: 17, + NumMessages: 18, NumExtensions: 0, NumServices: 0, }, diff --git a/go/src/print.go b/go/src/print.go index 7a57fe2a..dd704d23 100644 --- a/go/src/print.go +++ b/go/src/print.go @@ -997,7 +997,13 @@ func (pp PrettyParams) pprint(node interface{}) { pp.PARENS(func(pp PrettyParams) { pp.Write("export") pp.NEWLINE() - pp.INDENT(2, func(pp PrettyParams) { pp.pprint(export.GetCsvConfig()) }) + pp.INDENT(2, func(pp PrettyParams) { + if csvConfig := export.GetCsvConfig(); csvConfig != nil { + pp.pprint(csvConfig) + } else if csvTableConfig := export.GetCsvTableConfig(); csvTableConfig != nil { + pp.pprint(csvTableConfig) + } + }) }) } else if whatIf := n.GetWhatIf(); whatIf != nil { pp.PARENS(func(pp PrettyParams) { @@ -1063,6 +1069,35 @@ func (pp PrettyParams) pprint(node interface{}) { pp.pprint(n.GetColumnData()) }) + case *pb.ExportCSVTableConfig: + pp.PARENS(func(pp PrettyParams) { + pp.Write("export_csv_table_config") + pp.NEWLINE() + pp.INDENT(2, func(pp PrettyParams) { + pp.PARENS(func(pp PrettyParams) { + pp.Write("path") + pp.SPACE() + pp.pprint(n.GetPath()) + }) + pp.NEWLINE() + pp.pprint(n.GetTableDef()) + pp.NEWLINE() + configDict := make(map[string]interface{}) + configDict["partition_size"] = n.GetPartitionSize() + configDict["compression"] = n.GetCompression() + if n.GetSyntaxHeaderRow() { + configDict["syntax_header_row"] = 1 + } else { + configDict["syntax_header_row"] = 0 + } + configDict["syntax_missing_string"] = n.GetSyntaxMissingString() + configDict["syntax_delim"] = n.GetSyntaxDelim() + configDict["syntax_quotechar"] = n.GetSyntaxQuotechar() + configDict["syntax_escapechar"] = n.GetSyntaxEscapechar() + pp.configDictToStr(configDict) + }) + }) + case *pb.Epoch: pp.PARENS(func(pp PrettyParams) { pp.Write("epoch") diff --git a/proto/Manifest.toml b/proto/Manifest.toml new file mode 100644 index 00000000..0dd6292a --- /dev/null +++ b/proto/Manifest.toml @@ -0,0 +1,7 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.10.4" +manifest_format = "2.0" +project_hash = "da39a3ee5e6b4b0d3255bfef95601890afd80709" + +[deps] diff --git a/proto/Project.toml b/proto/Project.toml new file mode 100644 index 00000000..81648c0b --- /dev/null +++ b/proto/Project.toml @@ -0,0 +1 @@ +[deps] diff --git a/proto/relationalai/lqp/v1/transactions.proto b/proto/relationalai/lqp/v1/transactions.proto index ff921bef..7b5d81b5 100644 --- a/proto/relationalai/lqp/v1/transactions.proto +++ b/proto/relationalai/lqp/v1/transactions.proto @@ -87,6 +87,21 @@ message ExportCSVColumn { RelationId column_data = 2; } +message ExportCSVTableConfig { + string path = 1; + RelationId table_def = 2; + + optional int64 partition_size = 3; + optional string compression = 4; + optional bool syntax_header_row = 5; + optional string syntax_missing_string = 6; + optional string syntax_delim = 7; + optional string syntax_quotechar = 8; + optional string syntax_escapechar = 9; + + // TODO: support data integration options, e.g., private tokens for private buckets etc. +} + // // Read operations // @@ -113,6 +128,7 @@ message Output { message Export { oneof export_config { ExportCSVConfig csv_config = 1; + ExportCSVTableConfig csv_table_config = 2; // TODO: support JSON export } diff --git a/python-tools/src/lqp/emit.py b/python-tools/src/lqp/emit.py index 6159c050..5221641a 100644 --- a/python-tools/src/lqp/emit.py +++ b/python-tools/src/lqp/emit.py @@ -474,7 +474,12 @@ def convert_output(o: ir.Output) -> transactions_pb2.Output: return transactions_pb2.Output(**kwargs) # type: ignore def convert_export(e: ir.Export) -> transactions_pb2.Export: - return transactions_pb2.Export(csv_config=convert_export_config(e.config)) # type: ignore + if isinstance(e.config, ir.ExportCSVConfig): + return transactions_pb2.Export(csv_config=convert_export_config(e.config)) # type: ignore + elif isinstance(e.config, ir.ExportCSVTableConfig): + return transactions_pb2.Export(csv_table_config=convert_export_table_config(e.config)) # type: ignore + else: + raise ValueError(f"Unknown export config type: {type(e.config)}") def convert_export_config(ec: ir.ExportCSVConfig) -> transactions_pb2.ExportCSVConfig: return transactions_pb2.ExportCSVConfig( @@ -489,6 +494,19 @@ def convert_export_config(ec: ir.ExportCSVConfig) -> transactions_pb2.ExportCSVC syntax_escapechar=ec.syntax_escapechar if ec.syntax_escapechar is not None else '\\' ) +def convert_export_table_config(ec: ir.ExportCSVTableConfig) -> transactions_pb2.ExportCSVTableConfig: + return transactions_pb2.ExportCSVTableConfig( + table_def=convert_relation_id(ec.table_def), + path=ec.path, + partition_size=ec.partition_size if ec.partition_size is not None else 0, + compression=ec.compression if ec.compression is not None else "", + syntax_header_row=ec.syntax_header_row if ec.syntax_header_row is not None else True, # type: ignore + syntax_missing_string=ec.syntax_missing_string if ec.syntax_missing_string is not None else "", + syntax_delim=ec.syntax_delim if ec.syntax_delim is not None else ",", + syntax_quotechar=ec.syntax_quotechar if ec.syntax_quotechar is not None else '"', + syntax_escapechar=ec.syntax_escapechar if ec.syntax_escapechar is not None else '\\' + ) + def convert_export_csv_column(ec: ir.ExportCSVColumn) -> transactions_pb2.ExportCSVColumn: return transactions_pb2.ExportCSVColumn( column_name=ec.column_name, diff --git a/python-tools/src/lqp/ir.py b/python-tools/src/lqp/ir.py index 4920a412..a34879f0 100644 --- a/python-tools/src/lqp/ir.py +++ b/python-tools/src/lqp/ir.py @@ -492,11 +492,25 @@ class ExportCSVColumn(LqpNode): column_name: str column_data: RelationId +# ExportCSVTableConfig +@dataclass(frozen=True) +class ExportCSVTableConfig(LqpNode): + path: str + table_def: RelationId + partition_size: Optional[int] = None + compression: Optional[str] = None + + syntax_header_row: Optional[int] = None + syntax_missing_string: Optional[str] = None + syntax_delim: Optional[str] = None + syntax_quotechar: Optional[str] = None + syntax_escapechar: Optional[str] = None + # Export(name::string, relation_id::RelationId) @dataclass(frozen=True) class Export(LqpNode): - # TODO: Once we add a JSON export, this should be union[ExportCSVConfig, ExportJSONConfig] - config: ExportCSVConfig + # TODO: Once we add a JSON export, this should be union[ExportCSVConfig, ExportCSVTableConfig, ExportJSONConfig] + config: Union[ExportCSVConfig, ExportCSVTableConfig] # Abort(name::string?, relation_id::RelationId) @dataclass(frozen=True) diff --git a/python-tools/src/lqp/parser.py b/python-tools/src/lqp/parser.py index 8742aad8..f8d73d16 100644 --- a/python-tools/src/lqp/parser.py +++ b/python-tools/src/lqp/parser.py @@ -31,10 +31,11 @@ read: demand | output | export | abort demand: "(demand" relation_id ")" output: "(output" name? relation_id ")" -export: "(export" export_csv_config ")" +export: "(export" (export_csv_config | export_csv_table_config) ")" abort: "(abort" name? relation_id ")" export_csv_config: "(export_csv_config" export_path export_columns config_dict ")" +export_csv_table_config: "(export_csv_table_config" export_path relation_id config_dict ")" export_columns: "(columns" export_column* ")" export_column: "(column" STRING relation_id ")" @@ -298,6 +299,22 @@ def export_csv_config(self, meta, items): meta=self.meta(meta) ) + def export_csv_table_config(self, meta, items): + assert len(items) >= 2, "Export CSV table config must have at least relation_id and path" + + export_fields = {} + for i in items[2:]: + assert isinstance(i, dict) + for k, v in i.items(): + export_fields[k] = v.value + + return ir.ExportCSVTableConfig( + path=items[0], + table_def=items[1], + **export_fields, + meta=self.meta(meta) + ) + def export_columns(self, meta, items): # items is a list of ExportCSVColumn objects return items diff --git a/python-tools/src/lqp/print.py b/python-tools/src/lqp/print.py index 0f1ab1aa..0012ca94 100644 --- a/python-tools/src/lqp/print.py +++ b/python-tools/src/lqp/print.py @@ -684,6 +684,33 @@ def line_conf_f(kw: str, field: Union[int, str]) -> str: lqp += config_dict_to_str(config_dict, indent_level + 1, options) #type: ignore lqp += f"{conf.RPAREN()}" + elif isinstance(node, ir.ExportCSVTableConfig): + def line(kw: str, body: str) -> str: + return f"{ind}{conf.SIND()}{conf.LPAREN()}{conf.kw(kw)} {body}{conf.RPAREN()}" + + def line_conf_f(kw: str, field: Union[int, str]) -> str: + return line(kw, to_str(field, 0, options, debug_info)) + + lqp += f"{ind}{conf.LPAREN()}{conf.kw('export_csv_table_config')}\n" + + if has_option(options, PrettyOptions.PRINT_CSV_FILENAME): + lqp += line_conf_f('path', node.path) + "\n" + else: + lqp += line_conf_f('path', '') + "\n" + lqp += ind + conf.SIND() + to_str(node.table_def, 0, options, debug_info) + "\n" + + config_dict: dict[str, Any] = {} + config_dict['partition_size'] = node.partition_size if node.partition_size is not None else 0 + config_dict['compression'] = node.compression if node.compression is not None else "" #type: ignore + config_dict['syntax_header_row'] = node.syntax_header_row if node.syntax_header_row is not None else 1 + config_dict['syntax_missing_string'] = node.syntax_missing_string if node.syntax_missing_string is not None else "" #type: ignore + config_dict['syntax_delim'] = node.syntax_delim if node.syntax_delim is not None else "," #type: ignore + config_dict['syntax_quotechar'] = node.syntax_quotechar if node.syntax_quotechar is not None else '"' #type: ignore + config_dict['syntax_escapechar'] = node.syntax_escapechar if node.syntax_escapechar is not None else '\\' #type: ignore + + lqp += config_dict_to_str(config_dict, indent_level + 1, options) #type: ignore + lqp += f"{conf.RPAREN()}" + elif isinstance(node, ir.ExportCSVColumn): lqp += f"{ind}{conf.LPAREN()}{conf.kw('column')} {to_str(node.column_name, 0, options, debug_info)} {to_str(node.column_data, 0, options, debug_info)}{conf.RPAREN()}" diff --git a/python-tools/src/lqp/proto/v1/transactions_pb2.py b/python-tools/src/lqp/proto/v1/transactions_pb2.py index 7dc49e2e..84d0561d 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\"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\"\xbe\x04\n\x14\x45xportCSVTableConfig\x12\x12\n\x04path\x18\x01 \x01(\tR\x04path\x12<\n\ttable_def\x18\x02 \x01(\x0b\x32\x1f.relationalai.lqp.v1.RelationIdR\x08tableDef\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\"\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\"\xb7\x01\n\x06\x45xport\x12\x45\n\ncsv_config\x18\x01 \x01(\x0b\x32$.relationalai.lqp.v1.ExportCSVConfigH\x00R\tcsvConfig\x12U\n\x10\x63sv_table_config\x18\x02 \x01(\x0b\x32).relationalai.lqp.v1.ExportCSVTableConfigH\x00R\x0e\x63svTableConfigB\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') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -24,8 +24,8 @@ 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=3236 + _globals['_MAINTENANCELEVEL']._serialized_end=3371 _globals['_TRANSACTION']._serialized_start=134 _globals['_TRANSACTION']._serialized_end=322 _globals['_CONFIGURE']._serialized_start=324 @@ -48,16 +48,18 @@ _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['_EXPORTCSVTABLECONFIG']._serialized_start=1827 + _globals['_EXPORTCSVTABLECONFIG']._serialized_end=2401 + _globals['_READ']._serialized_start=2404 + _globals['_READ']._serialized_end=2696 + _globals['_DEMAND']._serialized_start=2698 + _globals['_DEMAND']._serialized_end=2772 + _globals['_OUTPUT']._serialized_start=2774 + _globals['_OUTPUT']._serialized_end=2868 + _globals['_EXPORT']._serialized_start=2871 + _globals['_EXPORT']._serialized_end=3054 + _globals['_WHATIF']._serialized_start=3056 + _globals['_WHATIF']._serialized_end=3138 + _globals['_ABORT']._serialized_start=3140 + _globals['_ABORT']._serialized_end=3233 # @@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..6241acdd 100644 --- a/python-tools/src/lqp/proto/v1/transactions_pb2.pyi +++ b/python-tools/src/lqp/proto/v1/transactions_pb2.pyi @@ -116,6 +116,28 @@ class ExportCSVColumn(_message.Message): column_data: _logic_pb2.RelationId def __init__(self, column_name: _Optional[str] = ..., column_data: _Optional[_Union[_logic_pb2.RelationId, _Mapping]] = ...) -> None: ... +class ExportCSVTableConfig(_message.Message): + __slots__ = ("path", "table_def", "partition_size", "compression", "syntax_header_row", "syntax_missing_string", "syntax_delim", "syntax_quotechar", "syntax_escapechar") + PATH_FIELD_NUMBER: _ClassVar[int] + TABLE_DEF_FIELD_NUMBER: _ClassVar[int] + PARTITION_SIZE_FIELD_NUMBER: _ClassVar[int] + COMPRESSION_FIELD_NUMBER: _ClassVar[int] + SYNTAX_HEADER_ROW_FIELD_NUMBER: _ClassVar[int] + SYNTAX_MISSING_STRING_FIELD_NUMBER: _ClassVar[int] + SYNTAX_DELIM_FIELD_NUMBER: _ClassVar[int] + SYNTAX_QUOTECHAR_FIELD_NUMBER: _ClassVar[int] + SYNTAX_ESCAPECHAR_FIELD_NUMBER: _ClassVar[int] + path: str + table_def: _logic_pb2.RelationId + partition_size: int + compression: str + syntax_header_row: bool + syntax_missing_string: str + syntax_delim: str + syntax_quotechar: str + syntax_escapechar: str + def __init__(self, path: _Optional[str] = ..., table_def: _Optional[_Union[_logic_pb2.RelationId, _Mapping]] = ..., partition_size: _Optional[int] = ..., compression: _Optional[str] = ..., syntax_header_row: _Optional[bool] = ..., syntax_missing_string: _Optional[str] = ..., syntax_delim: _Optional[str] = ..., syntax_quotechar: _Optional[str] = ..., syntax_escapechar: _Optional[str] = ...) -> None: ... + class Read(_message.Message): __slots__ = ("demand", "output", "what_if", "abort", "export") DEMAND_FIELD_NUMBER: _ClassVar[int] @@ -145,10 +167,12 @@ class Output(_message.Message): def __init__(self, name: _Optional[str] = ..., relation_id: _Optional[_Union[_logic_pb2.RelationId, _Mapping]] = ...) -> None: ... class Export(_message.Message): - __slots__ = ("csv_config",) + __slots__ = ("csv_config", "csv_table_config") CSV_CONFIG_FIELD_NUMBER: _ClassVar[int] + CSV_TABLE_CONFIG_FIELD_NUMBER: _ClassVar[int] csv_config: ExportCSVConfig - def __init__(self, csv_config: _Optional[_Union[ExportCSVConfig, _Mapping]] = ...) -> None: ... + csv_table_config: ExportCSVTableConfig + def __init__(self, csv_config: _Optional[_Union[ExportCSVConfig, _Mapping]] = ..., csv_table_config: _Optional[_Union[ExportCSVTableConfig, _Mapping]] = ...) -> None: ... class WhatIf(_message.Message): __slots__ = ("branch", "epoch")