Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 4c4c353

Browse files
author
Nikita Malakhov
committed
toast_delete_external_datum Relation pass
Relation passed to toast_delete_external_datum to work with multiple TOAST tables. Author: Teodor Sigaev <teodor@sigaev.ru> Author: Oleg Bartunov <obartunov@postgrespro.ru> Author: Nikita Glukhov <n.gluhov@postgrespro.ru> Author: Nikita Malakhov <n.malakhov@postgrespro.ru>
1 parent f11fbe3 commit 4c4c353

File tree

5 files changed

+12
-10
lines changed

5 files changed

+12
-10
lines changed

contrib/bytea_toaster/bytea_toaster.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ bytea_toaster_check_visibility(void *pcxt, char **chunkdata,
159159
}
160160

161161
static void
162-
bytea_toaster_delete_toast(Datum oldval, bool is_speculative)
162+
bytea_toaster_delete_toast(Relation rel, Datum oldval, bool is_speculative)
163163
{
164164
if (VARATT_IS_CUSTOM(oldval))
165165
{
@@ -251,7 +251,7 @@ bytea_toaster_update_toast(Relation rel, Oid toasterid,
251251
}
252252

253253
if (VARATT_IS_CUSTOM(oldval))
254-
bytea_toaster_delete_toast(oldval, is_speculative);
254+
bytea_toaster_delete_toast(rel, oldval, is_speculative);
255255
else if (VARATT_IS_EXTERNAL_ONDISK(oldval))
256256
toast_delete_datum(oldval, is_speculative);
257257

contrib/dummy_toaster/dummy_toaster.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ dummy_toast(Relation toast_rel, Oid toasterid,
117117
* Dummy delete function
118118
*/
119119
static void
120-
dummy_delete(Datum value, bool is_speculative)
120+
dummy_delete(Relation rel, Datum value, bool is_speculative)
121121
{
122122
}
123123

src/backend/access/table/toast_helper.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -355,11 +355,11 @@ toast_tuple_externalize(ToastTupleContext *ttc, int attribute, int maxDataLen,
355355
}
356356

357357
static void
358-
toast_delete_external_datum(Datum value, bool is_speculative)
358+
toast_delete_external_datum(Relation rel, Datum value, bool is_speculative)
359359
{
360360
Oid toasterid;
361361

362-
if (VARATT_IS_EXTERNAL(value))
362+
if (VARATT_IS_EXTERNAL_ONDISK(value))
363363
toasterid = DEFAULT_TOASTER_OID;
364364
else if (VARATT_IS_CUSTOM(value))
365365
toasterid = VARATT_CUSTOM_GET_TOASTERID(value);
@@ -369,7 +369,7 @@ toast_delete_external_datum(Datum value, bool is_speculative)
369369
if (toasterid != InvalidOid)
370370
{
371371
TsrRoutine *toaster = SearchTsrCache(toasterid);
372-
toaster->deltoast(value, is_speculative);
372+
toaster->deltoast(rel, value, is_speculative);
373373
}
374374
}
375375

@@ -410,7 +410,9 @@ toast_tuple_cleanup(ToastTupleContext *ttc)
410410
ToastAttrInfo *attr = &ttc->ttc_attr[i];
411411

412412
if ((attr->tai_colflags & TOASTCOL_NEEDS_DELETE_OLD) != 0)
413-
toast_delete_external_datum((Datum)(ttc->ttc_oldvalues[i]), false);
413+
toast_delete_external_datum(ttc->ttc_rel,
414+
(Datum)(ttc->ttc_oldvalues[i]),
415+
false);
414416
}
415417
}
416418
}
@@ -430,7 +432,7 @@ toast_delete_external(Relation rel, Datum *values, bool *isnull,
430432
for (i = 0; i < numAttrs; i++)
431433
{
432434
if (TupleDescAttr(tupleDesc, i)->attlen == -1 && !isnull[i])
433-
toast_delete_external_datum((Datum)(values[i]),
435+
toast_delete_external_datum(rel, (Datum)(values[i]),
434436
is_speculative);
435437
}
436438
}

src/backend/access/toast/generic_toaster.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ generic_detoast(Datum toast_ptr, int offset, int length)
119119
* (marks as dead)
120120
*/
121121
static void
122-
generic_delete_toast(Datum value, bool is_speculative)
122+
generic_delete_toast(Relation rel, Datum value, bool is_speculative)
123123
{
124124
toast_delete_datum(value, is_speculative);
125125
}

src/include/access/toasterapi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ typedef Datum (*detoast_function) (Datum toast_ptr,
8282
int offset, int length);
8383

8484
/* Delete toast function */
85-
typedef void (*del_toast_function) (Datum value, bool is_speculative);
85+
typedef void (*del_toast_function) (Relation rel, Datum value, bool is_speculative);
8686

8787
/* Reconstruct function necessary for replication */
8888
typedef Datum (*reconstruct_toast_function) (Relation toastrel,

0 commit comments

Comments
 (0)