Tom Lane [Fri, 24 Sep 2004 19:43:03 +0000 (19:43 +0000)]
GUC assign hooks that look at external state in deciding whether a
setting is valid must ignore that state and permit the assignment anyway
when source is PGC_S_OVERRIDE. Otherwise they may disallow a rollback
at transaction abort, which is The Wrong Thing. Per example from
Michael Fuhr 12-Sep-04.
Neil Conway [Fri, 24 Sep 2004 06:29:07 +0000 (06:29 +0000)]
Cleanup some ancient Ultrix / Alpha code in main() that is intended to
modify how unaligned memory accesses are dealt with. Document that this
is really what is going on, and merge the NOFIXADE and NOPRINTADE code
paths.
Neil Conway [Fri, 24 Sep 2004 01:36:37 +0000 (01:36 +0000)]
ExecProcAppend() wasn't called ExecAppend() because the latter name was
formerly used in execMain. Since that is no longer the case, this patch
renames ExecProcAppend() to ExecAppend() for the sake of consistency.
Tom Lane [Thu, 23 Sep 2004 20:27:50 +0000 (20:27 +0000)]
If we're going to print unrecognized result codes from SSL_get_error
in open_client_SSL, surely we should do it everywhere. Also make
message formatting conform to style guide.
Bruce Momjian [Thu, 23 Sep 2004 13:31:09 +0000 (13:31 +0000)]
This patch attempts to outline the supported level of SSL within libpq.
I haven't mentioned any of
~/.postgresql/{root.crt,postgresql.crt,postresql.key} even though they
are checked for in the code, since they do not appear to be supported. I
base this on discussions in pgsql-hackers.
Bruce Momjian [Thu, 23 Sep 2004 13:20:45 +0000 (13:20 +0000)]
This patch logs the error code in the default case, so that the user
stands a chance of looking it up. "Unrecognised error" is always
disheartening. :-)
Bruce Momjian [Thu, 23 Sep 2004 13:16:02 +0000 (13:16 +0000)]
This patch attempts to note the use of the root.crt file in the server.
Given that PostgreSQL will output a message complaining about it's
absence if you're using SSL mode, I feel it's important that it gets a
mention in the documentation at some point.
Tom Lane [Wed, 22 Sep 2004 19:13:52 +0000 (19:13 +0000)]
Arrange for hash join to skip scanning the outer relation if it detects
that the inner one is completely empty. Per recent discussion. Also some
cosmetic cleanups in nearby code.
Tom Lane [Wed, 22 Sep 2004 19:11:19 +0000 (19:11 +0000)]
Issue a CHECKPOINT just after creating the regression database. Without
this, it's hard to debug core-dump test failures, because WAL replay will
enthusiastically remove the core file (along with the rest of the
regression database directory). Per recent discussion, not to mention
bitter experience.
Tom Lane [Wed, 22 Sep 2004 17:41:51 +0000 (17:41 +0000)]
Adjust ExecMakeTableFunctionResult to produce a single all-nulls row
when a function that returns a single tuple (not a setof tuple) returns
NULL. This seems to be the most consistent behavior. It would have
taken a bit less code to make it return an empty table (zero rows) but
ISTM a non-SETOF function ought always return exactly one row. Per
bug report from Ivan-Sun1.
Neil Conway [Wed, 22 Sep 2004 04:25:16 +0000 (04:25 +0000)]
Some improvements for the tab-completion of psql. This should
address all of the items in the todo list and adds some new
things as well. Specifically:
* Add support for ALTER SEQUENCE ...
* Add "RENAME TO" for ALTER TRIGGER xx ON yy
* Pick proper table for ALTER TRIGGER xx ON ...
* Support for ALTER USER xxx ...
* Fix ALTER GROUP xxx DROP ...
* Fix ALTER DOMAIN xxx DROP ...
* Remove "OWNER TO" from ALTER DOMAIN xx DROP ...
* Fix ALTER DOMAIN xx SET DEFAULT ..
* Prevent ALTER INDEX xxx SET TABLESPACE from using "TO"
* Support for ALTER LANGUAGE xxx (RENAME TO)
* More support for ALTER TABLE xxx ALTER COLUMN xxx ...
* More support for COPY
Neil Conway [Wed, 22 Sep 2004 03:55:27 +0000 (03:55 +0000)]
This patch from Alvaro Herrera adds transaction ID to the list of
log_line_prefix escapes. The escape sequence used for this is %x.
%x previously meant "postmaster et al. stop here" -- this has been
renamed to %q.
Neil Conway [Tue, 21 Sep 2004 05:38:54 +0000 (05:38 +0000)]
Clarify TODO item: we ought to implement updatable views per SQL99, not
SQL92 (the former defines a much more ambitious subset of views that
need to be updatable).
Tom Lane [Tue, 21 Sep 2004 00:21:25 +0000 (00:21 +0000)]
Rotate on time boundaries that are sensible per local time rather than GMT.
Also, avoid truncating the file we just wrote into, which might otherwise
easily happen at DST boundaries. Ed L. and Tom Lane.
Tom Lane [Mon, 20 Sep 2004 23:00:12 +0000 (23:00 +0000)]
Change some of the existing plpgsql regression test cases so that they
exercise dollar quoting and named function parameters. AFAICS we had
no tests of either feature before.
Tom Lane [Mon, 20 Sep 2004 18:51:19 +0000 (18:51 +0000)]
Fix some shortcomings in psql's autocommit-off mode concerning detection
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.
Tom Lane [Mon, 20 Sep 2004 04:19:50 +0000 (04:19 +0000)]
Now that I look, table 8-1 has some other marginal misstatements in it.
If we're going to put brackets around optional precision specs in some
entries, we'd better do it in all.
Tom Lane [Sun, 19 Sep 2004 23:38:21 +0000 (23:38 +0000)]
Add defenses against plpython functions being declared to take or return
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.
Tom Lane [Fri, 17 Sep 2004 18:28:53 +0000 (18:28 +0000)]
Hashed LEFT JOIN would miss outer tuples with no inner match if the join
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.
Tom Lane [Fri, 17 Sep 2004 18:09:55 +0000 (18:09 +0000)]
Now that xmax and cmin are distinct fields again, we should zero xmax when
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.
Tom Lane [Thu, 16 Sep 2004 21:59:17 +0000 (21:59 +0000)]
Fix oversight: there's no reason for PG_TRY to use sigsetjmp(buf,1)
since we don't change the signal mask during normal backend operations.
Use sigsetjmp(buf,0) to avoid many unnecessary kernel calls.
Tom Lane [Thu, 16 Sep 2004 20:17:49 +0000 (20:17 +0000)]
Add some marginal tweaks to eliminate memory leakages associated with
subtransactions. Trivial subxacts (such as a plpgsql exception block
containing no database access) now demonstrably leak zero bytes.
Tom Lane [Thu, 16 Sep 2004 18:35:23 +0000 (18:35 +0000)]
RecentXmin is too recent to use as the cutoff point for accessing
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.
Tom Lane [Thu, 16 Sep 2004 16:58:44 +0000 (16:58 +0000)]
Restructure subtransaction handling to reduce resource consumption,
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.
Bruce Momjian [Tue, 14 Sep 2004 14:34:45 +0000 (14:34 +0000)]
Mark as done:
< * Point-in-time data recovery using backup and write-ahead log,
< * Create native Win32 port, http://momjian.postgresql.org/main/writings/pgsql/project/win32.html
> * -Point-in-time data recovery using backup and write-ahead log
> * -Create native Win32 port 470c470
< o Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
> o Fix PL/pgSQL RENAME to work on variables other than OLD/NEW
Tom Lane [Mon, 13 Sep 2004 20:10:13 +0000 (20:10 +0000)]
Redesign query-snapshot timing so that volatile functions in READ COMMITTED
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.
Tom Lane [Sun, 12 Sep 2004 18:30:50 +0000 (18:30 +0000)]
When LockAcquire fails at the stage of creating a proclock object, be
sure to clean up the already-created lock object, if it has no other
references. Avoids possibly-permanent leak of shared memory.
Tom Lane [Sat, 11 Sep 2004 18:28:34 +0000 (18:28 +0000)]
Renumber SnapshotNow and the other special snapshot codes so that
((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.
Tom Lane [Sat, 11 Sep 2004 15:56:46 +0000 (15:56 +0000)]
Ensure that pg_largeobject references opened by lo_import() or lo_export()
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.
Tom Lane [Fri, 10 Sep 2004 20:05:18 +0000 (20:05 +0000)]
Fix some problems with restoring databases owned by non-superusers,
as per bug #1249; and remove the last vestiges of using \connect to
change authorization.
Tom Lane [Fri, 10 Sep 2004 18:40:09 +0000 (18:40 +0000)]
Fire non-deferred AFTER triggers immediately upon query completion,
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.