TODO

Atualizado em 2026-05-25.

Notas recentes

  • A via experimental para INNER JOIN LATERAL escalar foi publicada em main, junto com o script sql/lateral_scalar_rewrite_manual.sql e a nota de uso com session_preload_libraries=pg_monetdb no README.
  • O README agora tambem deixa explicito que WITH ... AS MATERIALIZED nao e sintaxe valida no MonetDB; por isso, esse boundary precisa continuar local no PostgreSQL.
  • BLOB agora esta documentado como suportado via bytea.
  • HUGEINT agora esta suportado via dominio PostgreSQL sobre numeric(39,0) e importado como hugeint, com faixa valida de -2^127 + 1 a 2^127 - 1.
  • O repro de cohort-retention com primeiro_pedido / atividade_mensal / retidos e JOIN ... ON no cohort_size saiu do TODO; esse shape ja esta com pushdown no estado atual.

Pendencias reais

1. Revisar lifecycle de conexao em monetdb_execute

  • Status: aberto
  • Contexto: monetdb_execute abre uma conexao MAPI propria com mapi_connect() e fecha no fim com mapi_close_handle() + mapi_destroy(), sem passar pelo gerenciamento central de conexoes em connection.c.
  • Sintoma lembrado: havia suspeita de perda/instabilidade de conexao em chamadas de monetdb_execute.
  • Direcao de investigacao: confirmar se o problema era reconnect excessivo, descarte prematuro de handle/conexao, ou falta de reaproveitamento/tratamento uniforme de erro em relacao ao caminho normal do FDW.
  • Arquivo principal: monetdb_fdw.c, funcao monetdb_execute().

2. Corrigir o problema local de build com .bc

  • Status: aberto
  • Sintoma: make USE_PGXS=1 PG_CONFIG=/usr/lib/postgresql/19/bin/pg_config pode falhar com Operation not permitted ao gerar monetdb_fdw.bc.
  • Impacto: atrapalha o ciclo de rebuild/validacao e mascara se o binario instalado corresponde ao codigo atual.

3. Expandir a cobertura e a documentacao de INTERVAL

  • Status: aberto
  • Contexto: o MonetDB aceita formas qualificadas como INTERVAL MONTH, INTERVAL DAY e INTERVAL SECOND, expostas no catalogo como month_interval, day_interval e sec_interval.
  • Estado atual confirmado: IMPORT FOREIGN SCHEMA ja mapeia esses casos para PostgreSQL como interval month, interval day e interval second, e o round-trip local para essas tres familias ja esta validado.
  • Lacuna real remanescente:
    • varios qualificadores do MonetDB que usam sec_interval ainda perdem fidelidade na importacao, porque hoje entram no PostgreSQL como interval second em vez de preservar DAY TO SECOND, HOUR TO MINUTE, etc.
  • Direcao de investigacao: decidir se vale preservar o qualificador original na importacao, e ampliar a regressao para cobrir explicitamente os demais qualificadores que caem na familia sec_interval.

4. Generalizar a reescrita de INNER JOIN LATERAL sem depender de preload

  • Status: futuro; workaround e modo experimental ja documentados
  • Contexto: hoje o pushdown automatico do padrao JOIN LATERAL (SELECT 0.2 * AVG(...) ...) aq ON outer_col < aq.threshold funciona quando pg_monetdb esta carregado antes da primeira query FDW da sessao, por exemplo com session_preload_libraries=pg_monetdb ou LOAD 'pg_monetdb'.
  • Estado atual seguro: o workaround em WHERE outer_col < (SELECT 0.2 * AVG(...) ...) segue valido, e o README ja documenta a opcao experimental com preload.
  • Direcao futura: se quisermos remover a dependencia de preload, a normalizacao precisa acontecer em um ponto do planner que nao dependa do carregamento lazy da biblioteca na primeira query FDW.

Itens removidos deste TODO

  • avg_quantity_per_part deixou de ser pendencia ativa; o caso esta verde no estado atual e fica apenas como guard-rail tecnico.
  • O caso de cohort-retention retidos saiu das pendencias reais porque o shape atual com JOIN cohort_size ... ON ja esta com pushdown.
  • As notas de MATERIALIZED, LATERAL com preload e BLOB suportado migraram para o README e nao precisam mais ficar abertas como pendencia de documentacao.
  • O acompanhamento de HUGEINT como aresta aberta saiu do TODO depois da correcao da faixa valida para -2^127 + 1 ate 2^127 - 1, que e o intervalo suportado pelo MonetDB.
  • A analise de INTERVAL mostrou que o parser e o catalogo do MonetDB suportam as formas qualificadas; a conversao dedicada de leitura/escrita para as familias importadas (interval month, interval day, interval second) ja foi implementada.
  • O estudo FILTER vs CASE WHEN saiu do TODO porque o pushdown de FILTER agora ja funciona corretamente no estado atual.
  • O acompanhamento de BLOB saiu do TODO porque o suporte ja foi consolidado no codigo, na documentacao e nos SQLs de validacao.