Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
29b01f9
Update ExportCSVConfig to support generic CSV sources
davidwzhao Feb 17, 2026
ae4cac5
Update generated proto files
davidwzhao Feb 17, 2026
4e777d1
Update grammar
davidwzhao Feb 17, 2026
5ab4715
Try using Any types
davidwzhao Feb 17, 2026
da6d2a9
Add partition size to csv config
davidwzhao Feb 17, 2026
c44d462
Use separate options for legacy vs new csv export config
davidwzhao Feb 17, 2026
7d4b9a0
Update generated proto and parser
davidwzhao Feb 17, 2026
33073d1
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 18, 2026
dbf57a7
Update partition_size to partition_size_mb
davidwzhao Feb 18, 2026
1f53c82
Update grammar to distinguish between new and legacy ExportCSVConfig …
davidwzhao Feb 18, 2026
15b982d
Update pretty printer generator to support field unwrapping under con…
davidwzhao Feb 18, 2026
c2a838b
Update generated sdks
davidwzhao Feb 18, 2026
7d4bc26
Format
davidwzhao Feb 18, 2026
1e297f6
Add tests for export_csv_config_v2
davidwzhao Feb 18, 2026
18f2f69
Fix type error
davidwzhao Feb 18, 2026
0137a34
Update generated parser
davidwzhao Feb 18, 2026
7b125a9
Go back to having separate grammar rule for export_csv_columns
davidwzhao Feb 18, 2026
468d657
Update generated parsers and printers
davidwzhao Feb 18, 2026
028f7f9
Update Go pretty printer
davidwzhao Feb 18, 2026
6993438
Update pretty snapshots
davidwzhao Feb 18, 2026
150f48b
Add csv_export attr to test
davidwzhao Feb 18, 2026
7600ca0
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 19, 2026
bf6c9a2
No need for ignoring validator
davidwzhao Feb 19, 2026
8528f23
Update snaps
davidwzhao Feb 19, 2026
b5c3da9
Update go snaps
davidwzhao Feb 19, 2026
7fa4441
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 20, 2026
aa9ca13
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 22, 2026
9de602e
Update grammar
davidwzhao Feb 22, 2026
7aaddda
Fix grammar
davidwzhao Feb 22, 2026
5cf9906
Add debug snaps for export tests
davidwzhao Feb 22, 2026
7aa23eb
Add return type annotation
davidwzhao Feb 23, 2026
87e7bd5
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 24, 2026
8f71193
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 24, 2026
842f291
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 26, 2026
7c4e2e5
Merge remote-tracking branch 'origin/main' into dz-csv-export-table-2
davidwzhao Feb 27, 2026
fc74c56
Apply suggestion from @comnik
davidwzhao Feb 27, 2026
dcbb5d7
Reorder csv config options for clarity
davidwzhao Feb 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
302 changes: 157 additions & 145 deletions go/src/lqp/v1/logic.pb.go

Large diffs are not rendered by default.

492 changes: 335 additions & 157 deletions go/src/lqp/v1/transactions.pb.go

Large diffs are not rendered by default.

3,291 changes: 1,697 additions & 1,594 deletions go/src/parser.go

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-02-09T13:12:21.756
# original file: /Users/nystrom/rai/nn-meta-12-go-tools/proto/relationalai/lqp/v1/fragments.proto (proto3 syntax)
# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-02-17T16:46:40.108
# original file: /Users/dzhao/Documents/logical-query-protocol/proto/relationalai/lqp/v1/fragments.proto (proto3 syntax)

import ProtoBuf as PB
using ProtoBuf: OneOf
Expand Down
18 changes: 12 additions & 6 deletions julia/LogicalQueryProtocol/src/gen/relationalai/lqp/v1/logic_pb.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-02-09T13:12:21.246
# original file: /Users/nystrom/rai/nn-meta-12-go-tools/proto/relationalai/lqp/v1/logic.proto (proto3 syntax)
# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-02-17T16:46:39.694
# original file: /Users/dzhao/Documents/logical-query-protocol/proto/relationalai/lqp/v1/logic.proto (proto3 syntax)

