From 83edd6cdeadde96973538fbe20751ab83529b86b Mon Sep 17 00:00:00 2001 From: "Michael J. Sullivan" Date: Mon, 24 Feb 2025 11:34:36 -0800 Subject: [PATCH] Increase recursion limit in compiler worker processes (#8379) I've been threatening to do this for a while and it is finally time, I think. Compiling the (complex!) query for `DESCRIBE INSTANCE CONFIG AS DDL` as part of `dump --all` has been failing. --- edb/edgeql/compiler/config_desc.py | 4 +++- edb/server/compiler_pool/worker_proc.py | 3 +++ tests/test_edgeql_userddl.py | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/edb/edgeql/compiler/config_desc.py b/edb/edgeql/compiler/config_desc.py index 08b18f397f4..b07a8cb0d04 100644 --- a/edb/edgeql/compiler/config_desc.py +++ b/edb/edgeql/compiler/config_desc.py @@ -51,7 +51,9 @@ def compile_describe_config( ctx.env.schema, scope, ctx.env.options.testmode) config_ast = qlparser.parse_fragment(config_edgeql) - return dispatch.compile(config_ast, ctx=ctx) + with ctx.new() as subctx: + subctx.allow_factoring() + return dispatch.compile(config_ast, ctx=subctx) def _describe_config( diff --git a/edb/server/compiler_pool/worker_proc.py b/edb/server/compiler_pool/worker_proc.py index a0990c382e2..b917156abaa 100644 --- a/edb/server/compiler_pool/worker_proc.py +++ b/edb/server/compiler_pool/worker_proc.py @@ -22,6 +22,7 @@ import os import pickle import signal +import sys import time import traceback @@ -115,6 +116,8 @@ def main(get_handler): parser.add_argument("--version-serial", type=int) args = parser.parse_args() + sys.setrecursionlimit(2000) + ql_parser.preload_spec() gc.freeze() diff --git a/tests/test_edgeql_userddl.py b/tests/test_edgeql_userddl.py index 348618a9e45..5fd2a0e83e7 100644 --- a/tests/test_edgeql_userddl.py +++ b/tests/test_edgeql_userddl.py @@ -447,6 +447,13 @@ async def test_edgeql_userddl_all_extensions_01(self): COMMIT MIGRATION; """) + await self.con.query(""" + describe current database config as ddl + """) + await self.con.query(""" + describe instance config as ddl + """) + await self.con.execute(f""" START MIGRATION TO {{ {ext_commands}