Skip to content

Commit 46d424c

Browse files
davidwzhaoclaude
andcommitted
Add ExportOutput equality and relation collection to Julia SDK
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent b2e48ff commit 46d424c

2 files changed

Lines changed: 52 additions & 0 deletions

File tree

sdks/julia/LogicalQueryProtocol.jl/src/equality.jl

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,38 @@ function Base.isequal(a::Export, b::Export)
478478
_isequal_oneof(a.export_config, b.export_config)
479479
end
480480

481+
# ExportCSVColumns
482+
Base.:(==)(a::ExportCSVColumns, b::ExportCSVColumns) = a.columns == b.columns
483+
Base.hash(a::ExportCSVColumns, h::UInt) = hash(a.columns, h)
484+
Base.isequal(a::ExportCSVColumns, b::ExportCSVColumns) = isequal(a.columns, b.columns)
485+
486+
# ExportCSVSource
487+
function Base.:(==)(a::ExportCSVSource, b::ExportCSVSource)
488+
_isequal_oneof(a.csv_source, b.csv_source)
489+
end
490+
function Base.hash(a::ExportCSVSource, h::UInt)
491+
_hash_oneof(a.csv_source, h)
492+
end
493+
function Base.isequal(a::ExportCSVSource, b::ExportCSVSource)
494+
_isequal_oneof(a.csv_source, b.csv_source)
495+
end
496+
497+
# ExportCSVOutput
498+
Base.:(==)(a::ExportCSVOutput, b::ExportCSVOutput) = a.csv_source == b.csv_source && a.csv_config == b.csv_config
499+
Base.hash(a::ExportCSVOutput, h::UInt) = hash(a.csv_config, hash(a.csv_source, h))
500+
Base.isequal(a::ExportCSVOutput, b::ExportCSVOutput) = isequal(a.csv_source, b.csv_source) && isequal(a.csv_config, b.csv_config)
501+
502+
# ExportOutput
503+
function Base.:(==)(a::ExportOutput, b::ExportOutput)
504+
_isequal_oneof(a.export_output, b.export_output)
505+
end
506+
function Base.hash(a::ExportOutput, h::UInt)
507+
_hash_oneof(a.export_output, h)
508+
end
509+
function Base.isequal(a::ExportOutput, b::ExportOutput)
510+
_isequal_oneof(a.export_output, b.export_output)
511+
end
512+
481513
# IVMConfig
482514
Base.:(==)(a::IVMConfig, b::IVMConfig) = a.level == b.level
483515
Base.hash(a::IVMConfig, h::UInt) = hash(a.level, h)

sdks/julia/LogicalQueryProtocol.jl/src/properties.jl

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ function _collect_read_ids!(ids::Set{LQPRelationId}, read::Read)
132132
_collect_read_ids!(ids, read.read_type[]::Abort)
133133
elseif read.read_type.name == :var"#export"
134134
_collect_read_ids!(ids, read.read_type[]::Export)
135+
elseif read.read_type.name == :export_output
136+
_collect_read_ids!(ids, read.read_type[]::ExportOutput)
135137
else
136138
@assert false
137139
end
@@ -178,6 +180,24 @@ function _collect_read_ids!(ids::Set{LQPRelationId}, _export::Export)
178180
end
179181
return nothing
180182
end
183+
function _collect_read_ids!(ids::Set{LQPRelationId}, export_output::ExportOutput)
184+
isnothing(export_output.export_output) && return nothing
185+
config = export_output.export_output
186+
if config.name == :csv
187+
csv_output = config[]::ExportCSVOutput
188+
src = isnothing(csv_output.csv_source) ? nothing : csv_output.csv_source.csv_source
189+
if !isnothing(src)
190+
if src.name == :gnf_columns
191+
for column in (src[]::ExportCSVColumns).columns
192+
!isnothing(column.column_data) && push!(ids, persistent_id(column.column_data))
193+
end
194+
elseif src.name == :table_def
195+
push!(ids, persistent_id(src[]::RelationId))
196+
end
197+
end
198+
end
199+
return nothing
200+
end
181201

182202
persistent_id(fragment::Fragment) = persistent_id(fragment.id::FragmentId)
183203
persistent_id(id::FragmentId) = LQPFragmentId(id.id)

0 commit comments

Comments
 (0)