Tom Lane [Mon, 3 Jan 2005 18:49:41 +0000 (18:49 +0000)]
Repair bufmgr deadlock problem reported by Michael Wildpaner. Must take
share lock on a buffer being written out before releasing BufMgrLock in
the BufferAlloc code path; if we do it later we might block on someone
who's re-pinned the buffer. I believe this is only an issue for BufferAlloc
and not the other places that call FlushBuffer. BufferSync must continue
to do it the old way since it may well be trying to write buffers that
other backends have pinned; but it should not be holding any conflicting
locks. FlushRelationBuffers is okay since it's got exclusive lock at the
relation level.
Bruce Momjian [Sat, 1 Jan 2005 16:36:57 +0000 (16:36 +0000)]
Update:
< o Disallow encodings like UTF8 which which PostgreSQL supports
> o Disallow encodings like UTF8 which PostgreSQL supports 914a915,917
>
> To fix UTF8, the data needs to be converted to UTF16 and then
> the Win32 strcoll() can be used.
Also performed an initial run through of upgrading our Copyright date to
extend to 2005 ... first run here was very simple ... change everything
where: grep 1996-2004 && the word 'Copyright' ... scanned through the
generated list with 'less' first, and after, to make sure that I only
picked up the right entries ...
Tom Lane [Thu, 30 Dec 2004 00:30:40 +0000 (00:30 +0000)]
Triggers should return TRIGGER not OPAQUE. Looks like this script got
overlooked in 7.3 updates. Not a critical fix but avoids a notice when
the resulting SQL script is executed.
Tom Lane [Wed, 29 Dec 2004 21:36:09 +0000 (21:36 +0000)]
Refactor EXEC_BACKEND code so that postmaster child processes reattach
to shared memory as soon as possible, ie, right after read_backend_variables.
The effective difference from the original code is that this happens
before instead of after read_nondefault_variables(), which loads GUC
information and is apparently capable of expanding the backend's memory
allocation more than you'd think it should. This should fix the
failure-to-attach-to-shared-memory reports we've been seeing on Windows.
Also clean up a few bits of unnecessarily grotty EXEC_BACKEND code.
Tom Lane [Tue, 28 Dec 2004 23:17:54 +0000 (23:17 +0000)]
Make libpq default to localhost connections on machines without Unix-domain
sockets, rather than failing as it formerly did. Revert the
thereby-obsoleted patch to make psql supply the localhost default.
Bruce Momjian [Mon, 27 Dec 2004 22:44:44 +0000 (22:44 +0000)]
Add:
> * Improve the background writer
>
> Allow the background writer to more efficiently write dirty buffers
> from the end of the LRU cache and use a clock sweep algorithm to
> write other dirty buffers to reduced checkpoint I/O
Tom Lane [Mon, 27 Dec 2004 19:19:24 +0000 (19:19 +0000)]
Cause pg_hba.conf file inclusion (@file stuff) to behave as documented,
that is, files are sought in the same directory as the referencing file.
Also allow absolute paths in @file constructs. Improve documentation
to actually say what is allowed in an included file.
Tom Lane [Fri, 24 Dec 2004 16:55:43 +0000 (16:55 +0000)]
Remove 'optimization' to skip resolve_symlinks() when the found
executable file isn't itself a symlink. We still need to run the
algorithm so that any directory symlinks in the path to the
executable are replaced by a true path. Noticed this on seeing
pg_config give me a completely wrong answer for --pkglibdir when
I called it through a symlink to the installation bindir.
Tom Lane [Fri, 24 Dec 2004 15:42:05 +0000 (15:42 +0000)]
Switch order of WHERE clauses in tab completion queries, as suggested
by Rod Taylor. The foo_is_visible() functions are relatively slow and
so it pays to check them after checking the name pattern match.
Tom Lane [Thu, 23 Dec 2004 22:42:15 +0000 (22:42 +0000)]
Avoid memory leakage during VACUUM FULL when an index expression or
index predicate uses temporary memory for evaluation. Per example
from Jean-Gerard Pailloncy.
Tom Lane [Wed, 22 Dec 2004 18:45:49 +0000 (18:45 +0000)]
Awhile back I added some code to StartupCLOG() to forcibly zero out
the remainder of the current clog page during system startup. While
this was a good idea, it turns out the code fails if nextXid is
exactly at a page boundary, because we won't have created the "current"
clog page yet in that case. Since the page will be correctly zeroed
when we execute the first transaction on it, the solution is just to
do nothing when exactly at a page boundary. Per trouble report from
Dave Hartwig.
Tom Lane [Tue, 21 Dec 2004 18:33:36 +0000 (18:33 +0000)]
exec_eval_simple_expr() needs to do CommandCounterIncrement() not just
GetTransactionSnapshot() to ensure ActiveSnapshot advances properly.
Sigh. Extend regression test so it reveals this error too.
Bruce Momjian [Tue, 21 Dec 2004 01:02:28 +0000 (01:02 +0000)]
I was recently surprised to find that EXTRACT's day of the week
numbering is different than TO_CHAR's ditto. EXTRACT starts at 0==Sunday
while TO_CHAR starts at 1==Sunday.
A suggestion for two documentation notes is attached as a patch to
current CVS HEAD.
Tom Lane [Mon, 20 Dec 2004 17:40:59 +0000 (17:40 +0000)]
In pipe_read_line Windows code, loop to ensure we get a whole line
from the child process; fixes observed problems when the returned
version number is '8.0.0' rather than '8.0.0rc1'. Magnus Hagander
Tom Lane [Mon, 20 Dec 2004 17:13:41 +0000 (17:13 +0000)]
Remove direct inclusions of <com_err.h> as well as configure test for
its presence. This amounts to desupporting Kerberos 5 releases 1.0.*,
which is small loss, and simplifies use of our Kerberos code on platforms
with Red-Hat-style include file layouts. Per gripe from John Gray and
followup discussion.
Tom Lane [Sun, 19 Dec 2004 20:20:27 +0000 (20:20 +0000)]
plpgsql's exec_eval_simple_expr() now has to take responsibility for
advancing ActiveSnapshot when we are inside a volatile function.
Per example from Gaetano Mendola. Add a regression test to catch
similar problems in future.
Tom Lane [Sun, 19 Dec 2004 19:39:47 +0000 (19:39 +0000)]
Prevent evaluation of backticks while discarding unwanted arguments
after an unknown or failed psql backslash command, and also while
discarding "extra" arguments of a putatively valid backslash command.
In the case of an unknown/failed command, make sure we discard the
whole rest of the line, rather than trying to resume at the next
backslash. Per discussion with Thomer Gil.
Neil Conway [Fri, 17 Dec 2004 03:51:36 +0000 (03:51 +0000)]
Allow 'ELSEIF' as an alternative to 'ELSIF' in PL/PgSQL. There have been
several reports of users being confused when they attempt to use ELSEIF
and run into trouble due to PL/PgSQL's lax parser. The parser will be
improved for 8.1, but we can fix most of the problem by allowing ELSEIF
for now.
Tom Lane [Thu, 16 Dec 2004 20:41:01 +0000 (20:41 +0000)]
Cause configure --with-tcl to check for presence of <tcl.h>, as per
gripe from John Gray. Also fix thinko in pltcl Makefile: if a special
Tcl include directory is specified, that ought to be searched first.