2014-07-01 10:38 GMT+02:00 Rajeev rastogi <rajeev.rast...@huawei.com>:

>  On 01 July 2014 12:26, Pavel Stehule Wrote:
>
>
>
> >>Have you checked the discussion in Developer meeting notes. Please
>
> >>check the same at below link:
>
> >>
> http://wiki.postgresql.org/wiki/PgCon_2012_Developer_Meeting#Autonomous_Transactions
>
>
>
> >Are these notes still valid?
>
> >* Why autonomous transaction should be close to  functions? We can
> implement AT as first step and next step can be implementation of
> integration AT to stored procedures.
>
> We have implemented AT on the line of sub-transaction. Also we have
> integrated AT with stored procedure i.e. we can create an autonomous
> transaction inside the store procedure, which can be also committed.
>
> >* When autonomous transaction is independent on parent transaction, then
> locks parent and autonomous transaction should be in conflict
>
> Yes our implementation makes the autonomous transaction independent of
> main transaction and hence as per our design parent (main) transaction and
> autonomous may get conflicted.  For which we have implemented deadlock
> detection mechanism between autonomous transaction and its parent
> transaction.
>
> > I though about integration to PL/pgSQL and I don't think so close
> integration between autonomous transaction and procedure is optimal. More
> practical is design so autonomous transaction is similar to subtransaction.
>
> Yes as mentioned above, our implementation of autonomous transaction is on
> track of subtransaction.
>

ok

>  >Then we can simply wrote some code like
>
> >  BEGIN
>
> >    .. some code
>
> >  WHEN OTHERS THEN
>
> >    .. I would to write permanently to log
>
> >    BEGIN AUTONOMOUS
>
> >      INSERT INTO log VALUES(..);
>
> >    WHEN OTHERS
>
> >      RAISE WARNING 'Cannot to write to log ..';
>
> >      RAISE EXCEPTION ' ...' forward up exception from autonomous
> transaction to parent transaction
>
> >    END
>
> >  END;
>
> >Now I am thinking so PL/SQL design of autonomous transactions is
> relatively limited and is not best to follow it.
>
> With our approach, we can use autonomous transaction in procedure as given
> below:
>
>   BEGIN
>
>     .. some code
>
>   WHEN OTHERS THEN
>
>     .. I would to write permanently to log
>
>     *START AUTONOMOUS TRANSACTION*
>
>       INSERT INTO log VALUES(..);
>
>    *COMMIT:  *
>
>     WHEN OTHERS
>
>       RAISE WARNING 'Cannot to write to log ..';
>
>       RAISE EXCEPTION ' ...' forward up exception from autonomous
> transaction to parent transaction
>
>     END
>
>   END;
>
I don't like this design (really) - it can be used in later implementation
of procedures - but I don't like a explicit transaction manipulation in
functions. It is Oracleism (and this part I don't want to follow, because
Oracle design is not lucky)  - and it is one reason, why Oracle SP are
significantly complex than PostgreSQL SP. After all I am thinking so
PostgreSQL relation between transactions and procedures are better, simply
for usage, simply for learning.  But it is little bit different topic.

Regards

Pavel





>  Please let me know if I have missed to answer any of your queries.
>
> Thanks and Regards,
>
> Kumar Rajeev Rastogi
>
>
>
>
>

Reply via email to