<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Databases on Antonio Cortés (DrZippie)</title><link>https://antoniocortes.com/tags/databases/</link><description>Recent content in Databases on Antonio Cortés (DrZippie)</description><generator>Hugo</generator><language>es-es</language><lastBuildDate>Mon, 02 Mar 2026 19:30:31 +0100</lastBuildDate><atom:link href="https://antoniocortes.com/tags/databases/index.xml" rel="self" type="application/rss+xml"/><item><title>DuckDB and httpfs behind a proxy: the secret nobody tells you</title><link>https://antoniocortes.com/en/post/2026/03/2026-03-02-duckdb-httpfs-proxy/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://antoniocortes.com/en/post/2026/03/2026-03-02-duckdb-httpfs-proxy/</guid><description>&lt;h2 id="the-problem-httpfs-ignores-your-environment-variables"&gt;The problem: httpfs ignores your environment variables&lt;/h2&gt;
&lt;p&gt;If you work with DuckDB and the &lt;code&gt;httpfs&lt;/code&gt; extension to read remote Parquet files, CSVs from S3, or any HTTP resource, you probably assume that the &lt;code&gt;HTTP_PROXY&lt;/code&gt; and &lt;code&gt;HTTPS_PROXY&lt;/code&gt; environment variables work just like every other tool. Curl respects them. wget respects them. Python requests respects them. Node.js respects them.&lt;/p&gt;
&lt;p&gt;DuckDB does not.&lt;/p&gt;
&lt;p&gt;I ran into this while working in a corporate environment with a mandatory proxy. I had a script reading Parquet files from Google Cloud Storage using &lt;code&gt;httpfs&lt;/code&gt;, and it simply would not work. No clear error, no descriptive timeout, just silence. Meanwhile, a &lt;code&gt;curl&lt;/code&gt; to the same resource with the same environment variables returned data without issue.&lt;/p&gt;</description></item><item><title>DuckDB y httpfs detrás de un proxy: el secreto que nadie te cuenta</title><link>https://antoniocortes.com/2026/03/02/duckdb-y-httpfs-detr%C3%A1s-de-un-proxy-el-secreto-que-nadie-te-cuenta/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0000</pubDate><guid>https://antoniocortes.com/2026/03/02/duckdb-y-httpfs-detr%C3%A1s-de-un-proxy-el-secreto-que-nadie-te-cuenta/</guid><description>&lt;h2 id="el-problema-httpfs-ignora-tus-variables-de-entorno"&gt;El problema: httpfs ignora tus variables de entorno&lt;/h2&gt;
&lt;p&gt;Si trabajas con DuckDB y la extensión &lt;code&gt;httpfs&lt;/code&gt; para leer Parquet remotos, CSVs desde S3 o cualquier recurso HTTP, probablemente asumes que las variables de entorno &lt;code&gt;HTTP_PROXY&lt;/code&gt; y &lt;code&gt;HTTPS_PROXY&lt;/code&gt; funcionan igual que en cualquier otra herramienta. Curl las respeta. wget las respeta. Python requests las respeta. Node.js las respeta.&lt;/p&gt;
&lt;p&gt;DuckDB no.&lt;/p&gt;
&lt;p&gt;Me he encontrado con esto trabajando en un entorno corporativo con proxy obligatorio. Tenía un script que leía ficheros Parquet desde Google Cloud Storage usando &lt;code&gt;httpfs&lt;/code&gt;, y simplemente no funcionaba. Sin error claro, sin timeout descriptivo, solo silencio. Mientras tanto, un &lt;code&gt;curl&lt;/code&gt; al mismo recurso con las mismas variables de entorno devolvía los datos sin problema.&lt;/p&gt;</description></item><item><title>Cómo PostgreSQL estima tus consultas (y por qué a veces se equivoca)</title><link>https://antoniocortes.com/postgresql-statistics/</link><pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate><guid>https://antoniocortes.com/postgresql-statistics/</guid><description>&lt;p&gt;Toda consulta empieza con un plan. Toda consulta lenta probablemente empieza con uno malo. Y más a menudo de lo que crees, las estadísticas son las culpables.&lt;/p&gt;
&lt;p&gt;Pero ¿cómo funciona realmente? PostgreSQL no ejecuta la consulta para averiguarlo — estima el coste. Lee datos precalculados de &lt;code&gt;pg_class&lt;/code&gt; y &lt;code&gt;pg_statistic&lt;/code&gt; y hace los cálculos para encontrar la ruta más barata hacia tus datos.&lt;/p&gt;
&lt;p&gt;En el escenario ideal, los números que lee son precisos y obtienes el plan que esperas. Pero cuando están desactualizados, la situación se descontrola. El planificador estima 500 filas, planifica un nested loop, y se encuentra con 25,000. Lo que parecía un plan óptimo se convierte en una falla en cascada.&lt;/p&gt;</description></item><item><title>How PostgreSQL Estimates Your Queries (And Why It Sometimes Gets It Wrong)</title><link>https://antoniocortes.com/en/postgresql-statistics/</link><pubDate>Fri, 27 Feb 2026 00:00:00 +0000</pubDate><guid>https://antoniocortes.com/en/postgresql-statistics/</guid><description>&lt;p&gt;Every query starts with a plan. Every slow query probably starts with a bad one. And more often than not, the statistics are to blame. But how does it really work?&lt;/p&gt;
&lt;p&gt;PostgreSQL doesn&amp;rsquo;t run the query to find out — it estimates the cost. It reads pre-computed data from &lt;code&gt;pg_class&lt;/code&gt; and &lt;code&gt;pg_statistic&lt;/code&gt; and does the maths to figure out the cheapest path to your data.&lt;/p&gt;
&lt;p&gt;In the ideal scenario, the numbers read are accurate, and you get the plan you expect. But when they&amp;rsquo;re stale, the situation gets out of control. The planner estimates 500 rows, plans a nested loop, and hits 25,000. What seemed like an optimal plan turns into a cascading failure.&lt;/p&gt;</description></item></channel></rss>