diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/parser/parse_expr.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/backend/parser/parse_expr.c b/src/backend/parser/parse_expr.c index ebb418ee904..745bc9e7877 100644 --- a/src/backend/parser/parse_expr.c +++ b/src/backend/parser/parse_expr.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.129.2.1 2002/12/27 20:06:28 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_expr.c,v 1.129.2.2 2005/05/24 23:52:02 ishii Exp $ * *------------------------------------------------------------------------- */ @@ -17,6 +17,7 @@ #include "catalog/pg_operator.h" #include "catalog/pg_proc.h" +#include "mb/pg_wchar.h" #include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/params.h" @@ -979,7 +980,13 @@ exprTypmod(Node *expr) { case BPCHAROID: if (!con->constisnull) - return VARSIZE(DatumGetPointer(con->constvalue)); + { + int32 len = VARSIZE(DatumGetPointer(con->constvalue)); + + if (pg_database_encoding_max_length() > 1) + len = pg_mbstrlen_with_len(VARDATA(DatumGetPointer(con->constvalue)), len); + return len; + } break; default: break; |