diff --git a/edb/pgsql/metaschema.py b/edb/pgsql/metaschema.py index 0a696b43072..3152f6a1da8 100644 --- a/edb/pgsql/metaschema.py +++ b/edb/pgsql/metaschema.py @@ -8239,6 +8239,26 @@ async def generate_support_functions( return trampoline_functions(cmds) +async def regenerate_config_support_functions( + conn: PGConnection, + config_spec: edbconfig.Spec, +) -> None: + # Regenerate functions dependent on config spec. + commands = dbops.CommandGroup() + + funcs = [ + ApplySessionConfigFunction(config_spec), + PostgresJsonConfigValueToFrontendConfigValueFunction(config_spec), + ] + + cmds = [dbops.CreateFunction(func, or_replace=True) for func in funcs] + commands.add_commands(cmds) + + block = dbops.PLTopBlock() + commands.generate(block) + await _execute_block(conn, block) + + async def generate_more_support_functions( conn: PGConnection, compiler: edbcompiler.Compiler, diff --git a/edb/server/bootstrap.py b/edb/server/bootstrap.py index e7a526de6f4..7e33d70c66d 100644 --- a/edb/server/bootstrap.py +++ b/edb/server/bootstrap.py @@ -1781,8 +1781,10 @@ async def _init_stdlib( await conn.sql_execute(testmode_sql.encode("utf-8")) trampolines.extend(new_trampolines) # _testmode includes extra config settings, so make sure - # those are picked up. + # those are picked up... config_spec = config.load_spec_from_schema(stdlib.stdschema) + # ...and that config functions dependent on it are regenerated + await metaschema.regenerate_config_support_functions(conn, config_spec) logger.info('Finalizing database setup...')