import ProtoBuf as PB
using ProtoBuf: OneOf
Expand Down Expand Up @@ -522,10 +522,11 @@ struct CSVConfig
decimal_separator::String
encoding::String
compression::String
partition_size::Int64
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)
CSVConfig(;header_row = zero(Int32), skip = zero(Int64), new_line = "", delimiter = "", quotechar = "", escapechar = "", comment = "", missing_strings = Vector{String}(), decimal_separator = "", encoding = "", compression = "", partition_size = zero(Int64)) = CSVConfig(header_row, skip, new_line, delimiter, quotechar, escapechar, comment, missing_strings, decimal_separator, encoding, compression, partition_size)
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 = "", partition_size = zero(Int64))
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, partition_size = 12)

function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:CSVConfig})
header_row = zero(Int32)
Expand All @@ -539,6 +540,7 @@ function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:CSVConfig})
decimal_separator = ""
encoding = ""
compression = ""
partition_size = zero(Int64)
while !PB.message_done(d)
field_number, wire_type = PB.decode_tag(d)
if field_number == 1
Expand All @@ -563,11 +565,13 @@ function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:CSVConfig})
encoding = PB.decode(d, String)
elseif field_number == 11
compression = PB.decode(d, String)
elseif field_number == 12
partition_size = PB.decode(d, Int64)
else
Base.skip(d, wire_type)
end
end
return CSVConfig(header_row, skip, new_line, delimiter, quotechar, escapechar, comment, missing_strings[], decimal_separator, encoding, compression)
return CSVConfig(header_row, skip, new_line, delimiter, quotechar, escapechar, comment, missing_strings[], decimal_separator, encoding, compression, partition_size)
end

function PB.encode(e::PB.AbstractProtoEncoder, x::CSVConfig)
Expand All @@ -583,6 +587,7 @@ function PB.encode(e::PB.AbstractProtoEncoder, x::CSVConfig)
!isempty(x.decimal_separator) && PB.encode(e, 9, x.decimal_separator)
!isempty(x.encoding) && PB.encode(e, 10, x.encoding)
!isempty(x.compression) && PB.encode(e, 11, x.compression)
x.partition_size != zero(Int64) && PB.encode(e, 12, x.partition_size)
return position(e.io) - initpos
end
function PB._encoded_size(x::CSVConfig)
Expand All @@ -598,6 +603,7 @@ function PB._encoded_size(x::CSVConfig)
!isempty(x.decimal_separator) && (encoded_size += PB._encoded_size(x.decimal_separator, 9))
!isempty(x.encoding) && (encoded_size += PB._encoded_size(x.encoding, 10))
!isempty(x.compression) && (encoded_size += PB._encoded_size(x.compression, 11))
x.partition_size != zero(Int64) && (encoded_size += PB._encoded_size(x.partition_size, 12))
return encoded_size
end

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-02-09T13:12:21.756
# original file: /Users/nystrom/rai/nn-meta-12-go-tools/proto/relationalai/lqp/v1/transactions.proto (proto3 syntax)
# Autogenerated using ProtoBuf.jl v1.2.0 on 2026-02-17T16:46:40.108
# original file: /Users/dzhao/Documents/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 Output, ExportCSVColumns, IVMConfig, Write, ExportCSVSource, Configure
export ExportCSVConfig, Export, Epoch, Read, Transaction, WhatIf
abstract type var"##Abstract#Transaction" end
abstract type var"##Abstract#Epoch" end
abstract type var"##Abstract#Read" end
Expand Down Expand Up @@ -282,82 +282,34 @@ function PB._encoded_size(x::Output)
return encoded_size
end

struct ExportCSVConfig
path::String
data_columns::Vector{ExportCSVColumn}
partition_size::Int64
compression::String
syntax_header_row::Bool
syntax_missing_string::String
syntax_delim::String
syntax_quotechar::String
syntax_escapechar::String
struct ExportCSVColumns
columns::Vector{ExportCSVColumn}
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)
ExportCSVColumns(;columns = Vector{ExportCSVColumn}()) = ExportCSVColumns(columns)
PB.default_values(::Type{ExportCSVColumns}) = (;columns = Vector{ExportCSVColumn}())
PB.field_numbers(::Type{ExportCSVColumns}) = (;columns = 1)

