]> granicus.if.org Git - postgresql/commitdiff
Rename some toasting functions based on whether they are heap-specific.
authorRobert Haas <rhaas@postgresql.org>
Fri, 4 Oct 2019 18:24:46 +0000 (14:24 -0400)
committerRobert Haas <rhaas@postgresql.org>
Fri, 4 Oct 2019 18:24:46 +0000 (14:24 -0400)
The old names for the attribute-detoasting functions names included
the word "heap," which seems outdated now that the heap is only one of
potentially many table access methods.

On the other hand, toast_insert_or_update and toast_delete are
heap-specific, so rename them by adding "heap_" as a prefix.

Not all of the work of making the TOAST system fully accessible to AMs
other than the heap is done yet, but there seems to be little harm in
getting this renaming out of the way now. Commit
8b94dab06617ef80a0901ab103ebd8754427ef5a already divided up the
functions among various files partially according to whether it was
intended that they should be heap-specific or AM-agnostic, so this is
just clarifying the division contemplated by that commit.

Patch by me, reviewed and tested by Prabhat Sabu, Thomas Munro,
Andres Freund, and Álvaro Herrera.

Discussion: http://postgr.es/m/CA+TgmoZv-=2iWM4jcw5ZhJeL18HF96+W1yJeYrnGMYdkFFnEpQ@mail.gmail.com

14 files changed:
src/backend/access/common/detoast.c
src/backend/access/common/indextuple.c
src/backend/access/heap/heapam.c
src/backend/access/heap/heaptoast.c
src/backend/access/heap/rewriteheap.c
src/backend/access/table/toast_helper.c
src/backend/executor/tstoreReceiver.c
src/backend/storage/large_object/inv_api.c
src/backend/utils/adt/expandedrecord.c
src/backend/utils/fmgr/fmgr.c
src/include/access/detoast.h
src/include/access/heaptoast.h
src/pl/plpgsql/src/pl_exec.c
src/test/regress/regress.c

index 47a03fa98b9d6b1ee93ec2e49f1e149a19d4e11a..b25ca6810bc75de2f5cca91d3991f284d9106272 100644 (file)
@@ -30,7 +30,7 @@ static struct varlena *toast_decompress_datum(struct varlena *attr);
 static struct varlena *toast_decompress_datum_slice(struct varlena *attr, int32 slicelength);
 
 /* ----------
- * heap_tuple_fetch_attr -
+ * detoast_external_attr -
  *
  *     Public entry point to get back a toasted value from
  *     external source (possibly still in compressed format).
@@ -42,7 +42,7 @@ static struct varlena *toast_decompress_datum_slice(struct varlena *attr, int32
  * ----------
  */
 struct varlena *
