Hello
attached patch allows raising exception from _PG_init function as was
discussed before.
regards
Pavel Stehule
*** ./src/backend/utils/fmgr/dfmgr.c.orig 2009-03-31 20:32:21.000000000 +0200
--- ./src/backend/utils/fmgr/dfmgr.c 2009-03-31 21:59:36.000000000 +0200
***************
*** 281,287 ****
*/
PG_init = (PG_init_t) pg_dlsym(file_scanner->handle, "_PG_init");
if (PG_init)
! (*PG_init) ();
/* OK to link it into list */
if (file_list == NULL)
--- 281,313 ----
*/
PG_init = (PG_init_t) pg_dlsym(file_scanner->handle, "_PG_init");
if (PG_init)
! {
! MemoryContext oldcontext = CurrentMemoryContext;
!
! PG_TRY();
! {
! /* try to init library */
! (*PG_init) ();
! }
! PG_CATCH();
! {
! ErrorData *edata;
!
! MemoryContextSwitchTo(oldcontext);
! edata = CopyErrorData();
! FlushErrorState();
!
! /* we can't to use PG_RE_THROWN after close the originator file */
! clear_external_function_hash(file_scanner->handle);
! pg_dlclose(file_scanner->handle);
! free((char *) file_scanner);
!
! ereport(ERROR,
! (errmsg("cannot initialise library \"%s\"", libname),
! errhint("Function _PG_init throws exception \"%s\".", edata->message)));
! }
! PG_END_TRY();
! }
/* OK to link it into list */
if (file_list == NULL)
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers