aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/conversioncmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/conversioncmds.c')
-rw-r--r--src/backend/commands/conversioncmds.c40
1 files changed, 12 insertions, 28 deletions
diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c
index 614d3676c21..6115b0e12e5 100644
--- a/src/backend/commands/conversioncmds.c
+++ b/src/backend/commands/conversioncmds.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/conversioncmds.c,v 1.4 2002/09/04 20:31:14 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/conversioncmds.c,v 1.5 2002/11/02 02:33:03 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -38,17 +38,14 @@ CreateConversionCommand(CreateConversionStmt *stmt)
int for_encoding;
int to_encoding;
Oid funcoid;
- Oid funcnamespace;
- char *dummy;
-
const char *for_encoding_name = stmt->for_encoding_name;
const char *to_encoding_name = stmt->to_encoding_name;
List *func_name = stmt->func_name;
-
static Oid funcargs[] = {INT4OID, INT4OID, CSTRINGOID, CSTRINGOID, INT4OID};
/* Convert list of names to a name and namespace */
- namespaceId = QualifiedNameGetCreationNamespace(stmt->conversion_name, &conversion_name);
+ namespaceId = QualifiedNameGetCreationNamespace(stmt->conversion_name,
+ &conversion_name);
/* Check we have creation rights in target namespace */
aclresult = pg_namespace_aclcheck(namespaceId, GetUserId(), ACL_CREATE);
@@ -70,17 +67,13 @@ CreateConversionCommand(CreateConversionStmt *stmt)
*/
funcoid = LookupFuncName(func_name, sizeof(funcargs) / sizeof(Oid), funcargs);
if (!OidIsValid(funcoid))
- elog(ERROR, "Function %s does not exist", NameListToString(func_name));
-
- /* Check the rights for this function and name space */
- funcnamespace = QualifiedNameGetCreationNamespace(func_name, &dummy);
- aclresult = pg_namespace_aclcheck(namespaceId, GetUserId(), ACL_USAGE);
- if (aclresult != ACLCHECK_OK)
- aclcheck_error(aclresult, get_namespace_name(funcnamespace));
+ func_error("CreateConversion", func_name,
+ sizeof(funcargs) / sizeof(Oid), funcargs, NULL);
+ /* Check we have EXECUTE rights for the function */
aclresult = pg_proc_aclcheck(funcoid, GetUserId(), ACL_EXECUTE);
if (aclresult != ACLCHECK_OK)
- aclcheck_error(aclresult, get_namespace_name(funcnamespace));
+ aclcheck_error(aclresult, NameListToString(func_name));
/*
* All seem ok, go ahead (possible failure would be a duplicate
@@ -96,21 +89,12 @@ CreateConversionCommand(CreateConversionStmt *stmt)
void
DropConversionCommand(List *name, DropBehavior behavior)
{
- Oid namespaceId;
- char *conversion_name;
- AclResult aclresult;
+ Oid conversionOid;
- /* Convert list of names to a name and namespace */
- namespaceId = QualifiedNameGetCreationNamespace(name, &conversion_name);
+ conversionOid = FindConversionByName(name);
- /* Check we have creation rights in target namespace */
- aclresult = pg_namespace_aclcheck(namespaceId, GetUserId(), ACL_CREATE);
- if (aclresult != ACLCHECK_OK)
- aclcheck_error(aclresult, get_namespace_name(namespaceId));
+ if (!OidIsValid(conversionOid))
+ elog(ERROR, "conversion %s not found", NameListToString(name));
- /*
- * Go ahead (possible failure would be: none existing conversion not
- * ower of this conversion
- */
- ConversionDrop(conversion_name, namespaceId, GetUserId(), behavior);
+ ConversionDrop(conversionOid, behavior);
}