Re: [HACKERS] PG_TRY & PG_CATCH in FDW development - Mailing list pgsql-hackers

From Abbas Butt
Subject Re: [HACKERS] PG_TRY & PG_CATCH in FDW development
Date
Msg-id CALtH27dz1MAC_rchyh_wGc0R5WT0TibQzH+TWWRmmMmiz4cLXg@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] PG_TRY & PG_CATCH in FDW development  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Thanks for the reply.

On Tue, Apr 25, 2017 at 7:45 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Abbas Butt <abbas.butt@enterprisedb.com> writes:
> What is happening for me is that PG_RE_THROW takes me to PG_TRY in the same
> function and then PG_TRY jumps to PG_CATCH where PG_RE_THROW again jumps to
> PG_TRY in the same function resulting in an infinite loop. The query
> therefore never returns. It is supposed to throw the error and quit.

Apparently PG_exception_stack isn't getting restored properly, but it's
sure hard to see why.  I'm suspicious that you have something silly like
mismatched braces in the vicinity of the TRY/CATCH structure.

I rechecked, braces are matching.
 

FWIW, doing things like disconnecting remote sessions might be better
handled in transaction-cleanup logic, anyway.

I see that postgres_fdw is using a similar login in pgfdw_xact_callback.
Let me try and use the same technique.

 
  What covers you for that
if the query aborts while control is not within your PG_TRY block?

All the code that requires a connection to the foreign server is with in the PG_TRY block, it is therefore not required any where else to close connection before reporting any error.
 

                        regards, tom lane



--
--
Abbas
Architect
Skype ID: gabbasb
www.enterprisedb.com

Follow us on Twitter

@EnterpriseDB

Visit EnterpriseDB for tutorials, webinars, whitepapers and more

pgsql-hackers by date:

Previous
From: Amit Kapila
Date:
Subject: Re: [HACKERS] PG 10 release notes
Next
From: Ashutosh Bapat
Date:
Subject: Re: [HACKERS] Foreign Join pushdowns not working properly for outer joins