]> granicus.if.org Git - postgresql/commitdiff
Change TupleTableSlot->tts_nvalid to type AttrNumber.
authorAndres Freund <andres@anarazel.de>
Tue, 25 Sep 2018 22:59:46 +0000 (15:59 -0700)
committerAndres Freund <andres@anarazel.de>
Tue, 25 Sep 2018 22:59:46 +0000 (15:59 -0700)
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

src/backend/jit/llvm/llvmjit_deform.c
src/backend/jit/llvm/llvmjit_expr.c
src/include/executor/tuptable.h

index 795f67114e65c784ba329ef757f4854a3ec59915..6d7ce21865c52dcfb478e08b2b2a2837bc305dc4 100644 (file)
@@ -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);
index 7454d05acaf1b0581717c289b966c5244a6ac374..99e0cee157f8219539305c12f3440e956d6acf49 100644 (file)
@@ -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);
 
index 02171ce94cbf77dc066b302562d04bf50654ca76..c51d89b0c0a4542c54cb7b2bfe6119b26bf871d3 100644 (file)
@@ -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