From: Tom Lane Date: Tue, 4 Jun 2013 21:22:29 +0000 (-0400) Subject: Provide better message when CREATE EXTENSION can't find a target schema. X-Git-Tag: REL9_3_BETA2~47 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=530acda4dabe26a4345eccd28a92dd23b1e7a94a;p=postgresql Provide better message when CREATE EXTENSION can't find a target schema. The new message (and SQLSTATE) matches the corresponding error cases in namespace.c. This was thought to be a "can't happen" case when extension.c was written, so we didn't think hard about how to report it. But it definitely can happen in 9.2 and later, since we no longer require search_path to contain any valid schema names. It's probably also possible in 9.1 if search_path came from a noninteractive source. So, back-patch to all releases containing this code. Per report from Sean Chittenden, though this isn't exactly his patch. --- diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index 2d84ac8620..08e8cade6b 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -1394,12 +1394,16 @@ CreateExtension(CreateExtensionStmt *stmt) */ List *search_path = fetch_search_path(false); - if (search_path == NIL) /* probably can't happen */ - elog(ERROR, "there is no default creation target"); + if (search_path == NIL) /* nothing valid in search_path? */ + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_SCHEMA), + errmsg("no schema has been selected to create in"))); schemaOid = linitial_oid(search_path); schemaName = get_namespace_name(schemaOid); if (schemaName == NULL) /* recently-deleted namespace? */ - elog(ERROR, "there is no default creation target"); + ereport(ERROR, + (errcode(ERRCODE_UNDEFINED_SCHEMA), + errmsg("no schema has been selected to create in"))); list_free(search_path); }