*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/commands/conversioncmds.c,v 1.23 2005/10/15 02:49:15 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/commands/conversioncmds.c,v 1.23.2.1 2009/02/27 16:35:42 heikki Exp $
*
*-------------------------------------------------------------------------
*/
const char *to_encoding_name = stmt->to_encoding_name;
List *func_name = stmt->func_name;
static Oid funcargs[] = {INT4OID, INT4OID, CSTRINGOID, INTERNALOID, INT4OID};
+ char result[1];
/* Convert list of names to a name and namespace */
namespaceId = QualifiedNameGetCreationNamespace(stmt->conversion_name,
aclcheck_error(aclresult, ACL_KIND_PROC,
NameListToString(func_name));
+ /*
+ * Check that the conversion function is suitable for the requested
+ * source and target encodings. We do that by calling the function with
+ * an empty string; the conversion function should throw an error if it
+ * can't perform the requested conversion.
+ */
+ OidFunctionCall5(funcoid,
+ Int32GetDatum(from_encoding),
+ Int32GetDatum(to_encoding),
+ CStringGetDatum(""),
+ CStringGetDatum(result),
+ Int32GetDatum(0));
+
/*
* All seem ok, go ahead (possible failure would be a duplicate conversion
* name)