function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:ExportCSVConfig})
path = ""
data_columns = PB.BufferedVector{ExportCSVColumn}()
partition_size = zero(Int64)
compression = ""
syntax_header_row = false
syntax_missing_string = ""
syntax_delim = ""
syntax_quotechar = ""
syntax_escapechar = ""
function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:ExportCSVColumns})
columns = PB.BufferedVector{ExportCSVColumn}()
while !PB.message_done(d)
field_number, wire_type = PB.decode_tag(d)
if field_number == 1
path = PB.decode(d, String)
elseif field_number == 2
PB.decode!(d, data_columns)
elseif field_number == 3
partition_size = PB.decode(d, Int64)
elseif field_number == 4
compression = PB.decode(d, String)
elseif field_number == 5
syntax_header_row = PB.decode(d, Bool)
elseif field_number == 6
syntax_missing_string = PB.decode(d, String)
elseif field_number == 7
syntax_delim = PB.decode(d, String)
elseif field_number == 8
syntax_quotechar = PB.decode(d, String)
elseif field_number == 9
syntax_escapechar = PB.decode(d, String)
PB.decode!(d, columns)
else
Base.skip(d, wire_type)
end
end
return ExportCSVConfig(path, data_columns[], partition_size, compression, syntax_header_row, syntax_missing_string, syntax_delim, syntax_quotechar, syntax_escapechar)
return ExportCSVColumns(columns[])
end

function PB.encode(e::PB.AbstractProtoEncoder, x::ExportCSVConfig)
function PB.encode(e::PB.AbstractProtoEncoder, x::ExportCSVColumns)
initpos = position(e.io)
!isempty(x.path) && PB.encode(e, 1, x.path)
!isempty(x.data_columns) && PB.encode(e, 2, x.data_columns)
x.partition_size != zero(Int64) && PB.encode(e, 3, x.partition_size)
!isempty(x.compression) && PB.encode(e, 4, x.compression)
x.syntax_header_row != false && PB.encode(e, 5, x.syntax_header_row)
!isempty(x.syntax_missing_string) && PB.encode(e, 6, x.syntax_missing_string)
!isempty(x.syntax_delim) && PB.encode(e, 7, x.syntax_delim)
!isempty(x.syntax_quotechar) && PB.encode(e, 8, x.syntax_quotechar)
!isempty(x.syntax_escapechar) && PB.encode(e, 9, x.syntax_escapechar)
!isempty(x.columns) && PB.encode(e, 1, x.columns)
return position(e.io) - initpos
end
function PB._encoded_size(x::ExportCSVConfig)
function PB._encoded_size(x::ExportCSVColumns)
encoded_size = 0
!isempty(x.path) && (encoded_size += PB._encoded_size(x.path, 1))
!isempty(x.data_columns) && (encoded_size += PB._encoded_size(x.data_columns, 2))
x.partition_size != zero(Int64) && (encoded_size += PB._encoded_size(x.partition_size, 3))
!isempty(x.compression) && (encoded_size += PB._encoded_size(x.compression, 4))
x.syntax_header_row != false && (encoded_size += PB._encoded_size(x.syntax_header_row, 5))
!isempty(x.syntax_missing_string) && (encoded_size += PB._encoded_size(x.syntax_missing_string, 6))
!isempty(x.syntax_delim) && (encoded_size += PB._encoded_size(x.syntax_delim, 7))
!isempty(x.syntax_quotechar) && (encoded_size += PB._encoded_size(x.syntax_quotechar, 8))
!isempty(x.syntax_escapechar) && (encoded_size += PB._encoded_size(x.syntax_escapechar, 9))
!isempty(x.columns) && (encoded_size += PB._encoded_size(x.columns, 1))
return encoded_size
end

Expand Down Expand Up @@ -445,42 +397,48 @@ function PB._encoded_size(x::Write)
return encoded_size
end

