diff --git a/src/test/regress/expected/errors.out b/src/test/regress/expected/errors.out
index 92644c7c8f6b93eaf8e8952ba24176084b9b8508..1add0bcc9c94a466274a57576072d618d31add42 100644
--- a/src/test/regress/expected/errors.out
+++ b/src/test/regress/expected/errors.out
@@ -11,7 +11,7 @@ ERROR:  attribute 'nonesuch' not found
 QUERY: select distinct on foobar from pg_database;
 ERROR:  parser: parse error at or near "from"
 QUERY: select distinct on foobar * from pg_database;
-ERROR:  The field specified in the UNIQUE ON clause is not in the targetlist
+ERROR:  All fields in the UNIQUE ON clause must appear in the target list
 QUERY: delete from;
 ERROR:  parser: parse error at or near ";"
 QUERY: delete from nonesuch;
diff --git a/src/test/regress/expected/geometry.out b/src/test/regress/expected/geometry.out
index a423ae314e04f7408666b6338ce7947ee6df6475..bc30045cacdbb80051d7312d3ea72f446a039520 100644
--- a/src/test/regress/expected/geometry.out
+++ b/src/test/regress/expected/geometry.out
@@ -87,43 +87,42 @@ one|f1
 
 QUERY: SELECT '' AS count, p.f1, l.s, l.s # p.f1 AS intersection
    FROM LSEG_TBL l, POINT_TBL p;
-ERROR:  There is no operator '#' for types 'lseg' and 'point'
-	You will either have to retype this query using an explicit cast,
-	or you will have to define the operator using CREATE OPERATOR
+ERROR:  There is more than one possible operator '#' for types 'lseg' and 'point'
+	You will have to retype this query using an explicit cast
 QUERY: SELECT '' AS thirty, p.f1, l.s, p.f1 ## l.s AS closest
    FROM LSEG_TBL l, POINT_TBL p;
