
Невидимый syntax error в PostgreSQL: как одна строка SQL съела полтора дня дебага
viktdo 10 минут назад Невидимый syntax error в PostgreSQL: как одна строка SQL съела полтора дня дебага Простой 7 мин 139 PostgreSQL * SQL * Проектирование API * Туториал Хочу рассказать про баг, который я искал полтора...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. viktdo 10 минут назад Невидимый syntax error в PostgreSQL: как одна строка SQL съела полтора дня дебага Простой 7 мин 139 PostgreSQL * SQL * Проектирование API * Туториал Хочу рассказать про баг, который я искал полтора дня и который оказался опечаткой длиной в одну инструкцию. Если коротко: PostgreSQL (16. 4 в моём случае, но воспроизводится начиная с 12-й) не разрешает UNION ALL сразу после ORDER BY ...
LIMIT N без круглых скобок. И самое неприятное - ошибку об этом я узнал последним, потому что между моим SQL-запросом и логами стояло пять промежуточных слоёв, каждый из которых её по-своему проглотил. Расскажу как нашёл, как фиксил, и что в итоге добавил в pre-deploy чек-лист.
Технические детали
Симптом: тихий пустой ответ от webhookУ меня есть n8n-воркфлоу, который раз в день проверяю - там GET /webhook/result отдаёт финальную карточку клиента в JSON: профиль, статус, прикреплённые объекты, лид-инфа. Простой read-only эндпоинт. Цепочка из шести нод: webhook trigger -> Postgres Load Session -> Postgres Load Lead -> Postgres Load Properties -> Code Build Card -> Respond to Webhook.
В пятницу вечером фронтенд начал стабильно падать на странице результата с пустым ответом. Открыл DevTools - 200 OK, content-type application/json, body пустой. То есть никакой ошибки на сервере, просто 0 байт.
Самое раздражающее, что у меня в голове сразу выстроился неправильный причинно-следственный ряд: «фронт раньше работал, я последний раз правил рендер карточки, наверное где-то null-pointer». Полез смотреть фронт. Конечно ничего не нашёл (потому что нечего смотреть, body пустой).
Отраслевые последствия
Откатил последний релиз - продолжает падать. Так что нет, дело не во фронте. Перешёл смотреть n8n.
Открываю executions - workflow выполняется, отдаёт ok: true, никаких error-выходов. То есть ноды формально пройдены. Но что-то по дороге становится пустым.
В понедельник утром, после кофе и с ясной головой, наконец сел открывать каждую ноду по очереди и смотреть Output руками. На второй ноде - Postgres: Load Lead - увидел что она отдаёт пустой массив . Ну ок, лида для этой сессии может и не быть.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