struct Export
export_config::Union{Nothing,OneOf{ExportCSVConfig}}
struct ExportCSVSource
csv_source::Union{Nothing,OneOf{<:Union{ExportCSVColumns,RelationId}}}
end
Export(;export_config = nothing) = Export(export_config)
PB.oneof_field_types(::Type{Export}) = (;
export_config = (;csv_config=ExportCSVConfig),
ExportCSVSource(;csv_source = nothing) = ExportCSVSource(csv_source)
PB.oneof_field_types(::Type{ExportCSVSource}) = (;
csv_source = (;gnf_columns=ExportCSVColumns, table_def=RelationId),
)
PB.default_values(::Type{Export}) = (;csv_config = nothing)
PB.field_numbers(::Type{Export}) = (;csv_config = 1)
PB.default_values(::Type{ExportCSVSource}) = (;gnf_columns = nothing, table_def = nothing)
PB.field_numbers(::Type{ExportCSVSource}) = (;gnf_columns = 1, table_def = 2)

function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:Export})
export_config = nothing
function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:ExportCSVSource})
csv_source = nothing
while !PB.message_done(d)
field_number, wire_type = PB.decode_tag(d)
if field_number == 1
export_config = OneOf(:csv_config, PB.decode(d, Ref{ExportCSVConfig}))
csv_source = OneOf(:gnf_columns, PB.decode(d, Ref{ExportCSVColumns}))
elseif field_number == 2
csv_source = OneOf(:table_def, PB.decode(d, Ref{RelationId}))
else
Base.skip(d, wire_type)
end
end
return Export(export_config)
return ExportCSVSource(csv_source)
end

function PB.encode(e::PB.AbstractProtoEncoder, x::Export)
function PB.encode(e::PB.AbstractProtoEncoder, x::ExportCSVSource)
initpos = position(e.io)
if isnothing(x.export_config);
elseif x.export_config.name === :csv_config
PB.encode(e, 1, x.export_config[]::ExportCSVConfig)
if isnothing(x.csv_source);
elseif x.csv_source.name === :gnf_columns
PB.encode(e, 1, x.csv_source[]::ExportCSVColumns)
elseif x.csv_source.name === :table_def
PB.encode(e, 2, x.csv_source[]::RelationId)
end
return position(e.io) - initpos
end
function PB._encoded_size(x::Export)
function PB._encoded_size(x::ExportCSVSource)
encoded_size = 0
if isnothing(x.export_config);
elseif x.export_config.name === :csv_config
encoded_size += PB._encoded_size(x.export_config[]::ExportCSVConfig, 1)
if isnothing(x.csv_source);
elseif x.csv_source.name === :gnf_columns
encoded_size += PB._encoded_size(x.csv_source[]::ExportCSVColumns, 1)
elseif x.csv_source.name === :table_def
encoded_size += PB._encoded_size(x.csv_source[]::RelationId, 2)
end
return encoded_size
end
Expand Down Expand Up @@ -522,6 +480,137 @@ function PB._encoded_size(x::Configure)
return encoded_size
end

struct ExportCSVConfig
path::String
data_columns::Vector{ExportCSVColumn}
csv_source::Union{Nothing,ExportCSVSource}
csv_config::Union{Nothing,CSVConfig}
partition_size::Int64
compression::String
syntax_header_row::Bool
syntax_missing_string::String
syntax_delim::String
syntax_quotechar::String
syntax_escapechar::String
end
ExportCSVConfig(;path = "", data_columns = Vector{ExportCSVColumn}(), csv_source = nothing, csv_config = nothing, partition_size = zero(Int64), compression = "", syntax_header_row = false, syntax_missing_string = "", syntax_delim = "", syntax_quotechar = "", syntax_escapechar = "") = ExportCSVConfig(path, data_columns, csv_source, csv_config, 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}(), csv_source = nothing, csv_config = nothing, 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, csv_source = 10, csv_config = 11, partition_size = 3, compression = 4, syntax_header_row = 5, syntax_missing_string = 6, syntax_delim = 7, syntax_quotechar = 8, syntax_escapechar = 9)

function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:ExportCSVConfig})
path = ""
data_columns = PB.BufferedVector{ExportCSVColumn}()
csv_source = Ref{Union{Nothing,ExportCSVSource}}(nothing)
csv_config = Ref{Union{Nothing,CSVConfig}}(nothing)
partition_size = zero(Int64)
compression = ""
syntax_header_row = false
syntax_missing_string = ""
syntax_delim = ""
syntax_quotechar = ""
syntax_escapechar = ""
while !PB.message_done(d)
field_number, wire_type = PB.decode_tag(d)
if field_number == 1
path = PB.decode(d, String)
elseif field_number == 2
PB.decode!(d, data_columns)
elseif field_number == 10
PB.decode!(d, csv_source)
elseif field_number == 11
PB.decode!(d, csv_config)
elseif field_number == 3
partition_size = PB.decode(d, Int64)
elseif field_number == 4
compression = PB.decode(d, String)
elseif field_number == 5
syntax_header_row = PB.decode(d, Bool)
elseif field_number == 6
syntax_missing_string = PB.decode(d, String)
elseif field_number == 7
syntax_delim = PB.decode(d, String)
elseif field_number == 8
syntax_quotechar = PB.decode(d, String)
elseif field_number == 9
syntax_escapechar = PB.decode(d, String)
else
Base.skip(d, wire_type)
end
end
return ExportCSVConfig(path, data_columns[], csv_source[], csv_config[], partition_size, compression, syntax_header_row, syntax_missing_string, syntax_delim, syntax_quotechar, syntax_escapechar)
end

