diff --git a/src/backend/jit/llvm/llvmjit.c b/src/backend/jit/llvm/llvmjit.c index 125e1e73ae..5a9be73957 100644 --- a/src/backend/jit/llvm/llvmjit.c +++ b/src/backend/jit/llvm/llvmjit.c @@ -77,7 +77,7 @@ LLVMTypeRef StructExprState; LLVMTypeRef StructAggState; LLVMTypeRef StructAggStatePerGroupData; LLVMTypeRef StructAggStatePerTransData; -LLVMTypeRef StructErrorSaveContext; +LLVMTypeRef StructNode; LLVMValueRef AttributeTemplate; @@ -1130,7 +1130,7 @@ llvm_create_types(void) StructAggState = llvm_pg_var_type("StructAggState"); StructAggStatePerGroupData = llvm_pg_var_type("StructAggStatePerGroupData"); StructAggStatePerTransData = llvm_pg_var_type("StructAggStatePerTransData"); - StructErrorSaveContext = llvm_pg_var_type("StructErrorSaveContext"); + StructNode = llvm_pg_var_type("StructNode"); AttributeTemplate = LLVMGetNamedFunction(llvm_types_module, "AttributeTemplate"); } diff --git a/src/backend/jit/llvm/llvmjit_expr.c b/src/backend/jit/llvm/llvmjit_expr.c index 7d44a4c9f4..aa0e09bd7a 100644 --- a/src/backend/jit/llvm/llvmjit_expr.c +++ b/src/backend/jit/llvm/llvmjit_expr.c @@ -1358,11 +1358,13 @@ llvm_compile_expr(ExprState *state) v_params[0] = l_ptr_const(op->d.iocoerce.finfo_in, l_ptr(StructFmgrInfo)); - v_params[1] = v_output; + v_params[1] = LLVMBuildIntToPtr(b, v_output, + l_ptr(LLVMInt8TypeInContext(lc)), + ""); v_params[2] = l_oid_const(lc, ioparam); v_params[3] = l_int32_const(lc, -1); v_params[4] = l_ptr_const(op->d.iocoerce.escontext, - l_ptr(StructErrorSaveContext)); + l_ptr(StructNode)); /* * InputFunctionCallSafe() will write directly into @@ -1378,6 +1380,7 @@ llvm_compile_expr(ExprState *state) * Return null if InputFunctionCallSafe() encountered * an error. */ + v_success = LLVMBuildZExt(b, v_success, TypeStorageBool, ""); v_resnullp = LLVMBuildICmp(b, LLVMIntEQ, v_success, l_sbool_const(0), ""); } diff --git a/src/backend/jit/llvm/llvmjit_types.c b/src/backend/jit/llvm/llvmjit_types.c index e1e9625038..78f1f14ba0 100644 --- a/src/backend/jit/llvm/llvmjit_types.c +++ b/src/backend/jit/llvm/llvmjit_types.c @@ -67,7 +67,7 @@ TupleTableSlot StructTupleTableSlot; HeapTupleTableSlot StructHeapTupleTableSlot; MinimalTupleTableSlot StructMinimalTupleTableSlot; TupleDescData StructTupleDescData; -ErrorSaveContext StructErrorSaveContext; +Node StructNode; /* diff --git a/src/include/jit/llvmjit.h b/src/include/jit/llvmjit.h index 5b7681eba9..e4ff3be566 100644 --- a/src/include/jit/llvmjit.h +++ b/src/include/jit/llvmjit.h @@ -83,7 +83,7 @@ extern PGDLLIMPORT LLVMTypeRef StructExprState; extern PGDLLIMPORT LLVMTypeRef StructAggState; extern PGDLLIMPORT LLVMTypeRef StructAggStatePerTransData; extern PGDLLIMPORT LLVMTypeRef StructAggStatePerGroupData; -extern PGDLLIMPORT LLVMTypeRef StructErrorSaveContext; +extern PGDLLIMPORT LLVMTypeRef StructNode; extern PGDLLIMPORT LLVMValueRef AttributeTemplate;