diff options
Diffstat (limited to 'src/backend/nodes/makefuncs.c')
-rw-r--r-- | src/backend/nodes/makefuncs.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/backend/nodes/makefuncs.c b/src/backend/nodes/makefuncs.c index 4be89f63ae0..437abad06af 100644 --- a/src/backend/nodes/makefuncs.c +++ b/src/backend/nodes/makefuncs.c @@ -17,6 +17,7 @@ #include "catalog/pg_class.h" #include "catalog/pg_type.h" +#include "fmgr.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "utils/lsyscache.h" @@ -302,6 +303,14 @@ makeConst(Oid consttype, { Const *cnst = makeNode(Const); + /* + * If it's a varlena value, force it to be in non-expanded (non-toasted) + * format; this avoids any possible dependency on external values and + * improves consistency of representation, which is important for equal(). + */ + if (!constisnull && constlen == -1) + constvalue = PointerGetDatum(PG_DETOAST_DATUM(constvalue)); + cnst->consttype = consttype; cnst->consttypmod = consttypmod; cnst->constcollid = constcollid; |