Thread: Improved error message for CREATE EXTENSION patch...
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
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
>>> "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
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