diff --git a/src/include/pathman.h b/src/include/pathman.h
index 28f6ef30..a4439f47 100644
--- a/src/include/pathman.h
+++ b/src/include/pathman.h
@@ -46,6 +46,7 @@
  */
 #define PATHMAN_CONFIG						"pathman_config"
 #define Natts_pathman_config				4
+#define Natts_pathman_config_historic		5
 #define Anum_pathman_config_partrel			1	/* partitioned relation (regclass) */
 #define Anum_pathman_config_expr			2	/* partition expression (original) */
 #define Anum_pathman_config_parttype		3	/* partitioning type (1|2) */
diff --git a/src/init.c b/src/init.c
index 1907d9dc..cb26000b 100644
--- a/src/init.c
+++ b/src/init.c
@@ -649,6 +649,7 @@ pathman_config_contains_relation(Oid relid, Datum *values, bool *isnull,
 	Snapshot		snapshot;
 	HeapTuple		htup;
 	bool			contains_rel = false;
+	TupleDesc		tupleDescr;
 
 	ScanKeyInit(&key[0],
 				Anum_pathman_config_partrel,
@@ -657,13 +658,15 @@ pathman_config_contains_relation(Oid relid, Datum *values, bool *isnull,
 
 	/* Open PATHMAN_CONFIG with latest snapshot available */
 	rel = heap_open_compat(get_pathman_config_relid(false), AccessShareLock);
+	tupleDescr = RelationGetDescr(rel);
 
 	/* Check that 'partrel' column is of regclass type */
-	Assert(TupleDescAttr(RelationGetDescr(rel),
+	Assert(TupleDescAttr(tupleDescr,
 				Anum_pathman_config_partrel - 1)->atttypid == REGCLASSOID);
 
 	/* Check that number of columns == Natts_pathman_config */
-	Assert(RelationGetDescr(rel)->natts == Natts_pathman_config);
+	Assert(tupleDescr->natts == Natts_pathman_config
+			|| tupleDescr->natts == Natts_pathman_config_historic);
 
 	snapshot = RegisterSnapshot(GetLatestSnapshot());
 #if PG_VERSION_NUM >= 120000
@@ -680,7 +683,7 @@ pathman_config_contains_relation(Oid relid, Datum *values, bool *isnull,
 		if (values && isnull)
 		{
 			htup = heap_copytuple(htup);
-			heap_deform_tuple(htup, RelationGetDescr(rel), values, isnull);
+			heap_deform_tuple(htup, tupleDescr, values, isnull);
 
 			/* Perform checks for non-NULL columns */
 			Assert(!isnull[Anum_pathman_config_partrel - 1]);
diff --git a/src/partition_creation.c b/src/partition_creation.c
index d6080c85..0f28a884 100644
--- a/src/partition_creation.c
+++ b/src/partition_creation.c
@@ -124,8 +124,8 @@ create_single_range_partition_internal(Oid parent_relid,
 	init_callback_params	callback_params;
 	List				   *trigger_columns = NIL;
 	Node				   *expr;
-	Datum		values[Natts_pathman_config];
-	bool		isnull[Natts_pathman_config];
+	Datum		values[Natts_pathman_config_historic];
+	bool		isnull[Natts_pathman_config_historic];
 
 
 	/*
@@ -361,8 +361,8 @@ Oid
 create_partitions_for_value_internal(Oid relid, Datum value, Oid value_type)
 {
 	Oid				partid = InvalidOid; /* last created partition (or InvalidOid) */
-	Datum				values[Natts_pathman_config];
-	bool				isnull[Natts_pathman_config];
+	Datum				values[Natts_pathman_config_historic];
+	bool				isnull[Natts_pathman_config_historic];
 
 	/* Get both PartRelationInfo & PATHMAN_CONFIG contents for this relation */
 	if (pathman_config_contains_relation(relid, values, isnull, NULL, NULL))
@@ -2024,8 +2024,8 @@ build_partitioning_expression(Oid parent_relid,
 							  List **columns)		/* ret val #2 */
 {
 	/* Values extracted from PATHMAN_CONFIG */
-	Datum		values[Natts_pathman_config];
-	bool		isnull[Natts_pathman_config];
+	Datum		values[Natts_pathman_config_historic];
+	bool		isnull[Natts_pathman_config_historic];
 	char	   *expr_cstr;
 	Node	   *expr;
 
diff --git a/src/pl_funcs.c b/src/pl_funcs.c
index 10538bea..029c4f75 100644
--- a/src/pl_funcs.c
+++ b/src/pl_funcs.c
@@ -794,8 +794,8 @@ add_to_pathman_config(PG_FUNCTION_ARGS)
 	uint32				children_count;
 
 	Relation			pathman_config;
-	Datum				values[Natts_pathman_config];
-	bool				isnull[Natts_pathman_config];
+	Datum				values[Natts_pathman_config_historic];
+	bool				isnull[Natts_pathman_config_historic];
 	HeapTuple			htup;
 
 	Oid					expr_type;
@@ -895,6 +895,14 @@ add_to_pathman_config(PG_FUNCTION_ARGS)
 	values[Anum_pathman_config_expr - 1]		= CStringGetTextDatum(expression);
 	isnull[Anum_pathman_config_expr - 1]		= false;
 
+	/*
+	 * In case of 1.5 update before 10e6c71 there are actually 5 attributes in
+	 * pathman_config description (including cooked expression). To avoid
+	 * potential problems we allocate 5th attribute and initialize it with null.
+	 */
+	values[Natts_pathman_config_historic - 1]	= (Datum) 0;
+	isnull[Natts_pathman_config_historic - 1]	= true;
+
 	/* Insert new row into PATHMAN_CONFIG */
 	pathman_config = heap_open_compat(get_pathman_config_relid(false), RowExclusiveLock);
 
diff --git a/src/pl_range_funcs.c b/src/pl_range_funcs.c
index 19292a0a..90787434 100644
--- a/src/pl_range_funcs.c
+++ b/src/pl_range_funcs.c
@@ -110,8 +110,8 @@ create_single_range_partition_pl(PG_FUNCTION_ARGS)
 	RangeVar   *partition_name_rv;
 	char	   *tablespace;
 
-	Datum		values[Natts_pathman_config];
-	bool		isnull[Natts_pathman_config];
+	Datum		values[Natts_pathman_config_historic];
+	bool		isnull[Natts_pathman_config_historic];
 
 
 	/* Handle 'parent_relid' */
diff --git a/src/relation_info.c b/src/relation_info.c
index db75646f..842a1625 100644
--- a/src/relation_info.c
+++ b/src/relation_info.c
@@ -350,8 +350,8 @@ get_pathman_relation_info(Oid relid)
 	{
 		PartRelationInfo   *prel = NULL;
 		ItemPointerData		iptr;
-		Datum				values[Natts_pathman_config];
-		bool				isnull[Natts_pathman_config];
+		Datum				values[Natts_pathman_config_historic];
+		bool				isnull[Natts_pathman_config_historic];
 		bool				found;
 
 		/*