Repair bugs in declarations of routines to add timestamptz and interval.
Thanks to Bruce for spotting it and Tom Lane for diagnosing it.
Since horology test output is changing anyway, add some date/time input
tests to horology.sql. Some of these should move to the tests for the
individual data types, and we perhaps should add an entire new test
for "timezone" to allow manipulating the current time zone without
risking damage to the results of other tests.
Tom Lane [Fri, 11 Jan 2002 23:21:55 +0000 (23:21 +0000)]
Fix pg_dump to read-lock all tables to be dumped as soon as it's read
their names from pg_class. This considerably reduces the window wherein
someone could DROP or ALTER a table that pg_dump is intending to dump.
Not a perfect solution, but definitely an improvement. Per complaints
from Marc Fournier; patch by Brent Verner with some kibitzing by Tom Lane.
Tom Lane [Fri, 11 Jan 2002 20:07:03 +0000 (20:07 +0000)]
VACUUM must make sure that a HEAP_MARKED_FOR_UPDATE tuple gets marked
as either HEAP_XMAX_COMMITTED or HEAP_XMAX_INVALID once the updating
transaction is gone. Otherwise some other transaction may come along
and try to test the commit status of t_xmax later --- which could be
after VACUUM has recycled the CLOG status for that xact. Bug introduced
in post-beta4 bug fix.
Tom Lane [Fri, 11 Jan 2002 18:16:04 +0000 (18:16 +0000)]
Fix sequence creation to set the t_xmin of a sequence's tuple to
FrozenTransactionId, not the XID of the creating transaction. Without
this it's possible for a reference to a long-gone CLOG record to occur,
per Christian Meunier's bug report of 10-Jan-02. Worse, the sequence
tuple would become invisible to SELECTs after 2 billion transactions.
Since the fix is applied during sequence creation it does not help
existing databases, unless you drop and recreate every sequence.
However, we intend to force initdb for 7.2RC1 anyway, to fix a pg_proc
error, so I see no need to do more for this problem.
Tom Lane [Wed, 9 Jan 2002 23:38:06 +0000 (23:38 +0000)]
Describe type casts under the heading of Value Expressions, and explain
the difference between a run-time type cast and casting a literal string
to a specific type. Minor editorial work in same area.
Tom Lane [Mon, 7 Jan 2002 16:33:00 +0000 (16:33 +0000)]
Tweak LWLock algorithms so that an awakened waiter for a lock is not
granted the lock when awakened; the signal now only means that the lock
is potentially available. The waiting process must retry its attempt
to get the lock when it gets to run. This allows the lock releasing
process to re-acquire the lock later in its timeslice. Since LWLocks
are usually held for short periods, it is possible for a process to
acquire and release the same lock many times in a timeslice. The old
spinlock-based implementation of these locks allowed for that; but the
original coding of LWLock would force a process swap for each acquisition
if there was any contention. Although this approach reopens the door to
process starvation (a waiter might repeatedly fail to get the lock),
the odds of that being a big problem seem low, and the performance cost
of the previous approach is considerable.
Tom Lane [Sun, 6 Jan 2002 21:40:02 +0000 (21:40 +0000)]
If we fail to fork a new backend process, (try to) report the failure
to the client before closing the connection. Before 7.2 this was done
correctly, but new code would simply close the connection with no report
to the client.
Bruce Momjian [Sun, 6 Jan 2002 17:54:14 +0000 (17:54 +0000)]
Remove ecpg TODO section:
> Looking at this I also found an ecpg TODO list in the docs:
>
>
http://candle.pha.pa.us/main/writings/pgsql/sgml/ecpg-develop.html
>
> Seems that TODO section should be removed. Some items are done,
others
> are on the main TODO list.
That's correct. I did not fix the docs for quite some time.
Barry Lind [Sat, 5 Jan 2002 22:26:23 +0000 (22:26 +0000)]
Bugfix for bug reported by Marcus Better (marcus@dactylis.com). When preforming
a get on a bytea value the code was running the raw value from the server
through character set conversion, which if the character set was SQL_ASCII
would cause all 8bit characters to become ?'s.
Bruce Momjian [Fri, 4 Jan 2002 21:32:28 +0000 (21:32 +0000)]
Re-order items:
> * Consider use of open/fctl(O_DIRECT) to minimize OS caching
> * Make blind writes go through the file descriptor cache 391d392
< * Make blind writes go through the file descriptor cache 409d409
< * Consider use of open/fctl(O_DIRECT) to minimize OS caching
Add more complete details on date/time keywords and parsing rules.
Move some tabular information on these from the chapter on data types to
the appendix on dates and times.
Have to_date() call timestamptz_date() per Karel's email instructions.
Fixes time zone problems introduced by Thomas' implementation of
TIMESTAMP WITHOUT TIME ZONE which caused the behavior of the previously
appropriate routine, timestamp_date(), to change for the worse in this
context.
Tom Lane [Thu, 3 Jan 2002 23:21:32 +0000 (23:21 +0000)]
Require ownership permission for CREATE INDEX, per bug report.
Disallow CREATE INDEX on system catalogs, non-tables (views, sequences, etc).
Disallow CREATE/DROP TRIGGER on system catalogs, non-tables.
Disallow ALTER TABLE ADD/DROP CONSTRAINT on system catalogs.
Disallow FOREIGN KEY reference to non-table.
None of these things can actually work in the present system structure,
but the code was letting them pass without complaint.
Tom Lane [Thu, 3 Jan 2002 21:52:05 +0000 (21:52 +0000)]
Instead of waiting a fixed amount of time for the test postmaster to
start up, wait until a psql connection attempt succeeds. Per gripe
from Jason Tishler.