From 9f2845b44226b5e0379d69d4f202c6a08cfde5f9 Mon Sep 17 00:00:00 2001
From: Paul Guo <paulguo@gmail.com>
Date: Wed, 1 Aug 2018 11:49:08 +0800
Subject: [PATCH] Fix pg_upgrade test failure caused by the DDL below.

CREATE TABLE t111 ( a40 BIT VARYING(5) DEFAULT '1')

The failure is caused by the pg_dump diff (before and after pg_upgrade) as below.

CREATE TABLE public.t111 (
-    a40 bit varying(5) DEFAULT B'1'::bit varying
+    a40 bit varying(5) DEFAULT (B'1'::"bit")::bit varying
);

This patch is co-authored by Richard Guo <guofenglinux@gmail.com>
---
 contrib/btree_gist/expected/bit.out    | 6 +++---
 contrib/btree_gist/expected/varbit.out | 6 +++---
 src/backend/utils/adt/ruleutils.c      | 2 +-
 src/bin/pg_upgrade/test.sh             | 0
 4 files changed, 7 insertions(+), 7 deletions(-)
 mode change 100644 => 100755 src/bin/pg_upgrade/test.sh

diff --git a/contrib/btree_gist/expected/bit.out b/contrib/btree_gist/expected/bit.out
index 8606baf366..e57871f310 100644
--- a/contrib/btree_gist/expected/bit.out
+++ b/contrib/btree_gist/expected/bit.out
@@ -68,9 +68,9 @@ SELECT count(*) FROM bittmp WHERE a >   '011011000100010111011000110000100';
 SET enable_bitmapscan=off;
 EXPLAIN (COSTS OFF)
 SELECT a FROM bittmp WHERE a BETWEEN '1000000' and '1000001';
-                              QUERY PLAN                               
------------------------------------------------------------------------
+                             QUERY PLAN                              
+---------------------------------------------------------------------
  Index Only Scan using bitidx on bittmp
-   Index Cond: ((a >= B'1000000'::"bit") AND (a <= B'1000001'::"bit"))
+   Index Cond: ((a >= '1000000'::"bit") AND (a <= '1000001'::"bit"))
 (2 rows)
 
diff --git a/contrib/btree_gist/expected/varbit.out b/contrib/btree_gist/expected/varbit.out
index 538ace85c9..ede36bc3ea 100644
--- a/contrib/btree_gist/expected/varbit.out
+++ b/contrib/btree_gist/expected/varbit.out
@@ -68,9 +68,9 @@ SELECT count(*) FROM varbittmp WHERE a >   '1110100111010'::varbit;
 SET enable_bitmapscan=off;
 EXPLAIN (COSTS OFF)
 SELECT a FROM bittmp WHERE a BETWEEN '1000000' and '1000001';
-                              QUERY PLAN                               
------------------------------------------------------------------------
+                             QUERY PLAN                              
+---------------------------------------------------------------------
  Index Only Scan using bitidx on bittmp
-   Index Cond: ((a >= B'1000000'::"bit") AND (a <= B'1000001'::"bit"))
+   Index Cond: ((a >= '1000000'::"bit") AND (a <= '1000001'::"bit"))
 (2 rows)
 
diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c
index 03e9a28a63..ea63e912df 100644
--- a/src/backend/utils/adt/ruleutils.c
+++ b/src/backend/utils/adt/ruleutils.c
@@ -9459,7 +9459,7 @@ get_const_expr(Const *constval, deparse_context *context, int showtype)
 
 		case BITOID:
 		case VARBITOID:
-			appendStringInfo(buf, "B'%s'", extval);
+			appendStringInfo(buf, "'%s'", extval);
 			break;
 
 		case BOOLOID:
diff --git a/src/bin/pg_upgrade/test.sh b/src/bin/pg_upgrade/test.sh
old mode 100644
new mode 100755
-- 
2.14.3

