Re: terminate called after throwing an instance of 'std::bad_alloc'
От | Andres Freund |
---|---|
Тема | Re: terminate called after throwing an instance of 'std::bad_alloc' |
Дата | |
Msg-id | 20210421002056.gjd6rpe6toumiqd6@alap3.anarazel.de обсуждение исходный текст |
Ответ на | Re: terminate called after throwing an instance of 'std::bad_alloc' (Justin Pryzby <pryzby@telsasoft.com>) |
Ответы |
Re: terminate called after throwing an instance of 'std::bad_alloc'
|
Список | pgsql-hackers |
Hi, On 2021-04-20 00:58:21 -0500, Justin Pryzby wrote: > On Tue, Apr 20, 2021 at 12:38:26AM -0500, Justin Pryzby wrote: > > I don't know if this is related to the other issues, but this seems leaky. > > And it explains how the context use counter can exceed its threshold. > > create or replace function fn() returns void language plpgsql as $$ declare rec int; begin SELECT relpages INTO rec FROMpg_class LIMIT 1; end $$; > explain analyze > SELECT fn() > FROM generate_series(1,99); > > SELECT SUM(a) FROM (VALUES(1))a(a); > > time PGOPTIONS='-cclient_min_messages=debug -clog_executor_stats=off -clog_min_duration_statement=-1 -cjit=on -cjit_above_cost=0-cjit_inline_above_cost=0' psql ts -f jitleak.sql > ... > psql:jitleak.sql:6: DEBUG: recreating LLVM context after 100 uses Right - at the moment the context can only be recreated when there's no JITed queries ongoing. That's why I asked whether your "real" query contains function calls, and whether those functions are expensive enough to be JITed. > Question: does the jit context need to be recreated only when inlining is > enabled? Or maybe it's better if it's not conditionalized like that.. It'd be sufficient to do it when doing inlining, but currently that's not tracked separately. Greetings, Andres Freund
В списке pgsql-hackers по дате отправления: