54001: statement_too_complex
PostgreSQLQue signifie cette erreur ?
L'instruction est plus complexe que ce que PostgreSQL peut traiter ; en général, des expressions très profondément imbriquées ou de nombreux opérateurs imbriqués font dépasser à l'arbre d'expression la limite de pile du parser/planner. Appartient à la Class 54 (program_limit_exceeded).
Cause
Parenthèses/sous-requêtes imbriquées trop profondes ou chaînes OR/AND ; énormes listes WHERE ... IN (...) générées automatiquement ; ou arbres d'expression très volumineux issus de vues récursives. La limite max_stack_depth est atteinte.
Comment la corriger
Simplifiez la requête : déplacez les longues listes IN dans une table temporaire ou un ensemble VALUES et faites un JOIN ; décomposez les expressions imbriquées ; revoyez les énormes requêtes générées par l'ORM. Si c'est vraiment nécessaire et que la limite de pile de l'OS le permet, augmentez prudemment max_stack_depth (par ex. SET max_stack_depth = '4MB';) en restant sous l'ulimit de l'OS.