`@collect table` does not work: Query.jl and JuliaDB.jl


#1

Is this asymmetry expected? Should I open an issue?

julia> using JuliaDB

julia> using DataFrames

julia> using Query

julia> t = table(@NT(A = [1,2], B = [2,3]));

julia> df = DataFrame(A = [1,2], B = [2,3]);

julia> x = @from i in df begin
           @select {i.A}
           @collect DataFrame
       end
2×1 DataFrames.DataFrame
│ Row │ A │
├─────┼───┤
│ 1   │ 1 │
│ 2   │ 2 │

julia> x = @from i in t begin
           @select {i.A}
           @collect table
       end
ERROR: MethodError: no method matching collect(::QueryOperators.EnumerableMap{NamedTuples._NT_A{Int64},QueryOperators.EnumerableIterable{NamedTuples._NT_A_B{Int64,Int64},IndexedTables.NextTable{IndexedTables.Columns{NamedTuples._NT_A_B{Int64,Int64},NamedTuples._NT_A_B{Array{Int64,1},Array{Int64,1}}}}},##17#18}, ::IndexedTables.#table)
Closest candidates are:
  collect(::Dagger.Context, ::Any) at C:\Users\user\.julia\v0.6\Dagger\src\compute.jl:9
  collect(::Type{T}, ::Any) where T at array.jl:393
  collect(::QueryOperators.Enumerable, ::Type{T}) where T at C:\Users\user\.julia\v0.6\Query\src\sinks/sink_type.jl:2
  ...


#2

This is going to be fixed in v0.9.3. Just waiting for the METADATA PR to be merged. Thanks for pointing this out!


#3

Great, thanks!