Contents
TODO
Atualizado em 2026-05-25.
Notas recentes
- A via experimental para
INNER JOIN LATERALescalar foi publicada emmain, junto com o script sql/lateral_scalar_rewrite_manual.sql e a nota de uso comsession_preload_libraries=pg_monetdbno README. - O README agora tambem deixa explicito que
WITH ... AS MATERIALIZEDnao e sintaxe valida no MonetDB; por isso, esse boundary precisa continuar local no PostgreSQL. BLOBagora esta documentado como suportado viabytea.HUGEINTagora esta suportado via dominio PostgreSQL sobrenumeric(39,0)e importado comohugeint, com faixa valida de-2^127 + 1a2^127 - 1.- O repro de cohort-retention com
primeiro_pedido/atividade_mensal/retidoseJOIN ... ONnocohort_sizesaiu 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_executeabre uma conexao MAPI propria commapi_connect()e fecha no fim commapi_close_handle()+mapi_destroy(), sem passar pelo gerenciamento central de conexoes emconnection.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, funcaomonetdb_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_configpode falhar comOperation not permittedao gerarmonetdb_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 DAYeINTERVAL SECOND, expostas no catalogo comomonth_interval,day_intervalesec_interval. - Estado atual confirmado:
IMPORT FOREIGN SCHEMAja mapeia esses casos para PostgreSQL comointerval month,interval dayeinterval second, e o round-trip local para essas tres familias ja esta validado. - Lacuna real remanescente:
- varios qualificadores do MonetDB que usam
sec_intervalainda perdem fidelidade na importacao, porque hoje entram no PostgreSQL comointerval secondem vez de preservarDAY TO SECOND,HOUR TO MINUTE, etc.
- varios qualificadores do MonetDB que usam
- 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.thresholdfunciona quandopg_monetdbesta carregado antes da primeira query FDW da sessao, por exemplo comsession_preload_libraries=pg_monetdbouLOAD '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_partdeixou de ser pendencia ativa; o caso esta verde no estado atual e fica apenas como guard-rail tecnico.- O caso de cohort-retention
retidossaiu das pendencias reais porque o shape atual comJOIN cohort_size ... ONja esta com pushdown. - As notas de
MATERIALIZED,LATERALcom preload eBLOBsuportado migraram para o README e nao precisam mais ficar abertas como pendencia de documentacao. - O acompanhamento de
HUGEINTcomo aresta aberta saiu do TODO depois da correcao da faixa valida para-2^127 + 1ate2^127 - 1, que e o intervalo suportado pelo MonetDB. - A analise de
INTERVALmostrou 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
FILTERvsCASE WHENsaiu do TODO porque o pushdown deFILTERagora ja funciona corretamente no estado atual. - O acompanhamento de
BLOBsaiu do TODO porque o suporte ja foi consolidado no codigo, na documentacao e nos SQLs de validacao.