diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2011-03-22 16:55:32 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2011-03-22 16:55:32 -0400 |
commit | 6e197cb2e537880f36828a6c55d0f6df5bf7daa8 (patch) | |
tree | 72cfdd5c6fbba12577a1c2df45c6ddf18c221905 /src/backend/utils/adt/varlena.c | |
parent | 37d6d07dda28a5dffcad6ff195ab2c83aaebcc9e (diff) | |
download | postgresql-6e197cb2e537880f36828a6c55d0f6df5bf7daa8.tar.gz postgresql-6e197cb2e537880f36828a6c55d0f6df5bf7daa8.zip |
Improve reporting of run-time-detected indeterminate-collation errors.
pg_newlocale_from_collation does not have enough context to give an error
message that's even a little bit useful, so move the responsibility for
complaining up to its callers. Also, reword ERRCODE_INDETERMINATE_COLLATION
error messages in a less jargony, more message-style-guide-compliant
fashion.
Diffstat (limited to 'src/backend/utils/adt/varlena.c')
-rw-r--r-- | src/backend/utils/adt/varlena.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/backend/utils/adt/varlena.c b/src/backend/utils/adt/varlena.c index 8a7a3cf45bf..3587fe45951 100644 --- a/src/backend/utils/adt/varlena.c +++ b/src/backend/utils/adt/varlena.c @@ -1302,7 +1302,20 @@ varstr_cmp(char *arg1, int len1, char *arg2, int len2, Oid collid) pg_locale_t mylocale = 0; if (collid != DEFAULT_COLLATION_OID) + { + if (!OidIsValid(collid)) + { + /* + * This typically means that the parser could not resolve a + * conflict of implicit collations, so report it that way. + */ + ereport(ERROR, + (errcode(ERRCODE_INDETERMINATE_COLLATION), + errmsg("could not determine which collation to use for string comparison"), + errhint("Use the COLLATE clause to set the collation explicitly."))); + } mylocale = pg_newlocale_from_collation(collid); + } #ifdef WIN32 /* Win32 does not have UTF-8, so we need to map to UTF-16 */ |