| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
| |
exercise dollar quoting and named function parameters. AFAICS we had
no tests of either feature before.
|
|
|
|
|
|
|
| |
of commands for which a transaction block should not be forced. Recognize
VACUUM and other PreventTransactionChain commands; handle nested /* .. */
comments correctly; handle multibyte encodings correctly.
Michael Paesold with some kibitzing from Tom Lane.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
pseudotypes. Not sure why I neglected to add these checks at the same
time I added them to the other PLs, but it seems I did.
|
|
|
|
| |
when there is an expressional index matching a GROUP BY item.
|
|
|
|
| |
become part of the make variable value.
|
| |
|
| |
|
|
|
|
|
|
| |
was large enough to be batched and the tuples fell into a batch where
there were no inner tuples at all. Thanks to Xiaoyu Wang for finding a
test case that exposed this long-standing bug.
|
|
|
|
|
|
| |
creating a new tuple. This is just for debugging sanity, though, since
nothing should be paying any attention to xmax when the HEAP_XMAX_INVALID
bit is set.
|
|
|
|
|
| |
since we don't change the signal mask during normal backend operations.
Use sigsetjmp(buf,0) to avoid many unnecessary kernel calls.
|
| |
|
|
|
|
|
| |
subtransactions. Trivial subxacts (such as a plpgsql exception block
containing no database access) now demonstrably leak zero bytes.
|
|
|
|
|
|
|
| |
pg_subtrans --- what we need is the oldest xmin of any snapshot in use
in the current top transaction. Introduce a new variable TransactionXmin
to play this role. Fixes intermittent regression failure reported by
Neil Conway.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
as per recent discussions. Invent SubTransactionIds that are managed like
CommandIds (ie, counter is reset at start of each top transaction), and
use these instead of TransactionIds to keep track of subtransaction status
in those modules that need it. This means that a subtransaction does not
need an XID unless it actually inserts/modifies rows in the database.
Accordingly, don't assign it an XID nor take a lock on the XID until it
tries to do that. This saves a lot of overhead for subtransactions that
are only used for error recovery (eg plpgsql exceptions). Also, arrange
to release a subtransaction's XID lock as soon as the subtransaction
exits, in both the commit and abort cases. This avoids holding many
unique locks after a long series of subtransactions. The price is some
additional overhead in XactLockTableWait, but that seems acceptable.
Finally, restructure the state machine in xact.c to have a more orthogonal
set of states for subtransactions.
|
|
|
|
| |
cosmetic code cleanup at the same time.
|
|
|
|
| |
as a const char *, so that we don't need to cast away a const in gram.y
|
| |
|
| |
|
|
|
|
| |
Claudio Natoli
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mode see a fresh snapshot for each command in the function, rather than
using the latest interactive command's snapshot. Also, suppress fresh
snapshots as well as CommandCounterIncrement inside STABLE and IMMUTABLE
functions, instead using the snapshot taken for the most closely nested
regular query. (This behavior is only sane for read-only functions, so
the patch also enforces that such functions contain only SELECT commands.)
As per my proposal of 6-Sep-2004; I note that I floated essentially the
same proposal on 19-Jun-2002, but that discussion tailed off without any
action. Since 8.0 seems like the right place to be taking possibly
nontrivial backwards compatibility hits, let's get it done now.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
it and have it in case we need it for some special case.
|
| |
|
|
|
|
|
| |
sure to clean up the already-created lock object, if it has no other
references. Avoids possibly-permanent leak of shared memory.
|
|
|
|
|
|
|
|
| |
((Snapshot) NULL) can no longer be confused with a valid snapshot,
as per my recent suggestion. Define a macro InvalidSnapshot for 0.
Use InvalidSnapshot instead of SnapshotAny as the do-nothing special
case for heap_update and heap_delete crosschecks; this seems a little
cleaner even though the behavior is really the same.
|
|
|
|
|
| |
will be cleaned up at end of transaction, even when there is no other LO
operation in the transaction. Per bug report from Daniel Schuchardt.
|
|
|
|
|
| |
as per bug #1249; and remove the last vestiges of using \connect to
change authorization.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
rather than when returning to the idle loop. This makes no particular
difference for interactively-issued queries, but it makes a big difference
for queries issued within functions: trigger execution now occurs before
the calling function is allowed to proceed. This responds to numerous
complaints about nonintuitive behavior of foreign key checking, such as
http://archives.postgresql.org/pgsql-bugs/2004-09/msg00020.php, and
appears to be required by the SQL99 spec.
Also take the opportunity to simplify the data structures used for the
pending-trigger list, rename them for more clarity, and squeeze out a
bit of space.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
name first, make sure \di+ shows description last, and make \dl SQL look
a little more standard.
|