75 lines
2.6 KiB
Julia
75 lines
2.6 KiB
Julia
|
|
@testset "Test big list" begin
|
|
con = DBInterface.connect(DuckDB.DB)
|
|
|
|
DBInterface.execute(con, "CREATE TABLE list_table (int_list INT[]);")
|
|
DBInterface.execute(con, "INSERT INTO list_table VALUES (range(2049));")
|
|
df = DataFrame(DBInterface.execute(con, "SELECT * FROM list_table;"))
|
|
@test length(df[1, :int_list]) == 2049
|
|
|
|
DBInterface.close!(con)
|
|
end
|
|
|
|
@testset "Test big bitstring" begin
|
|
con = DBInterface.connect(DuckDB.DB)
|
|
|
|
DBInterface.execute(con, "CREATE TABLE bit_table (bits BIT);")
|
|
# 131073 = 64 * 2048 + 1
|
|
DBInterface.execute(con, "INSERT INTO bit_table VALUES (bitstring('1010', 131073));")
|
|
df = DataFrame(DBInterface.execute(con, "SELECT * FROM bit_table;"))
|
|
# Currently mapped to Julia in an odd way.
|
|
# Can reenable following https://github.com/duckdb/duckdb/issues/7065
|
|
@test length(df[1, :bits]) == 131073 skip = true
|
|
|
|
DBInterface.close!(con)
|
|
end
|
|
|
|
@testset "Test big string" begin
|
|
con = DBInterface.connect(DuckDB.DB)
|
|
|
|
DBInterface.execute(con, "CREATE TABLE str_table (str VARCHAR);")
|
|
DBInterface.execute(con, "INSERT INTO str_table VALUES (repeat('🦆', 1024) || '🪿');")
|
|
df = DataFrame(DBInterface.execute(con, "SELECT * FROM str_table;"))
|
|
@test length(df[1, :str]) == 1025
|
|
|
|
DBInterface.close!(con)
|
|
end
|
|
|
|
@testset "Test big map" begin
|
|
con = DBInterface.connect(DuckDB.DB)
|
|
|
|
DBInterface.execute(con, "CREATE TABLE map_table (map MAP(VARCHAR, INT));")
|
|
DBInterface.execute(
|
|
con,
|
|
"INSERT INTO map_table VALUES (map_from_entries([{'k': 'billy' || num, 'v': num} for num in range(2049)]));"
|
|
)
|
|
df = DataFrame(DBInterface.execute(con, "SELECT * FROM map_table;"))
|
|
@test length(df[1, :map]) == 2049
|
|
|
|
DBInterface.close!(con)
|
|
end
|
|
|
|
@testset "Test big struct" begin
|
|
con = DBInterface.connect(DuckDB.DB)
|
|
|
|
DBInterface.execute(con, "CREATE TABLE struct_table (stct STRUCT(a INT[], b INT[]));")
|
|
DBInterface.execute(con, "INSERT INTO struct_table VALUES ({'a': range(1024), 'b': range(1025)});")
|
|
df = DataFrame(DBInterface.execute(con, "SELECT * FROM struct_table;"))
|
|
s = df[1, :stct]
|
|
@test length(s.a) == 1024
|
|
@test length(s.b) == 1025
|
|
|
|
DBInterface.close!(con)
|
|
end
|
|
|
|
@testset "Test big union" begin
|
|
con = DBInterface.connect(DuckDB.DB)
|
|
|
|
DBInterface.execute(con, "CREATE TABLE union_table (uni UNION(a INT[], b INT));")
|
|
DBInterface.execute(con, "INSERT INTO union_table (uni) VALUES (union_value(a := range(2049))), (42);")
|
|
df = DataFrame(DBInterface.execute(con, "SELECT * FROM union_table;"))
|
|
@test length(df[1, :uni]) == 2049
|
|
|
|
DBInterface.close!(con)
|
|
end
|