11
11
*
12
12
*
13
13
* IDENTIFICATION
14
- * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.151 2000/02/24 16:34:21 momjian Exp $
14
+ * $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.152 2000/02/26 18:13:41 tgl Exp $
15
15
*
16
16
* HISTORY
17
17
* AUTHOR DATE MAJOR EVENT
@@ -4010,7 +4010,7 @@ character: CHARACTER opt_varying opt_charset
4010
4010
char *type, *c;
4011
4011
if (($3 == NULL ) || (strcasecmp($3 , " sql_text" ) == 0 )) {
4012
4012
if ($2 ) type = xlateSqlType(" varchar" );
4013
- else type = xlateSqlType(" char " );
4013
+ else type = xlateSqlType(" bpchar " );
4014
4014
} else {
4015
4015
if ($2 ) {
4016
4016
c = palloc(strlen(" var" ) + strlen($3 ) + 1 );
@@ -4023,10 +4023,10 @@ character: CHARACTER opt_varying opt_charset
4023
4023
};
4024
4024
$$ = type;
4025
4025
}
4026
- | CHAR opt_varying { $$ = xlateSqlType($2 ? " varchar" : " char " ); }
4026
+ | CHAR opt_varying { $$ = xlateSqlType($2 ? " varchar" : " bpchar " ); }
4027
4027
| VARCHAR { $$ = xlateSqlType(" varchar" ); }
4028
- | NATIONAL CHARACTER opt_varying { $$ = xlateSqlType($3 ? " varchar" : " char " ); }
4029
- | NCHAR opt_varying { $$ = xlateSqlType($2 ? " varchar" : " char " ); }
4028
+ | NATIONAL CHARACTER opt_varying { $$ = xlateSqlType($3 ? " varchar" : " bpchar " ); }
4029
+ | NCHAR opt_varying { $$ = xlateSqlType($2 ? " varchar" : " bpchar " ); }
4030
4030
;
4031
4031
4032
4032
opt_varying : VARYING { $$ = TRUE ; }
@@ -5536,7 +5536,8 @@ mapTargetColumns(List *src, List *dst)
5536
5536
5537
5537
5538
5538
/* xlateSqlFunc()
5539
- * Convert alternate type names to internal Postgres types.
5539
+ * Convert alternate function names to internal Postgres functions.
5540
+ *
5540
5541
* Do not convert "float", since that is handled elsewhere
5541
5542
* for FLOAT(p) syntax.
5542
5543
*/
@@ -5552,6 +5553,10 @@ xlateSqlFunc(char *name)
5552
5553
5553
5554
/* xlateSqlType()
5554
5555
* Convert alternate type names to internal Postgres types.
5556
+ *
5557
+ * NB: do NOT put "char" -> "bpchar" here, because that renders it impossible
5558
+ * to refer to our single-byte char type, even with quotes. (Without quotes,
5559
+ * CHAR is a keyword, and the code above produces "bpchar" for it.)
5555
5560
*/
5556
5561
static char *
5557
5562
xlateSqlType (char *name)
@@ -5566,8 +5571,6 @@ xlateSqlType(char *name)
5566
5571
return " float8" ;
5567
5572
else if (!strcasecmp (name, " decimal" ))
5568
5573
return " numeric" ;
5569
- else if (!strcasecmp (name, " char" ))
5570
- return " bpchar" ;
5571
5574
else if (!strcasecmp (name, " datetime" ))
5572
5575
return " timestamp" ;
5573
5576
else if (!strcasecmp (name, " timespan" ))
0 commit comments