From: Andres Freund Date: Mon, 23 Jul 2018 03:31:22 +0000 (-0700) Subject: Reset context at the tail end of JITed EEOP_AGG_PLAIN_TRANS. X-Git-Tag: REL_12_BETA1~1832 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1307bc3d45c1a8a72c7483f2a81e72725116f007;p=postgresql Reset context at the tail end of JITed EEOP_AGG_PLAIN_TRANS. While no negative consequences are currently known, it's clearly wrong to not reset the context in one of the branches. Reported-By: Dmitry Dolgov Author: Dmitry Dolgov Discussion: https://postgr.es/m/CAGPqQf165-=+Drw3Voim7M5EjHT1zwPF9BQRjLFQzCzYnNZEiQ@mail.gmail.com Backpatch: 11-, where JIT compilation support was added --- diff --git a/src/backend/jit/llvm/llvmjit_expr.c b/src/backend/jit/llvm/llvmjit_expr.c index 31b0321275..0f3109334e 100644 --- a/src/backend/jit/llvm/llvmjit_expr.c +++ b/src/backend/jit/llvm/llvmjit_expr.c @@ -2499,6 +2499,8 @@ llvm_compile_expr(ExprState *state) /* store trans value */ LLVMBuildStore(b, v_newval, v_transvaluep); LLVMBuildStore(b, v_fcinfo_isnull, v_transnullp); + + l_mcxt_switch(mod, b, v_oldcontext); LLVMBuildBr(b, opblocks[i + 1]); /* returned datum passed datum, no need to reparent */