aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/mb
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils/mb')
-rw-r--r--src/backend/utils/mb/conv.c17
-rw-r--r--src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c5
-rw-r--r--src/backend/utils/mb/encnames.c8
-rw-r--r--src/backend/utils/mb/mbutils.c39
4 files changed, 44 insertions, 25 deletions
diff --git a/src/backend/utils/mb/conv.c b/src/backend/utils/mb/conv.c
index 2586365f3bc..ec1af6a4e72 100644
--- a/src/backend/utils/mb/conv.c
+++ b/src/backend/utils/mb/conv.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/mb/conv.c,v 1.45 2003/04/12 07:53:57 ishii Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/mb/conv.c,v 1.46 2003/07/25 20:17:54 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -371,7 +371,10 @@ UtfToLocal(unsigned char *utf, unsigned char *iso,
sizeof(pg_utf_to_local), compare1);
if (p == NULL)
{
- elog(WARNING, "UtfToLocal: could not convert UTF-8 (0x%04x). Ignored", iutf);
+ ereport(WARNING,
+ (errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
+ errmsg("ignoring unconvertible UTF-8 character 0x%04x",
+ iutf)));
continue;
}
if (p->code & 0xff000000)
@@ -398,7 +401,9 @@ LocalToUtf(unsigned char *iso, unsigned char *utf,
pg_local_to_utf *p;
if (!PG_VALID_ENCODING(encoding))
- elog(ERROR, "Invalid encoding number %d", encoding);
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("invalid encoding number: %d", encoding)));
for (; len > 0 && *iso; len -= l)
{
@@ -435,8 +440,10 @@ LocalToUtf(unsigned char *iso, unsigned char *utf,
sizeof(pg_local_to_utf), compare2);
if (p == NULL)
{
- elog(WARNING, "LocalToUtf: could not convert (0x%04x) %s to UTF-8. Ignored",
- iiso, (&pg_enc2name_tbl[encoding])->name);
+ ereport(WARNING,
+ (errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
+ errmsg("ignoring unconvertible %s character 0x%04x",
+ (&pg_enc2name_tbl[encoding])->name, iiso)));
continue;
}
if (p->utf & 0xff000000)
diff --git a/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c b/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c
index 78ca64e6d86..122a92844e2 100644
--- a/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c
+++ b/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c,v 1.5 2002/10/26 15:01:00 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c,v 1.6 2003/07/25 20:17:56 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -84,7 +84,8 @@ utf8_to_iso8859_1(PG_FUNCTION_ARGS)
len -= 2;
}
else if ((c & 0xe0) == 0xe0)
- elog(ERROR, "Could not convert UTF-8 to ISO8859-1");
+ elog(ERROR, "could not convert UTF-8 character 0x%04x to ISO8859-1",
+ c);
else
{
*dest++ = c;
diff --git a/src/backend/utils/mb/encnames.c b/src/backend/utils/mb/encnames.c
index 93a7dc240de..86b3bfa6cbc 100644
--- a/src/backend/utils/mb/encnames.c
+++ b/src/backend/utils/mb/encnames.c
@@ -2,7 +2,7 @@
* Encoding names and routines for work with it. All
* in this file is shared bedween FE and BE.
*
- * $Id: encnames.c,v 1.16 2003/06/12 08:15:28 momjian Exp $
+ * $Id: encnames.c,v 1.17 2003/07/25 20:17:55 tgl Exp $
*/
#ifdef FRONTEND
#include "postgres_fe.h"
@@ -437,10 +437,12 @@ pg_char_to_encname_struct(const char *name)
if (strlen(name) > NAMEDATALEN)
{
#ifdef FRONTEND
- fprintf(stderr, "pg_char_to_encname_struct(): encoding name too long");
+ fprintf(stderr, "encoding name too long\n");
return NULL;
#else
- elog(ERROR, "pg_char_to_encname_struct(): encoding name too long");
+ ereport(ERROR,
+ (errcode(ERRCODE_NAME_TOO_LONG),
+ errmsg("encoding name too long")));
#endif
}
key = clean_encoding_name((char *) name, buff);
diff --git a/src/backend/utils/mb/mbutils.c b/src/backend/utils/mb/mbutils.c
index fe9829a8cf2..6ec2c1ad02f 100644
--- a/src/backend/utils/mb/mbutils.c
+++ b/src/backend/utils/mb/mbutils.c
@@ -4,7 +4,7 @@
* (currently mule internal code (mic) is used)
* Tatsuo Ishii
*
- * $Header: /cvsroot/pgsql/src/backend/utils/mb/mbutils.c,v 1.41 2003/04/27 18:01:46 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/mb/mbutils.c,v 1.42 2003/07/25 20:17:55 tgl Exp $
*/
#include "postgres.h"
@@ -183,9 +183,11 @@ InitializeClientEncoding(void)
* Oops, the requested conversion is not available.
* We couldn't fail before, but we can now.
*/
- elog(FATAL, "Conversion between %s and %s is not supported",
- pg_enc2name_tbl[pending_client_encoding].name,
- GetDatabaseEncodingName());
+ ereport(FATAL,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("conversion between %s and %s is not supported",
+ pg_enc2name_tbl[pending_client_encoding].name,
+ GetDatabaseEncodingName())));
}
}
@@ -245,23 +247,24 @@ pg_do_encoding_conversion(unsigned char *src, int len,
proc = FindDefaultConversionProc(src_encoding, dest_encoding);
if (!OidIsValid(proc))
{
- elog(LOG, "default conversion proc for %s to %s not found",
- pg_encoding_to_char(src_encoding), pg_encoding_to_char(dest_encoding));
+ ereport(LOG,
+ (errcode(ERRCODE_UNDEFINED_FUNCTION),
+ errmsg("default conversion proc for %s to %s does not exist",
+ pg_encoding_to_char(src_encoding),
+ pg_encoding_to_char(dest_encoding))));
return src;
}
/*
- * XXX we shoud avoid throwing errors in OidFuctionCall. Otherwise we
- * are going into inifinite loop! So we have to make sure that the
+ * XXX we should avoid throwing errors in OidFunctionCall. Otherwise we
+ * are going into infinite loop! So we have to make sure that the
* function exists before calling OidFunctionCall.
*/
if (!SearchSysCacheExists(PROCOID,
ObjectIdGetDatum(proc),
0, 0, 0))
{
- elog(LOG, "default conversion proc %u for %s to %s not found in pg_proc",
- proc,
- pg_encoding_to_char(src_encoding), pg_encoding_to_char(dest_encoding));
+ elog(LOG, "cache lookup failed for function %u", proc);
return src;
}
@@ -318,9 +321,15 @@ pg_convert2(PG_FUNCTION_ARGS)
int len;
if (src_encoding < 0)
- elog(ERROR, "Invalid source encoding name %s", src_encoding_name);
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("invalid source encoding name \"%s\"",
+ src_encoding_name)));
if (dest_encoding < 0)
- elog(ERROR, "Invalid destination encoding name %s", dest_encoding_name);
+ ereport(ERROR,
+ (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
+ errmsg("invalid destination encoding name \"%s\"",
+ dest_encoding_name)));
/* make sure that source string is null terminated */
len = VARSIZE(string) - VARHDRSZ;
@@ -330,7 +339,7 @@ pg_convert2(PG_FUNCTION_ARGS)
result = pg_do_encoding_conversion(str, len, src_encoding, dest_encoding);
if (result == NULL)
- elog(ERROR, "Encoding conversion failed");
+ elog(ERROR, "encoding conversion failed");
/*
* build text data type structure. we cannot use textin() here, since
@@ -551,7 +560,7 @@ void
SetDatabaseEncoding(int encoding)
{
if (!PG_VALID_BE_ENCODING(encoding))
- elog(ERROR, "SetDatabaseEncoding(): invalid database encoding");
+ elog(ERROR, "invalid database encoding");
DatabaseEncoding = &pg_enc2name_tbl[encoding];
Assert(DatabaseEncoding->encoding == encoding);