Although I'd misdiagnosed the reason for the recent failures on
authorTom Lane
Sat, 22 Sep 2007 04:40:03 +0000 (04:40 +0000)
committerTom Lane
Sat, 22 Sep 2007 04:40:03 +0000 (04:40 +0000)
buildfarm member grebe, I see no reason to revert the 1-byte-header-friendly
changes I made in varlena.c.  Instead, tweak the code a little bit to
get more advantage out of that.

src/backend/utils/adt/varlena.c

index 8dd4ba1982fd939b5fceda2eebcdf3508e3507d1..5ef1b0c3377e626e31e34d0e1c56fc8760d2ed35 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.158 2007/09/22 00:36:38 tgl Exp $
+ *   $PostgreSQL: pgsql/src/backend/utils/adt/varlena.c,v 1.159 2007/09/22 04:40:03 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -683,7 +683,7 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified)
         * If we're working with an untoasted source, no need to do an
         * extra copying step.
         */
-       if (VARATT_IS_EXTENDED(str))
+       if (VARATT_IS_COMPRESSED(str) || VARATT_IS_EXTERNAL(str))
            slice = DatumGetTextPSlice(str, slice_start, slice_size);
        else
            slice = (text *) DatumGetPointer(str);