aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/fmgr/fmgr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/fmgr/fmgr.c')
-rw-r--r--src/backend/utils/fmgr/fmgr.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c
index a28acdc2ad8..5a67a84cf88 100644
--- a/src/backend/utils/fmgr/fmgr.c
+++ b/src/backend/utils/fmgr/fmgr.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.105 2007/03/27 23:21:10 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/fmgr/fmgr.c,v 1.106 2007/04/06 04:21:43 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1962,7 +1962,7 @@ struct varlena *
pg_detoast_datum(struct varlena * datum)
{
if (VARATT_IS_EXTENDED(datum))
- return (struct varlena *) heap_tuple_untoast_attr((varattrib *) datum);
+ return heap_tuple_untoast_attr(datum);
else
return datum;
}
@@ -1971,7 +1971,7 @@ struct varlena *
pg_detoast_datum_copy(struct varlena * datum)
{
if (VARATT_IS_EXTENDED(datum))
- return (struct varlena *) heap_tuple_untoast_attr((varattrib *) datum);
+ return heap_tuple_untoast_attr(datum);
else
{
/* Make a modifiable copy of the varlena object */
@@ -1987,7 +1987,16 @@ struct varlena *
pg_detoast_datum_slice(struct varlena * datum, int32 first, int32 count)
{
/* Only get the specified portion from the toast rel */
- return (struct varlena *) heap_tuple_untoast_attr_slice((varattrib *) datum, first, count);
+ return heap_tuple_untoast_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);
+ else
+ return datum;
}
/*-------------------------------------------------------------------------