in src/append.jl [70:143]
function append(
io::IO,
tbl;
metadata=getmetadata(tbl),
colmetadata=nothing,
largelists::Bool=false,
denseunions::Bool=true,
dictencode::Bool=false,
dictencodenested::Bool=false,
alignment::Int=8,
maxdepth::Int=DEFAULT_MAX_DEPTH,
ntasks=Inf,
convert::Bool=true,
file::Bool=false,
)
if ntasks < 1
throw(
ArgumentError(
"ntasks keyword argument must be > 0; pass `ntasks=1` to disable multithreaded writing",
),
)
end
startpos = position(io)
seekend(io)
len = position(io) - startpos
seek(io, startpos)
if len == 0
kwargs = Dict{Symbol,Any}(
:largelists => largelists,
:denseunions => denseunions,
:dictencode => dictencode,
:dictencodenested => dictencodenested,
:alignment => alignment,
:maxdepth => maxdepth,
:metadata => metadata,
:colmetadata => colmetadata,
)
if isa(ntasks, Integer)
kwargs[:ntasks] = ntasks
end
write(io, tbl; kwargs...)
else
isstream, arrow_schema, compress = stream_properties(io; convert=convert)
if !isstream
throw(ArgumentError("append is supported only to files in arrow stream format"))
end
if compress isa Symbol && compress !== :lz4 && compress !== :zstd
throw(
ArgumentError(
"unsupported compress keyword argument value: $compress. Valid values include `:lz4` or `:zstd`",
),
)
end
append(
io,
tbl,
arrow_schema,
compress,
largelists,
denseunions,
dictencode,
dictencodenested,
alignment,
maxdepth,
ntasks,
metadata,
colmetadata,
)
end
return io
end