On Tue, Jan 29, 2019 at 4:30 AM Alexander Korotkov <a.korot...@postgrespro.ru> wrote: > On Tue, Jan 29, 2019 at 4:03 AM Andres Freund <and...@anarazel.de> wrote: > > On 2019-01-29 04:00:19 +0300, Alexander Korotkov wrote: > > > + /* > > > + * It is safe to use here PG_TRY/PG_CATCH without subtransaction > > > because > > > + * no function called inside performs data modification. > > > + */ > > > + PG_TRY(); > > > + { > > > + res = DirectFunctionCall2(func, ldatum, rdatum); > > > + } > > > + PG_CATCH(); > > > + { > > > + int errcode = geterrcode(); > > > + > > > + if (jspThrowErrors(cxt) || > > > + ERRCODE_TO_CATEGORY(errcode) != > > > ERRCODE_DATA_EXCEPTION) > > > + PG_RE_THROW(); > > > + > > > + MemoryContextSwitchTo(mcxt); > > > + FlushErrorState(); > > > + > > > + return jperError; > > > + } > > > + PG_END_TRY(); > > BTW, this code also looks... useless. I can't see whole numeric.c > throwing ERRCODE_DATA_EXCEPTION. Nikita, what do we mean here?
Oh, sorry. I've missed we have ERRCODE_TO_CATEGORY() here. ------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company