-heap_tuple_fetch_attr(struct varlena *attr)
+detoast_external_attr(struct varlena *attr)
 {
        struct varlena *result;
 
@@ -68,7 +68,7 @@ heap_tuple_fetch_attr(struct varlena *attr)
 
                /* recurse if value is still external in some other way */
                if (VARATT_IS_EXTERNAL(attr))
-                       return heap_tuple_fetch_attr(attr);
+                       return detoast_external_attr(attr);
 
                /*
                 * Copy into the caller's memory context, in case caller tries to
@@ -103,7 +103,7 @@ heap_tuple_fetch_attr(struct varlena *attr)
 
 
 /* ----------
- * heap_tuple_untoast_attr -
+ * detoast_attr -
  *
  *     Public entry point to get back a toasted value from compression
  *     or external storage.  The result is always non-extended varlena form.
@@ -113,7 +113,7 @@ heap_tuple_fetch_attr(struct varlena *attr)
  * ----------
  */
 struct varlena *
-heap_tuple_untoast_attr(struct varlena *attr)
+detoast_attr(struct varlena *attr)
 {
        if (VARATT_IS_EXTERNAL_ONDISK(attr))
        {
@@ -144,7 +144,7 @@ heap_tuple_untoast_attr(struct varlena *attr)
                Assert(!VARATT_IS_EXTERNAL_INDIRECT(attr));
 
                /* recurse in case value is still extended in some other way */
-               attr = heap_tuple_untoast_attr(attr);
+               attr = detoast_attr(attr);
 
                /* if it isn't, we'd better copy it */
                if (attr == (struct varlena *) redirect.pointer)
@@ -161,7 +161,7 @@ heap_tuple_untoast_attr(struct varlena *attr)
                /*
                 * This is an expanded-object pointer --- get flat format
                 */
-               attr = heap_tuple_fetch_attr(attr);
+               attr = detoast_external_attr(attr);
                /* flatteners are not allowed to produce compressed/short output */
                Assert(!VARATT_IS_EXTENDED(attr));
        }
@@ -192,7 +192,7 @@ heap_tuple_untoast_attr(struct varlena *attr)
 
 
 /* ----------
- * heap_tuple_untoast_attr_slice -
+ * detoast_attr_slice -
  *
  *             Public entry point to get back part of a toasted value
  *             from compression or external storage.
@@ -201,7 +201,7 @@ heap_tuple_untoast_attr(struct varlena *attr)
  * ----------
  */
 struct varlena *
-heap_tuple_untoast_attr_slice(struct varlena *attr,
+detoast_attr_slice(struct varlena *attr,
                                                          int32 sliceoffset, int32 slicelength)
 {
        struct varlena *preslice;
@@ -253,13 +253,13 @@ heap_tuple_untoast_attr_slice(struct varlena *attr,
                /* nested indirect Datums aren't allowed */
                Assert(!VARATT_IS_EXTERNAL_INDIRECT(redirect.pointer));
 
-               return heap_tuple_untoast_attr_slice(redirect.pointer,
+               return detoast_attr_slice(redirect.pointer,
                                                                                         sliceoffset, slicelength);
        }
        else if (VARATT_IS_EXTERNAL_EXPANDED(attr))
        {
-               /* pass it off to heap_tuple_fetch_attr to flatten */
-               preslice = heap_tuple_fetch_attr(attr);
+               /* pass it off to detoast_external_attr to flatten */
+               preslice = detoast_external_attr(attr);
        }
        else
                preslice = attr;
@@ -771,7 +771,7 @@ toast_decompress_datum(struct varlena *attr)
  * toast_decompress_datum_slice -
  *
  * Decompress the front of a compressed version of a varlena datum.
- * offset handling happens in heap_tuple_untoast_attr_slice.
+ * offset handling happens in detoast_attr_slice.
  * Here we just decompress a slice from the front.
  */
 static struct varlena *
index 07586201b9da4dbad13b55053d294df959c5acf9..8a5f5227a301c61a0246e5f8e432c749bf2a46f9 100644 (file)
@@ -89,7 +89,7 @@ index_form_tuple(TupleDesc tupleDescriptor,
                if (VARATT_IS_EXTERNAL(DatumGetPointer(values[i])))
                {
                        untoasted_values[i] =
-                               PointerGetDatum(heap_tuple_fetch_attr((struct varlena *)
+                               PointerGetDatum(detoast_external_attr((struct varlena *)
                                                                                                          DatumGetPointer(values[i])));
                        untoasted_free[i] = true;
                }
index e9544822bf92bbe6af48d8359d40519db8a5d3ac..0128bb34ef65debc067d12e47299a339c7f395f5 100644 (file)
@@ -2085,7 +2085,7 @@ heap_prepare_insert(Relation relation, HeapTuple tup, TransactionId xid,
                return tup;
        }
        else if (HeapTupleHasExternal(tup) || tup->t_len > TOAST_TUPLE_THRESHOLD)
-               return toast_insert_or_update(relation, tup, NULL, options);
+               return heap_toast_insert_or_update(relation, tup, NULL, options);
        else
                return tup;
 }
@@ -2809,7 +2809,7 @@ l1:
                Assert(!HeapTupleHasExternal(&tp));
        }
        else if (HeapTupleHasExternal(&tp))
-               toast_delete(relation, &tp, false);
+               heap_toast_delete(relation, &tp, false);
 
        /*
         * Mark tuple for invalidation from system caches at next command
@@ -3504,7 +3504,7 @@ l2:
                if (need_toast)
                {
                        /* Note we always use WAL and FSM during updates */
-                       heaptup = toast_insert_or_update(relation, newtup, &oldtup, 0);
+                       heaptup = heap_toast_insert_or_update(relation, newtup, &oldtup, 0);
                        newtupsize = MAXALIGN(heaptup->t_len);
                }
                else
@@ -5673,7 +5673,7 @@ heap_abort_speculative(Relation relation, ItemPointer tid)
        if (HeapTupleHasExternal(&tp))
        {
                Assert(!IsToastRelation(relation));
-               toast_delete(relation, &tp, true);
+               heap_toast_delete(relation, &tp, true);
        }
 
        /*
index fbf9294598af316e8cd66d29e204674dcbf49337..dcfdee4467d27dfa67dd330ea2ba603cb929b569 100644 (file)
  *
  *
  * INTERFACE ROUTINES
- *             toast_insert_or_update -
+ *             heap_toast_insert_or_update -
  *                     Try to make a given tuple fit into one page by compressing
  *                     or moving off attributes
  *
- *             toast_delete -
+ *             heap_toast_delete -
  *                     Reclaim toast storage when a tuple is deleted
  *
  *-------------------------------------------------------------------------
 
 
 /* ----------
- * toast_delete -
+ * heap_toast_delete -
  *
  *     Cascaded delete toast-entries on DELETE
  * ----------
  */
 void
-toast_delete(Relation rel, HeapTuple oldtup, bool is_speculative)
+heap_toast_delete(Relation rel, HeapTuple oldtup, bool is_speculative)
 {
        TupleDesc       tupleDesc;
        Datum           toast_values[MaxHeapAttributeNumber];
@@ -73,7 +73,7 @@ toast_delete(Relation rel, HeapTuple oldtup, bool is_speculative)
 
 
 /* ----------
- * toast_insert_or_update -
+ * heap_toast_insert_or_update -
  *
  *     Delete no-longer-used toast-entries and create new ones to
  *     make the new tuple fit on INSERT or UPDATE
@@ -91,8 +91,8 @@ toast_delete(Relation rel, HeapTuple oldtup, bool is_speculative)
  * ----------
  */
 HeapTuple
-toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup,
-                                          int options)
+heap_toast_insert_or_update(Relation rel, HeapTuple newtup, HeapTuple oldtup,
+                                                       int options)
 {
        HeapTuple       result_tuple;
        TupleDesc       tupleDesc;
@@ -369,7 +369,7 @@ toast_flatten_tuple(HeapTuple tup, TupleDesc tupleDesc)
                        new_value = (struct varlena *) DatumGetPointer(toast_values[i]);
                        if (VARATT_IS_EXTERNAL(new_value))
                        {
-                               new_value = heap_tuple_fetch_attr(new_value);
+                               new_value = detoast_external_attr(new_value);
                                toast_values[i] = PointerGetDatum(new_value);
                                toast_free[i] = true;
                        }
@@ -484,7 +484,7 @@ toast_flatten_tuple_to_datum(HeapTupleHeader tup,
                        if (VARATT_IS_EXTERNAL(new_value) ||
                                VARATT_IS_COMPRESSED(new_value))
                        {
-                               new_value = heap_tuple_untoast_attr(new_value);
+                               new_value = detoast_attr(new_value);
                                toast_values[i] = PointerGetDatum(new_value);
                                toast_free[i] = true;
                        }
@@ -494,7 +494,8 @@ toast_flatten_tuple_to_datum(HeapTupleHeader tup,
        /*
         * Calculate the new size of the tuple.
         *
-        * This should match the reconstruction code in toast_insert_or_update.
+        * This should match the reconstruction code in
+        * heap_toast_insert_or_update.
         */
        new_header_len = SizeofHeapTupleHeader;
        if (has_nulls)
@@ -583,7 +584,7 @@ toast_build_flattened_tuple(TupleDesc tupleDesc,
                        new_value = (struct varlena *) DatumGetPointer(new_values[i]);
                        if (VARATT_IS_EXTERNAL(new_value))
                        {
-                               new_value = heap_tuple_fetch_attr(new_value);
+                               new_value = detoast_external_attr(new_value);
                                new_values[i] = PointerGetDatum(new_value);
                                freeable_values[num_to_free++] = (Pointer) new_value;
                        }
index 0172a139576eb0f5815ead4975ee139bfeb4668a..7c98a42b8ba8a92abcd7fdd384b5a8c459590c5c 100644 (file)
@@ -664,8 +664,8 @@ raw_heap_insert(RewriteState state, HeapTuple tup)
                 */
                options |= HEAP_INSERT_NO_LOGICAL;
 
-               heaptup = toast_insert_or_update(state->rs_new_rel, tup, NULL,
-                                                                                options);
+               heaptup = heap_toast_insert_or_update(state->rs_new_rel, tup, NULL,
+                                                                                         options);
        }
        else
                heaptup = tup;
index 7532b4f8659d9d0376092586b14a4e0da947e79d..7381be8669cc4a9d0054d1fc8132785680e0f36d 100644 (file)
@@ -135,9 +135,9 @@ toast_tuple_init(ToastTupleContext *ttc)
                        {
                                ttc->ttc_attr[i].tai_oldexternal = new_value;
                                if (att->attstorage == 'p')
-                                       new_value = heap_tuple_untoast_attr(new_value);
+                                       new_value = detoast_attr(new_value);
                                else
-                                       new_value = heap_tuple_fetch_attr(new_value);
+                                       new_value = detoast_external_attr(new_value);
                                ttc->ttc_values[i] = PointerGetDatum(new_value);
                                ttc->ttc_attr[i].tai_colflags |= TOASTCOL_NEEDS_FREE;
                                ttc->ttc_flags |= (TOAST_NEEDS_CHANGE | TOAST_NEEDS_FREE);
index c0c81c82da0529c925362e95ead53ffab703fbc5..6306b7d0bd12df5b0d523b984c13945925d0f9be 100644 (file)
@@ -133,7 +133,7 @@ tstoreReceiveSlot_detoast(TupleTableSlot *slot, DestReceiver *self)
                {
                        if (VARATT_IS_EXTERNAL(DatumGetPointer(val)))
                        {
-                               val = PointerGetDatum(heap_tuple_fetch_attr((struct varlena *)
+                               val = PointerGetDatum(detoast_external_attr((struct varlena *)
                                                                                                                        DatumGetPointer(val)));
                                myState->tofree[nfree++] = val;
                        }
index e5912363433ec3319ba08b0e7fecdf84c8524e1d..263d5be12eb711f4f8577954efc2a0e99f52ca30 100644 (file)
@@ -180,7 +180,7 @@ getdatafield(Form_pg_largeobject tuple,
        if (VARATT_IS_EXTENDED(datafield))
        {
                datafield = (bytea *)
-                       heap_tuple_untoast_attr((struct varlena *) datafield);
+                       detoast_attr((struct varlena *) datafield);
                freeit = true;
        }
        len = VARSIZE(datafield) - VARHDRSZ;
index 369432d53cb6f6aae7f8bf661f6eb12538448ce6..d99d370b17cbe6a7ae98cd5ce7e107e06e5cbba4 100644 (file)
@@ -1159,7 +1159,7 @@ expanded_record_set_field_internal(ExpandedRecordHeader *erh, int fnumber,
                        {
                                /* Detoasting should be done in short-lived context. */
                                oldcxt = MemoryContextSwitchTo(get_short_term_cxt(erh));
-                               newValue = PointerGetDatum(heap_tuple_fetch_attr((struct varlena *) DatumGetPointer(newValue)));
+                               newValue = PointerGetDatum(detoast_external_attr((struct varlena *) DatumGetPointer(newValue)));
                                MemoryContextSwitchTo(oldcxt);
                        }
                        else
@@ -1305,7 +1305,7 @@ expanded_record_set_fields(ExpandedRecordHeader *erh,
                                        if (expand_external)
                                        {
                                                /* Detoast as requested while copying the value */
-                                               newValue = PointerGetDatum(heap_tuple_fetch_attr((struct varlena *) DatumGetPointer(newValue)));
+                                               newValue = PointerGetDatum(detoast_external_attr((struct varlena *) DatumGetPointer(newValue)));
                                        }
                                        else
                                        {
index 0484adb984a16ae516239ccda62721871d4bcf90..099ebd779ba26d2d2ee5f019d7d9f9e1505c0d82 100644 (file)
@@ -1739,7 +1739,7 @@ struct varlena *
 pg_detoast_datum(struct varlena *datum)
 {
        if (VARATT_IS_EXTENDED(datum))
-               return heap_tuple_untoast_attr(datum);
+               return detoast_attr(datum);
        else
                return datum;
 }
@@ -1748,7 +1748,7 @@ struct varlena *
 pg_detoast_datum_copy(struct varlena *datum)
 {
        if (VARATT_IS_EXTENDED(datum))
-               return heap_tuple_untoast_attr(datum);
+               return detoast_attr(datum);
        else
        {
                /* Make a modifiable copy of the varlena object */
@@ -1764,14 +1764,14 @@ struct varlena *
 pg_detoast_datum_slice(struct varlena *datum, int32 first, int32 count)
 {
        /* Only get the specified portion from the toast rel */
-       return heap_tuple_untoast_attr_slice(datum, first, count);
+       return detoast_attr_slice(datum, first, count);
 }
 
 struct varlena *
 pg_detoast_datum_packed(struct varlena *datum)
 {
        if (VARATT_IS_COMPRESSED(datum) || VARATT_IS_EXTERNAL(datum))
-               return heap_tuple_untoast_attr(datum);
+               return detoast_attr(datum);
        else
                return datum;
 }
index 02029a991fdef7a69f58f01e21426b830659787f..baf3dc2591c54aa3bb60dfeef6646b1b4c51bf39 100644 (file)
@@ -44,34 +44,34 @@ do { \
 #define INDIRECT_POINTER_SIZE (VARHDRSZ_EXTERNAL + sizeof(varatt_indirect))
 
 /* ----------
- * heap_tuple_fetch_attr() -
+ * detoast_external_attr() -
  *
  *             Fetches an external stored attribute from the toast
  *             relation. Does NOT decompress it, if stored external
  *             in compressed format.
  * ----------
  */
-extern struct varlena *heap_tuple_fetch_attr(struct varlena *attr);
+extern struct varlena *detoast_external_attr(struct varlena *attr);
 
 /* ----------
- * heap_tuple_untoast_attr() -
+ * detoast_attr() -
  *
  *             Fully detoasts one attribute, fetching and/or decompressing
  *             it as needed.
  * ----------
  */
-extern struct varlena *heap_tuple_untoast_attr(struct varlena *attr);
+extern struct varlena *detoast_attr(struct varlena *attr);
 
 /* ----------
- * heap_tuple_untoast_attr_slice() -
+ * detoast_attr_slice() -
  *
  *             Fetches only the specified portion of an attribute.
  *             (Handles all cases for attribute storage)
  * ----------
  */
-extern struct varlena *heap_tuple_untoast_attr_slice(struct varlena *attr,
-                                                         int32 sliceoffset,
-                                                         int32 slicelength);
+extern struct varlena *detoast_attr_slice(struct varlena *attr,
+                                                                                 int32 sliceoffset,
+                                                                                 int32 slicelength);
 
 /* ----------
  * toast_raw_datum_size -
index bf02d2c6001fe9949d0002df2e4b38dec17433b0..488a2e4a7f60512346a66628daf476a40a15f0e6 100644 (file)
         VARHDRSZ)
 
 /* ----------
- * toast_insert_or_update -
+ * heap_toast_insert_or_update -
  *
  *     Called by heap_insert() and heap_update().
  * ----------
  */
-extern HeapTuple toast_insert_or_update(Relation rel,
-                                                                               HeapTuple newtup, HeapTuple oldtup,
-                                                                               int options);
+extern HeapTuple heap_toast_insert_or_update(Relation rel, HeapTuple newtup,
+                                                                                        HeapTuple oldtup, int options);
 
 /* ----------
- * toast_delete -
+ * heap_toast_delete -
  *
  *     Called by heap_delete().
  * ----------
  */
-extern void toast_delete(Relation rel, HeapTuple oldtup, bool is_speculative);
+extern void heap_toast_delete(Relation rel, HeapTuple oldtup,
+                                                         bool is_speculative);
 
 /* ----------
  * toast_flatten_tuple -
index cb2e19cda48ed99fca88aabeb583a42bf88928d5..345065e305d7ff1f20ab1e0563b20198d5f2d378 100644 (file)
@@ -8344,7 +8344,7 @@ assign_simple_var(PLpgSQL_execstate *estate, PLpgSQL_var *var,
                 * pain, but there's little choice.
                 */
                oldcxt = MemoryContextSwitchTo(get_eval_mcontext(estate));
-               detoasted = PointerGetDatum(heap_tuple_fetch_attr((struct varlena *) DatumGetPointer(newvalue)));
+               detoasted = PointerGetDatum(detoast_external_attr((struct varlena *) DatumGetPointer(newvalue)));
                MemoryContextSwitchTo(oldcxt);
                /* Now's a good time to not leak the input value if it's freeable */
                if (freeable)
index 8cc1568a3dd6b6f3ec57d42c3e2639306a545d67..f7c024b7309bb832d021963cb04b96810b48292d 100644 (file)
@@ -558,7 +558,7 @@ make_tuple_indirect(PG_FUNCTION_ARGS)
 
                /* copy datum, so it still lives later */
                if (VARATT_IS_EXTERNAL_ONDISK(attr))
-                       attr = heap_tuple_fetch_attr(attr);
+                       attr = detoast_external_attr(attr);
                else
                {
                        struct varlena *oldattr = attr;