function PB.encode(e::PB.AbstractProtoEncoder, x::ExportCSVConfig)
initpos = position(e.io)
!isempty(x.path) && PB.encode(e, 1, x.path)
!isempty(x.data_columns) && PB.encode(e, 2, x.data_columns)
!isnothing(x.csv_source) && PB.encode(e, 10, x.csv_source)
!isnothing(x.csv_config) && PB.encode(e, 11, x.csv_config)
x.partition_size != zero(Int64) && PB.encode(e, 3, x.partition_size)
!isempty(x.compression) && PB.encode(e, 4, x.compression)
x.syntax_header_row != false && PB.encode(e, 5, x.syntax_header_row)
!isempty(x.syntax_missing_string) && PB.encode(e, 6, x.syntax_missing_string)
!isempty(x.syntax_delim) && PB.encode(e, 7, x.syntax_delim)
!isempty(x.syntax_quotechar) && PB.encode(e, 8, x.syntax_quotechar)
!isempty(x.syntax_escapechar) && PB.encode(e, 9, x.syntax_escapechar)
return position(e.io) - initpos
end
function PB._encoded_size(x::ExportCSVConfig)
encoded_size = 0
!isempty(x.path) && (encoded_size += PB._encoded_size(x.path, 1))
!isempty(x.data_columns) && (encoded_size += PB._encoded_size(x.data_columns, 2))
!isnothing(x.csv_source) && (encoded_size += PB._encoded_size(x.csv_source, 10))
!isnothing(x.csv_config) && (encoded_size += PB._encoded_size(x.csv_config, 11))
x.partition_size != zero(Int64) && (encoded_size += PB._encoded_size(x.partition_size, 3))
!isempty(x.compression) && (encoded_size += PB._encoded_size(x.compression, 4))
x.syntax_header_row != false && (encoded_size += PB._encoded_size(x.syntax_header_row, 5))
!isempty(x.syntax_missing_string) && (encoded_size += PB._encoded_size(x.syntax_missing_string, 6))
!isempty(x.syntax_delim) && (encoded_size += PB._encoded_size(x.syntax_delim, 7))
!isempty(x.syntax_quotechar) && (encoded_size += PB._encoded_size(x.syntax_quotechar, 8))
!isempty(x.syntax_escapechar) && (encoded_size += PB._encoded_size(x.syntax_escapechar, 9))
return encoded_size
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),
)
PB.default_values(::Type{Export}) = (;csv_config = nothing)
PB.field_numbers(::Type{Export}) = (;csv_config = 1)

function PB.decode(d::PB.AbstractProtoDecoder, ::Type{<:Export})
export_config = nothing
while !PB.message_done(d)
field_number, wire_type = PB.decode_tag(d)
if field_number == 1
export_config = OneOf(:csv_config, PB.decode(d, Ref{ExportCSVConfig}))
else
Base.skip(d, wire_type)
end
end
return Export(export_config)
end

function PB.encode(e::PB.AbstractProtoEncoder, x::Export)
initpos = position(e.io)
if isnothing(x.export_config);
elseif x.export_config.name === :csv_config
PB.encode(e, 1, x.export_config[]::ExportCSVConfig)
end
return position(e.io) - initpos
end
function PB._encoded_size(x::Export)
encoded_size = 0
if isnothing(x.export_config);
elseif x.export_config.name === :csv_config
encoded_size += PB._encoded_size(x.export_config[]::ExportCSVConfig, 1)
end
return encoded_size
end

# Stub definitions for cyclic types
struct var"##Stub#Epoch"{T1<:var"##Abstract#Read"} <: var"##Abstract#Epoch"
writes::Vector{Write}
Expand Down
Loading
Loading