Thread: Improved error message for CREATE EXTENSION patch...

Improved error message for CREATE EXTENSION patch...

From
Sean Chittenden
Date:
I ran in to the following situation:

> SET search_path = ENOENT, also_does_not_exist;
> CREATE EXTENSION pg_repack;
> ERROR:  XX000: there is no default creation target
> LOCATION:  CreateExtension, extension.c:1395

Which left me checking out the source code to figure out exactly what the problem was. Attached is an improved error
message:

> "ERROR:  XX000: no schemas in search_path are available for CREATE EXTENSION"

-sc



--
Sean Chittenden
sean@chittenden.org


Attachment

Re: Improved error message for CREATE EXTENSION patch...

From
Tom Lane
Date:
Sean Chittenden <sean@chittenden.org> writes:
> I ran in to the following situation:
>> SET search_path = ENOENT, also_does_not_exist;
>> CREATE EXTENSION pg_repack;
>> ERROR:  XX000: there is no default creation target
>> LOCATION:  CreateExtension, extension.c:1395

> Which left me checking out the source code to figure out exactly what the problem was. Attached is an improved error
message:

>> "ERROR:  XX000: no schemas in search_path are available for CREATE EXTENSION"

Hm, I'm not sure that's much better than the existing wording.  The
bigger point here though is that if we consider this to be a user-facing
error case, it ought to be ereport not elog.

I checked what you get for the normal non-extension case:

regression=# set search_path = bogus;
SET
regression=# create table t1 (f1 int);
ERROR:  no schema has been selected to create in
regression=# \set VERBOSITY verbose
regression=# create table t1 (f1 int);
ERROR:  3F000: no schema has been selected to create in
LOCATION:  RangeVarGetCreationNamespace, namespace.c:485

Seems like we ought to use the same message (and SQLSTATE) as in
namespace.c, since nobody's complained about that one.
        regards, tom lane



Re: Improved error message for CREATE EXTENSION patch...

From
Sean Chittenden
Date:
>>> "ERROR:  XX000: no schemas in search_path are available for CREATE EXTENSION"
>
> Hm, I'm not sure that's much better than the existing wording.  The
> bigger point here though is that if we consider this to be a user-facing
> error case, it ought to be ereport not elog.
>
> I checked what you get for the normal non-extension case:
>
> regression=# set search_path = bogus;
> SET
> regression=# create table t1 (f1 int);
> ERROR:  no schema has been selected to create in
> regression=# \set VERBOSITY verbose
> regression=# create table t1 (f1 int);
> ERROR:  3F000: no schema has been selected to create in
> LOCATION:  RangeVarGetCreationNamespace, namespace.c:485
>
> Seems like we ought to use the same message (and SQLSTATE) as in
> namespace.c, since nobody's complained about that one.


Sounds good to me and is clear enough that it would unblock me w/o having to resort to the source tree. -sc


--
Sean Chittenden
sean@chittenden.org




Re: Improved error message for CREATE EXTENSION patch...

From
Tom Lane
Date:
Sean Chittenden <sean@chittenden.org> writes:
>> Seems like we ought to use the same message (and SQLSTATE) as in
>> namespace.c, since nobody's complained about that one.

> Sounds good to me and is clear enough that it would unblock me w/o having to resort to the source tree. -sc

OK, done that way.
        regards, tom lane