-thirty|f1        |s                            |closest                             
-------+----------+-----------------------------+------------------------------------
-      |(0,0)     |[(1,2),(3,4)]                |(1,2)                               
-      |(-10,0)   |[(1,2),(3,4)]                |(1,2)                               
-      |(-3,4)    |[(1,2),(3,4)]                |(1,2)                               
-      |(5.1,34.5)|[(1,2),(3,4)]                |(3,4)                               
-      |(-5,-12)  |[(1,2),(3,4)]                |(1,2)                               
-      |(10,10)   |[(1,2),(3,4)]                |(3,4)                               
-      |(0,0)     |[(0,0),(6,6)]                |(-0,0)                              
-      |(-10,0)   |[(0,0),(6,6)]                |(0,0)                               
-      |(-3,4)    |[(0,0),(6,6)]                |(0,0)                               
-      |(5.1,34.5)|[(0,0),(6,6)]                |(6,6)                               
-      |(-5,-12)  |[(0,0),(6,6)]                |(0,0)                               
-      |(10,10)   |[(0,0),(6,6)]                |(6,6)                               
-      |(0,0)     |[(10,-10),(-3,-4)]           |(-3,-4)                             
-      |(-10,0)   |[(10,-10),(-3,-4)]           |(-3,-4)                             
-      |(-3,4)    |[(10,-10),(-3,-4)]           |(-3,-4)                             
-      |(5.1,34.5)|[(10,-10),(-3,-4)]           |(-3,-4)                             
-      |(-5,-12)  |[(10,-10),(-3,-4)]           |(-3,-4)                             
-      |(10,10)   |[(10,-10),(-3,-4)]           |(-3,-4)                             
-      |(0,0)     |[(-1000000,200),(300000,-40)]|(0.0028402365895872,15.384614860264)
-      |(-10,0)   |[(-1000000,200),(300000,-40)]|(-9.99715942258202,15.3864610140473)
-      |(-3,4)    |[(-1000000,200),(300000,-40)]|(-2.99789812267519,15.3851688427303)
-      |(5.1,34.5)|[(-1000000,200),(300000,-40)]|(5.09647083221496,15.3836744976925) 
-      |(-5,-12)  |[(-1000000,200),(300000,-40)]|(-4.99494420845634,15.3855375281616)
-      |(10,10)   |[(-1000000,200),(300000,-40)]|(10.000993741978,15.3827690473092)  
-      |(0,0)     |[(11,22),(33,44)]            |(11,22)                             
-      |(-10,0)   |[(11,22),(33,44)]            |(11,22)                             
-      |(-3,4)    |[(11,22),(33,44)]            |(11,22)                             
-      |(5.1,34.5)|[(11,22),(33,44)]            |(11,22)                             
-      |(-5,-12)  |[(11,22),(33,44)]            |(11,22)                             
-      |(10,10)   |[(11,22),(33,44)]            |(11,22)                             
+thirty|f1        |s                            |closest                              
+------+----------+-----------------------------+-------------------------------------
+      |(0,0)     |[(1,2),(3,4)]                |(1,2)                                
+      |(-10,0)   |[(1,2),(3,4)]                |(1,2)                                
+      |(-3,4)    |[(1,2),(3,4)]                |(1,2)                                
+      |(5.1,34.5)|[(1,2),(3,4)]                |(3,4)                                
+      |(-5,-12)  |[(1,2),(3,4)]                |(1,2)                                
+      |(10,10)   |[(1,2),(3,4)]                |(3,4)                                
+      |(0,0)     |[(0,0),(6,6)]                |(-0,0)                               
+      |(-10,0)   |[(0,0),(6,6)]                |(0,0)                                
+      |(-3,4)    |[(0,0),(6,6)]                |(0.5,0.5)                            
+      |(5.1,34.5)|[(0,0),(6,6)]                |(6,6)                                
+      |(-5,-12)  |[(0,0),(6,6)]                |(0,0)                                
+      |(10,10)   |[(0,0),(6,6)]                |(6,6)                                
+      |(0,0)     |[(10,-10),(-3,-4)]           |(-2.04878048780488,-4.4390243902439) 
+      |(-10,0)   |[(10,-10),(-3,-4)]           |(-3,-4)                              
+      |(-3,4)    |[(10,-10),(-3,-4)]           |(-3,-4)                              
+      |(5.1,34.5)|[(10,-10),(-3,-4)]           |(-3,-4)                              
+      |(-5,-12)  |[(10,-10),(-3,-4)]           |(-1.60487804878049,-4.64390243902439)
+      |(10,10)   |[(10,-10),(-3,-4)]           |(2.39024390243902,-6.48780487804878) 
+      |(0,0)     |[(-1000000,200),(300000,-40)]|(0.0028402365895872,15.384614860264) 
+      |(-10,0)   |[(-1000000,200),(300000,-40)]|(-9.99715942258202,15.3864610140473) 
+      |(-3,4)    |[(-1000000,200),(300000,-40)]|(-2.99789812267519,15.3851688427303) 
+      |(5.1,34.5)|[(-1000000,200),(300000,-40)]|(5.09647083221496,15.3836744976925)  
+      |(-5,-12)  |[(-1000000,200),(300000,-40)]|(-4.99494420845634,15.3855375281616) 
+      |(10,10)   |[(-1000000,200),(300000,-40)]|(10.000993741978,15.3827690473092)   
+      |(0,0)     |[(11,22),(33,44)]            |(11,22)                              
+      |(-10,0)   |[(11,22),(33,44)]            |(11,22)                              
+      |(-3,4)    |[(11,22),(33,44)]            |(11,22)                              
+      |(5.1,34.5)|[(11,22),(33,44)]            |(14.3,25.3)                          
+      |(-5,-12)  |[(11,22),(33,44)]            |(11,22)                              
+      |(10,10)   |[(11,22),(33,44)]            |(11,22)                              
 (30 rows)
 
 QUERY: SELECT '' as six, box(f1) AS box FROM CIRCLE_TBL;
diff --git a/src/test/regress/expected/strings.out b/src/test/regress/expected/strings.out
index acac8ee7b04192742065ddbfe72133ed20a8be8e..62a4e06417882a962a5377567e0e3b8f9b63bca1 100644
--- a/src/test/regress/expected/strings.out
+++ b/src/test/regress/expected/strings.out
@@ -9,9 +9,146 @@ first line - next line - third line
 
 QUERY: SELECT 'first line'
 ' - next line' /* this comment is not allowed here */
-' - third line';
+' - third line'
+	AS "Illegal comment within continuation";
 ERROR:  parser: parse error at or near "'"
