aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/common/indextuple.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/common/indextuple.c')
-rw-r--r--src/backend/access/common/indextuple.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/backend/access/common/indextuple.c b/src/backend/access/common/indextuple.c
index 1f6b7b77d4e..ae932691af8 100644
--- a/src/backend/access/common/indextuple.c
+++ b/src/backend/access/common/indextuple.c
@@ -103,8 +103,19 @@ index_form_tuple(TupleDesc tupleDescriptor,
(att->attstorage == TYPSTORAGE_EXTENDED ||
att->attstorage == TYPSTORAGE_MAIN))
{
- Datum cvalue = toast_compress_datum(untoasted_values[i],
- att->attcompression);
+ Datum cvalue;
+ char compression = att->attcompression;
+
+ /*
+ * If the compression method is not valid, use the default. We
+ * don't expect this to happen for regular index columns, which
+ * inherit the setting from the corresponding table column, but
+ * we do expect it to happen whenever an expression is indexed.
+ */
+ if (!CompressionMethodIsValid(compression))
+ compression = GetDefaultToastCompression();
+
+ cvalue = toast_compress_datum(untoasted_values[i], compression);
if (DatumGetPointer(cvalue) != NULL)
{