Index: src/backend/utils/adt/varchar.c =================================================================== RCS file: /usr/local/cvsroot/pgsql-server/src/backend/utils/adt/varchar.c,v retrieving revision 1.103 diff -2 -c -r1.103 varchar.c *** src/backend/utils/adt/varchar.c 29 Nov 2003 19:51:59 -0000 1.103 --- src/backend/utils/adt/varchar.c 27 Jan 2004 06:18:33 -0000 *************** *** 511,522 **** { BpChar *arg = PG_GETARG_BPCHAR_P(0); /* optimization for single byte encoding */ if (pg_database_encoding_max_length() <= 1) ! PG_RETURN_INT32(VARSIZE(arg) - VARHDRSZ); ! PG_RETURN_INT32( ! pg_mbstrlen_with_len(VARDATA(arg), VARSIZE(arg) - VARHDRSZ) ! ); } --- 511,530 ---- { BpChar *arg = PG_GETARG_BPCHAR_P(0); + int len; + char *str; + len = bcTruelen(arg); + /* optimization for single byte encoding */ if (pg_database_encoding_max_length() <= 1) ! PG_RETURN_INT32(len); ! str = palloc(len); ! StrNCpy(str,VARDATA(arg),len); ! ! len = pg_mbstrlen_with_len(str, len); ! pfree(str); ! ! PG_RETURN_INT32(len); }