DBAtlas · Atlas de operações de banco de dados

54001: statement_too_complex

PostgreSQL

O que significa?

O comando é mais complexo do que o PostgreSQL consegue processar; geralmente expressões muito aninhadas ou muitos operadores aninhados fazem a árvore de expressões ultrapassar o limite de pilha do parser/planner. Pertence à Class 54 (program_limit_exceeded).

Por que acontece?

Parênteses/subconsultas aninhadas em excesso ou cadeias de OR/AND; listas WHERE ... IN (...) enormes geradas automaticamente; ou árvores de expressões muito grandes originadas de views recursivas. O limite max_stack_depth é atingido.

Como resolver

Simplifique a consulta: mova listas IN longas para uma tabela temporária ou um conjunto VALUES e faça JOIN com ela; divida expressões aninhadas; revise consultas enormes geradas por ORM. Se for realmente necessário e o limite de pilha do sistema operacional permitir, aumente max_stack_depth com cuidado (por exemplo, SET max_stack_depth = '4MB';), mas mantenha-o abaixo do ulimit do sistema operacional.

Abrir no DBAtlas →

Mais entradas deste banco