Thanks for the replies! This has been incredibly helpful. longemen3000 posted the following with respect to the single row case (which I now understand is not caused by the single row) on github. Does this explain the described behavior?
found the error.
CSV.jl/src/utils.jl
Lines 234 to 242 in acd36a6 elseif c isa Vector && b isa Vector # two vectors, but we know eltype doesn't match, so try to promote A = Vector{promote_types(eltype(c), eltype(b))} elseif c isa SentinelVector && b isa SentinelVector A = vectype(promote_types(Base.nonmissingtype(eltype(c)), Base.nonmissingtype(eltype(b)))) end x = ChainedVector([_promote(A, x) for x in a.arrays]) y = _promote(A, b) return append!(x, y)
there is a missing case where c isa PooledVector