PostHog reescribe su parser de SQL con IA y multiplica por 70 su velocidad

Fuentes: I wrote a 70x faster SQL parser while barely looking at the code

PostHog ha sustituido el parser SQL que usaba como base de toda su plataforma de consultas por una implementación escrita de forma manual asistida por Claude Code, logrando una aceleración aproximada de 70 veces en la conversión de SQL a ClickHouse.

La necesidad de un parser propio nace del modelo de PostHog: los usuarios escriben SQL contra una vista lógica de sus datos y el sistema lo transforma en ClickHouse SQL, lo que exige una capa intermedia fiable y rápida. Hasta ahora la compañía utilizaba ANTLR en su versión C++, un generador de parsers que compila la gramática en una red de transición aumentada y la interpreta en tiempo de ejecución. Aunque es flexible, ese recorrido genérico por un grafo añade una capa de indirección que limita el rendimiento.

La nueva versión consta de 16.000 líneas de parser, 5.000 de tooling y varios miles más de tests. Para llegar a ella se probaron en paralelo dos estrategias: una orientada a máximo rendimiento, basada en descenso recursivo con bucle de expresiones tipo Pratt, y otra que replica el comportamiento de ANTLR con transiciones explícitas. Ambas convergieron.

La clave del desarrollo fue el test-driven development contra un oráculo: cada vez que el parser nuevo discrepaba del antiguo, se escribía un caso de prueba y se corregía. Para producir SQL adversarial se usó property-based testing con Hypothesis, un generador de SQL derivado de la propia gramática ANTLR, cobertura de código, consultas anonimizadas reales de producción y una herramienta de reducción de casos como ShrinkRay. También se aplicó ingeniería de prompts: cargar la gramática y el código C++ de referencia en el contexto antes de cada corrección evitó arreglos frágiles basados en lookaheads de un solo token.

El resultado es un parser equivalente al anterior en todas las consultas realistas, con discrepancias solo en casos construidos a propósito.