-QUERY: SELECT text(f1) FROM CHAR_TBL;
-ERROR:  function text(bpchar) does not exist
-QUERY: SELECT text(f1) FROM VARCHAR_TBL;
-ERROR:  function text(varchar) does not exist
+QUERY: SELECT CAST(f1 AS text) AS "text(char)" FROM CHAR_TBL;
+text(char)
+----------
+a         
+ab        
+abcd      
+abcd      
+(4 rows)
+
+QUERY: SELECT CAST(f1 AS text) AS "text(varchar)" FROM VARCHAR_TBL;
+text(varchar)
+-------------
+a            
+ab           
+abcd         
+abcd         
+(4 rows)
+
+QUERY: SELECT CAST(name 'namefield' AS text) AS "text(name)";
+text(name)
+----------
+namefield 
+(1 row)
+
+QUERY: SELECT CAST(f1 AS char) AS "char(text)" FROM TEXT_TBL;
+char(text)       
+-----------------
+doh!             
+hi de ho neighbor
+(2 rows)
+
+QUERY: SELECT CAST(f1 AS char) AS "char(varchar)" FROM VARCHAR_TBL;
+char(varchar)
+-------------
+a            
+ab           
+abcd         
+abcd         
+(4 rows)
+
+QUERY: SELECT CAST(name 'namefield' AS char) AS "char(name)";
+char(name)
+----------
+namefield 
+(1 row)
+
+QUERY: SELECT CAST(f1 AS varchar) AS "varchar(text)" FROM TEXT_TBL;
+varchar(text)    
+-----------------
+doh!             
+hi de ho neighbor
+(2 rows)
+
+QUERY: SELECT CAST(f1 AS varchar) AS "varchar(char)" FROM CHAR_TBL;
+varchar(char)
+-------------
+a            
+ab           
+abcd         
+abcd         
+(4 rows)
+
+QUERY: SELECT CAST(name 'namefield' AS varchar) AS "varchar(name)";
+varchar(name)
+-------------
+namefield    
+(1 row)
+
+QUERY: SELECT TRIM(BOTH FROM '  bunch o blanks  ') AS "bunch o blanks";
+bunch o blanks
+--------------
+bunch o blanks
+(1 row)
+
+QUERY: SELECT TRIM(LEADING FROM '  bunch o blanks  ') AS "bunch o blanks  ";
+bunch o blanks  
+----------------
+bunch o blanks  
+(1 row)
+
+QUERY: SELECT TRIM(TRAILING FROM '  bunch o blanks  ') AS "  bunch o blanks";
+  bunch o blanks
+----------------
+  bunch o blanks
+(1 row)
+
+QUERY: SELECT TRIM(BOTH 'x' FROM 'xxxxxsome Xsxxxxx') AS "some Xs";
+some Xs
+-------
+some Xs
+(1 row)
+
+QUERY: SELECT SUBSTRING('1234567890' FROM 3) AS "34567890";
+34567890
+--------
+34567890
+(1 row)
+
+QUERY: SELECT SUBSTRING('1234567890' FROM 4 FOR 3) AS "456";
+456
+---
+456
+(1 row)
+
+QUERY: SELECT POSITION('4' IN '1234567890') AS "4";
+4
+-
+4
+(1 row)
+
+QUERY: SELECT POSITION(5 IN '1234567890') AS "5";
+5
+-
+5
+(1 row)
+
+QUERY: SELECT 'unknown' || ' and unknown' AS "Concat unknown types";
+Concat unknown types
+--------------------
+unknown and unknown 
+(1 row)
+
+QUERY: SELECT text 'text' || ' and unknown' AS "Concat text to unknown type";
+Concat text to unknown type
+---------------------------
+text and unknown           
+(1 row)
+
+QUERY: SELECT text 'text' || char ' and char' AS "Concat text to char";
+Concat text to char
+-------------------
+text and char      
+(1 row)
+
+QUERY: SELECT text 'text' || varchar ' and varchar' AS "Concat text to varchar";
+Concat text to varchar
+----------------------
+text and varchar      
+(1 row)
+
diff --git a/src/test/regress/expected/union.out b/src/test/regress/expected/union.out
new file mode 100644
index 0000000000000000000000000000000000000000..8b0f6d7161f1dd928760eec3cdb5e9628745d2c5
--- /dev/null
+++ b/src/test/regress/expected/union.out
@@ -0,0 +1,241 @@
+QUERY: SELECT 1 AS two UNION SELECT 2;
+two
+---
+  1
+  2
+(2 rows)
+
+QUERY: SELECT 1 AS one UNION SELECT 1;
+one
+---
+  1
+(1 row)
+
+QUERY: SELECT 1 AS two UNION ALL SELECT 2;
+two
+---
+  1
+  2
+(2 rows)
+
+QUERY: SELECT 1 AS two UNION ALL SELECT 1;
+two
+---
+  1
+  1
+(2 rows)
+
+QUERY: SELECT 1 AS three UNION SELECT 2 UNION SELECT 3;
+three
+-----
+    1
+    2
+    3
+(3 rows)
+
+QUERY: SELECT 1 AS two UNION SELECT 2 UNION SELECT 2;
+two
+---
+  1
+  2
+(2 rows)
+
+QUERY: SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2;
+three
+-----
+    1
+    2
+    2
+(3 rows)
+
+QUERY: SELECT 1.1 AS two UNION SELECT 2.2;
+two
+---
+1.1
+2.2
+(2 rows)
+
+QUERY: SELECT 1.1 AS two UNION SELECT 2;
+two
+---
+1.1
+  2
+(2 rows)
+
+QUERY: SELECT 1 AS two UNION SELECT 2.2;
+two
+---
+  1
+  2
+(2 rows)
+
+QUERY: SELECT 1 AS one UNION SELECT 1.1;
+one
+---
+  1
+(1 row)
+
+QUERY: SELECT 1.1 AS two UNION ALL SELECT 2;
+two
+---
+1.1
+  2
+(2 rows)
+
+QUERY: SELECT 1 AS two UNION ALL SELECT 1;
+two
+---
+  1
+  1
+(2 rows)
+
+QUERY: SELECT 1 AS three UNION SELECT 2 UNION SELECT 3;
+three
+-----
+    1
+    2
+    3
+(3 rows)
+
+QUERY: SELECT 1 AS two UNION SELECT 2 UNION SELECT 2;
+two
+---
+  1
+  2
+(2 rows)
+
+QUERY: SELECT 1 AS three UNION SELECT 2 UNION ALL SELECT 2;
+three
+-----
+    1
+    2
+    2
+(3 rows)
+
+QUERY: SELECT f1 AS five FROM FLOAT8_TBL
+UNION
+SELECT f1 FROM FLOAT8_TBL;
+five                 
+---------------------
+-1.2345678901234e+200
+-1004.3              
+-34.84               
+-1.2345678901234e-200
+0                    
+(5 rows)
+
+QUERY: SELECT f1 AS ten FROM FLOAT8_TBL
+UNION ALL
+SELECT f1 FROM FLOAT8_TBL;
+ten                  
+---------------------
+0                    
+-34.84               
+-1004.3              
+-1.2345678901234e+200
+-1.2345678901234e-200
+0                    
+-34.84               
+-1004.3              
+-1.2345678901234e+200
+-1.2345678901234e-200
+(10 rows)
+
+QUERY: SELECT f1 AS nine FROM FLOAT8_TBL
+UNION
+SELECT f1 FROM INT4_TBL;
+nine                 
+---------------------
+-1.2345678901234e+200
+-2147483647          
+-123456              
+-1004.3              
+-34.84               
+-1.2345678901234e-200
+0                    
+123456               
+2147483647           
+(9 rows)
+
+QUERY: SELECT f1 AS ten FROM FLOAT8_TBL
+UNION ALL
+SELECT f1 FROM INT4_TBL;
+ten                  
+---------------------
+0                    
+-34.84               
+-1004.3              
+-1.2345678901234e+200
+-1.2345678901234e-200
+0                    
+123456               
+-123456              
+2147483647           
+-2147483647          
+(10 rows)
+
+QUERY: SELECT f1 AS five FROM FLOAT8_TBL
+  WHERE f1 BETWEEN -1e6 AND 1e6
+UNION
+SELECT f1 FROM INT4_TBL
+  WHERE f1 BETWEEN 0 AND 1000000;
+                 five
+---------------------
+              -1004.3
+               -34.84
+-1.2345678901234e-200
+                    0
+               123456
+(5 rows)
+
+QUERY: SELECT f1 AS five FROM VARCHAR_TBL
+UNION
+SELECT f1 FROM CHAR_TBL;
+five
+----
+a   
+a   
+ab  
+ab  
+abcd
+(5 rows)
+
+QUERY: SELECT f1 AS three FROM VARCHAR_TBL
+UNION
+SELECT TRIM(TRAILING FROM f1) FROM CHAR_TBL;
+three
+-----
+a    
+ab   
+abcd 
+(3 rows)
+
+QUERY: SELECT f1 AS eight FROM VARCHAR_TBL
+UNION ALL
+SELECT f1 FROM CHAR_TBL;
+eight
+-----
+a    
+ab   
+abcd 
+abcd 
+a    
+ab   
+abcd 
+abcd 
+(8 rows)
+
+QUERY: SELECT f1 AS five FROM TEXT_TBL
+UNION
+SELECT f1 FROM VARCHAR_TBL
+UNION
+SELECT TRIM(TRAILING FROM f1) FROM CHAR_TBL;
+five             
+-----------------
+a                
+ab               
+abcd             
+doh!             
+hi de ho neighbor
+(5 rows)
+