duckdb/pg_duckdb

Support arrays with a fixed length

Aberta

#602 aberto em 14 de fev. de 2025

 (0 comentário) (0 reação) (0 responsável)C++ (183 forks)github user discovery
good first issuetypes

Métricas do repositório

Stars
 (3.125 estrelas)
Métricas de merge de PR
 (Mesclagem média 60d 10h) (7 fundiu PRs em 30d)

Description

Description

DuckDB allows arrays to have a fixed length. But returning those from a query currently throws an error that we don't support the type.

select * from duckdb.query($$ select [1, 2]::int[2] $$);
WARNING:  01000: (PGDuckDB/GetPostgresDuckDBType) Could not convert DuckDB type: INTEGER[2] to Postgres type
LOCATION:  GetPostgresDuckDBType, pgduckdb_types.cpp:1098
ERROR:  XX000: (PGDuckDB/CreatePlan) Cache lookup failed for type 0
LOCATION:  CreatePlan, pgduckdb_planner.cpp:76

It should be pretty simple to support these by simply converting them to a postgres array type (without a specified length). i.e. convert INTEGER[2] to INTEGER[] automatically.

Once we do this we should be able to un-exclude a bunch of these lines: https://github.com/duckdb/pg_duckdb/blob/02ebeaec1b42619fab806fc881e67de0821b380d/test/regression/expected/test_all_types.out#L21-L27

Guia do colaborador