"Merlin Moncure" <merlin.moncure@rcsonline.com> writes:
>> 1. Executing outside the database engine, and therefore being able to
>> start/commit transactions. (This is *fundamentally* different from our
>> current concept of functions, and I think that any implementation that
>> tries to gloss over the difference will be doomed to failure.)
> Back in the early days of nested transactions, you could begin/commit
> while within a transaction...they could be pushed and popped off of a
> stack.
Those weren't actual transaction starts or commits though; they were
(in our current terminology) savepoints. People want *real* commits
in stored procedures, not fakes. For instance consider an SP that
wants to issue a series of VACUUM commands --- if there's a hidden
transaction block around the SP, this must fail. Locking considerations
may force use of real commits and real rollbacks, too. You can't
release a lock by committing a subtransaction.
regards, tom lane