From: Andres Freund Date: Tue, 25 Sep 2018 22:59:46 +0000 (-0700) Subject: Change TupleTableSlot->tts_nvalid to type AttrNumber. X-Git-Tag: REL_12_BETA1~1508 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=a598708ffa8eb72a22eeee4e6f30bc26e4984acd;p=postgresql.git Change TupleTableSlot->tts_nvalid to type AttrNumber. Previously it was an int / 4 bytes. The maximum number of attributes in a tuple is restricted by the maximum value Var->varattno, which is an AttrNumber/int16. Hence use the same data type for TupleTableSlot->tts_nvalid. Author: Ashutosh Bapat Discussion: https://postgr.es/m/20180220224318.gw4oe5jadhpmcdnm@alap3.anarazel.de --- diff --git a/src/backend/jit/llvm/llvmjit_deform.c b/src/backend/jit/llvm/llvmjit_deform.c index 795f67114e6..6d7ce21865c 100644 --- a/src/backend/jit/llvm/llvmjit_deform.c +++ b/src/backend/jit/llvm/llvmjit_deform.c @@ -304,7 +304,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, int natts) for (attnum = 0; attnum < natts; attnum++) { - LLVMValueRef v_attno = l_int32_const(attnum); + LLVMValueRef v_attno = l_int16_const(attnum); LLVMAddCase(v_switch, v_attno, attcheckattnoblocks[attnum]); } @@ -691,7 +691,7 @@ slot_compile_deform(LLVMJitContext *context, TupleDesc desc, int natts) { LLVMValueRef v_off = LLVMBuildLoad(b, v_offp, ""); - LLVMBuildStore(b, l_int32_const(natts), v_nvalidp); + LLVMBuildStore(b, l_int16_const(natts), v_nvalidp); v_off = LLVMBuildTrunc(b, v_off, LLVMInt32Type(), ""); LLVMBuildStore(b, v_off, v_slotoffp); LLVMBuildStore(b, l_int8_const(1), v_slowp); diff --git a/src/backend/jit/llvm/llvmjit_expr.c b/src/backend/jit/llvm/llvmjit_expr.c index 7454d05acaf..99e0cee157f 100644 --- a/src/backend/jit/llvm/llvmjit_expr.c +++ b/src/backend/jit/llvm/llvmjit_expr.c @@ -324,7 +324,7 @@ llvm_compile_expr(ExprState *state) ""); LLVMBuildCondBr(b, LLVMBuildICmp(b, LLVMIntUGE, v_nvalid, - l_int32_const(op->d.fetch.last_var), + l_int16_const(op->d.fetch.last_var), ""), opblocks[i + 1], b_fetch); diff --git a/src/include/executor/tuptable.h b/src/include/executor/tuptable.h index 02171ce94cb..c51d89b0c0a 100644 --- a/src/include/executor/tuptable.h +++ b/src/include/executor/tuptable.h @@ -125,7 +125,7 @@ typedef struct TupleTableSlot MemoryContext tts_mcxt; /* slot itself is in this context */ Buffer tts_buffer; /* tuple's buffer, or InvalidBuffer */ #define FIELDNO_TUPLETABLESLOT_NVALID 9 - int tts_nvalid; /* # of valid values in tts_values */ + AttrNumber tts_nvalid; /* # of valid values in tts_values */ #define FIELDNO_TUPLETABLESLOT_VALUES 10 Datum *tts_values; /* current per-attribute values */ #define FIELDNO_TUPLETABLESLOT_ISNULL 11