Tom Lane [Fri, 28 Oct 2005 19:00:19 +0000 (19:00 +0000)]
Reorder code so that we don't have to hold a critical section while
reserving SLRU space for a new MultiXact. The original coding would have
treated out-of-disk-space as a PANIC condition, which is unnecessary.
Tom Lane [Fri, 28 Oct 2005 17:32:22 +0000 (17:32 +0000)]
Clean up AIX build to avoid 'duplicate symbol' warnings, by moving use
of postgres.imp file into BE_DLLLIBS macro. This makes the AIX build
work more like the Windows and Darwin builds, which have similar requirements
to mention a backend library when linking shared libraries that will be
dynamically loaded into the backend.
Tom Lane [Fri, 28 Oct 2005 17:27:29 +0000 (17:27 +0000)]
Fix race condition in multixact code: it's possible to try to read a
multixact's starting offset before the offset has been stored into the
SLRU file. A simple fix would be to hold the MultiXactGenLock until the
offset has been stored, but that looks like a big concurrency hit. Instead
rely on knowledge that unset offsets will be zero, and loop when we see
a zero. This requires a little extra hacking to ensure that zero is never
a valid value for the offset. Problem reported by Matteo Beccati, fix
ideas from Martijn van Oosterhout, Alvaro Herrera, and Tom Lane.
Tom Lane [Thu, 27 Oct 2005 20:45:29 +0000 (20:45 +0000)]
Add an ifneq to avoid make warning on AIX --- there is a separate rule
for postgres: on line 86, and line 43 shouldn't be used. Noted while
looking at kookaburra buildfarm results.
Tom Lane [Thu, 27 Oct 2005 17:07:58 +0000 (17:07 +0000)]
Tweak buffer manager so that 'internal' accesses to a buffer do not
advance its usage_count. This includes writes of dirty buffers triggered
by bgwriter, checkpoint, or FlushRelationBuffers, as well as various
corner cases that really ought not count as accesses to the page.
Should make for some marginal improvement in the quality of our decisions
about when to recycle buffers. Per suggestion from ITAGAKI Takahiro.
Bruce Momjian [Thu, 27 Oct 2005 02:33:31 +0000 (02:33 +0000)]
Add items from Tom:
< o Add a GUC variable to allow output of interval values in ISO8601
< format 212a211,223
> o Add a GUC variable to allow output of interval values in ISO8601
> format
> o Improve timestamptz subtraction to be DST-aware
>
> Currently, subtracting one date from another that crosses a
> daylight savings time adjustment can return '1 day 1 hour', but
> adding that back to the first date returns a time one hour in
> the future. This is caused by the adjustment of '25 hours' to
> '1 day 1 hour', and '1 day' is the same time the next day, even
> if daylight savings adjustments are involved.
>
> o Fix interval display to support values exceeding 2^31 hours
> o Add overflow checking to timestamp and interval arithmetic
Tom Lane [Wed, 26 Oct 2005 19:21:55 +0000 (19:21 +0000)]
Adjust parser so that POSTQUEL-style implicit RTEs are stored with
inFromCl true, meaning that they will list out as explicit RTEs if they
are in a view or rule. Update comments about inFromCl to reflect the way
it's now actually used. Per recent discussion.
Tom Lane [Tue, 25 Oct 2005 20:30:30 +0000 (20:30 +0000)]
Fix longstanding bug that would sometimes let the planner generate a bad plan
for an outer join; symptom is bogus error "RIGHT JOIN is only supported with
merge-joinable join conditions". Problem was that select_mergejoin_clauses
did its tests in the wrong order. We need to force left join not right join
for a merge join when there are non-mergeable join clauses; but the test for
this only accounted for mergejoinability of the clause operator, and not
whether the left and right Vars were of the proper relations. Per report
from Jean-Pierre Pelletier.
Bruce Momjian [Tue, 25 Oct 2005 18:50:56 +0000 (18:50 +0000)]
Add:
>
> o Add auto-expanded mode so expanded output is used if the row
> length is wider than the screen width.
>
> Consider using auto-expanded mode for backslash commands like \df+.
Tom Lane [Tue, 25 Oct 2005 17:13:07 +0000 (17:13 +0000)]
Remove justify_hours call from interval_mul and interval_div, and make
some small stylistic improvements in these functions. Also fix several
places where TMODULO() was being used with wrong-sized quotient argument,
creating a risk of overflow --- interval2tm was actually capable of going
into an infinite loop because of this.
Tom Lane [Tue, 25 Oct 2005 15:15:16 +0000 (15:15 +0000)]
Fix Windows setitimer() emulation to not depend on delivering an APC
to the main thread. This allows removal of WaitForSingleObjectEx() calls
from the main thread, thereby allowing us to re-enable Qingqing Zhou's
CHECK_FOR_INTERRUPTS performance improvement. Qingqing, Magnus, et al.
Andrew Dunstan [Mon, 24 Oct 2005 15:39:50 +0000 (15:39 +0000)]
Fix incorrect wording about function failure time on unsafe ops - these
are now caught by the validator. And a small visit from the perl style police:
check the return value from open().
Bruce Momjian [Mon, 24 Oct 2005 15:38:37 +0000 (15:38 +0000)]
I have applied the following patch to document PQinitSSL() and
PQregisterThreadLock().
I also remove the crypt() mention in the libpq threading section and
added a single sentence in the client-auth manual page under crypt().
Crypt authentication is so old now that a separate paragraph about it
seemed unwise.
I also added a comment about our use of locking around pqGetpwuid().
Tom Lane [Mon, 24 Oct 2005 15:10:22 +0000 (15:10 +0000)]
Ensure that a plpgsql LOOP with an empty body still executes at least
one CHECK_FOR_INTERRUPTS() call, so that you can control-C out of the
loop. Reported by Merlin Moncure.
Tom Lane [Sat, 22 Oct 2005 22:09:49 +0000 (22:09 +0000)]
Add a note about GNU tar's propensity to complain if a file changes
while tar is copying it. This behavior is unhelpful when taking a base
backup. Per gripe from Pallav Kalva back in April.
Tom Lane [Sat, 22 Oct 2005 19:33:57 +0000 (19:33 +0000)]
Fix documentation to specify the correct range of timezone offsets for
type time with time zone, ie, +/- 13:59 not +/- 12:00. Also some minor
wording improvements.
Tom Lane [Sat, 22 Oct 2005 17:09:48 +0000 (17:09 +0000)]
Temporarily disable Qingqing's Windows signal processing patch, so that
WaitForSingleObjectEx is always called by CHECK_FOR_INTERRUPTS. This
should be reinstated but the setitimer() emulation will have to be
redesigned first.
Tom Lane [Fri, 21 Oct 2005 21:43:46 +0000 (21:43 +0000)]
Improve performance of CHECK_FOR_INTERRUPTS() macro on Windows by not doing
a kernel call unless there's some evidence of a pending signal. This should
bring its performance on Windows into line with the Unix version. Problem
diagnosis and patch by Qingqing Zhou. Minor stylistic tweaks by moi ...
if it's broken, it's my fault.
Tom Lane [Fri, 21 Oct 2005 19:39:08 +0000 (19:39 +0000)]
Clean up autovacuum documentation, which was a bit out of sync with what
the code actually does, and needed copy-editing anyway. Also take the
opportunity to expand the section on routine reindexing.
Tom Lane [Fri, 21 Oct 2005 16:43:33 +0000 (16:43 +0000)]
Fix EXPLAIN ANALYZE bug noted by Wiebe Cazemier: although we were
properly advancing the CommandCounter between multiple sub-queries
generated by rules, we forgot to update the snapshot being used, so
that the successive sub-queries didn't actually see each others'
results. This is still not *exactly* like the semantics of normal
execution of the same queries, in that we don't take new transaction
snapshots and hence don't see changes from concurrently committed
commands, but I think that's OK and probably even preferable for
EXPLAIN ANALYZE.
Tom Lane [Fri, 21 Oct 2005 15:45:06 +0000 (15:45 +0000)]
Add an implicit cast from varchar to regclass, so that existing code
of the form nextval('foo'::varchar) doesn't break. Per gripe from
Jean-Pierre Pelletier. Initdb forced :-(
Tom Lane [Fri, 21 Oct 2005 01:41:28 +0000 (01:41 +0000)]
Clean up some obsolete statements about GiST indexes, and add a section
documenting GiST crash recovery procedures, as requested some time ago
by Teodor. (The GiST chapter doesn't seem quite the right place for
the latter, but I'm not sure what else to do with it.)
Tom Lane [Thu, 20 Oct 2005 23:57:52 +0000 (23:57 +0000)]
Improve testlibpq3.c's example of PQexecParams() usage to include sending
a parameter in binary format. Also, add a TIP explaining how to use casts
in the query text to avoid needing to specify parameter types by OID.
Also fix bogus spacing --- apparently somebody expanded the tabs in the
example programs to 8 spaces instead of 4 when transposing them into SGML.
Tom Lane [Thu, 20 Oct 2005 20:05:45 +0000 (20:05 +0000)]
Postpone pg_timezone_initialize() until after creation of postmaster.pid,
since it can take a fair amount of time and this can confuse boot scripts
that expect postmaster.pid to appear quickly. Move initialization of SSL
library and preloaded libraries to after that point, too, just for luck.
Per reports from Tony Caduto and others.
Tom Lane [Thu, 20 Oct 2005 19:18:01 +0000 (19:18 +0000)]
Document the behavior of GRANT/REVOKE in cases where the privilege is
held by means of role membership, rather than directly. Per discussion
and bug fix of a couple weeks ago.
Tom Lane [Thu, 20 Oct 2005 13:54:08 +0000 (13:54 +0000)]
Clean up md5.c to make it clearer that it is a frontend-and-backend
module. Don't rely on backend palloc semantics; in fact, best to not
use palloc at all, rather than #define'ing it to malloc, because that
just encourages errors of omission. Bug spotted by Volkan YAZICI,
but I went further than he did to fix it.
Tom Lane [Thu, 20 Oct 2005 05:15:09 +0000 (05:15 +0000)]
Make \d order a table's check constraints by constraint name instead
of the text of the constraint condition. Per Chris K-L, though I didn't
use his patch exactly.
Tom Lane [Wed, 19 Oct 2005 22:30:30 +0000 (22:30 +0000)]
Better solution to the problem of labeling whole-row Datums that are
generated from subquery outputs: use the type info stored in the Var
itself. To avoid making ExecEvalVar and slot_getattr more complex
and slower, I split out the whole-row case into a separate ExecEval routine.
Tom Lane [Wed, 19 Oct 2005 18:18:33 +0000 (18:18 +0000)]
Ensure that the Datum generated from a whole-row Var contains valid
type ID information even when it's a record type. This is needed to
handle whole-row Vars referencing subquery outputs. Per example from
Richard Huxton.
Tom Lane [Wed, 19 Oct 2005 17:31:20 +0000 (17:31 +0000)]
Fix oversight in recent changes to enable the 'physical tlist'
optimization for subquery and function scan nodes: we can't just do it
unconditionally, we still have to check whether there is any need for
a whole-row Var. I had been thinking that these node types couldn't
have any system columns, which is true, but that loop is also checking
for attno zero, ie, whole-row Var. Fix comment to not be so misleading.
Per test case from Richard Huxton.
Tom Lane [Tue, 18 Oct 2005 21:43:33 +0000 (21:43 +0000)]
Add an entry to the discussion of regression test failures about the
possibility of a failure due to stack overflow when max_stack_depth is
not set properly for the platform.
Tom Lane [Tue, 18 Oct 2005 20:38:58 +0000 (20:38 +0000)]
Code review for regexp_replace patch. Improve documentation and comments,
fix problems with replacement-string backslashes that aren't followed by
one of the expected characters, avoid giving the impression that
replace_text_regexp() is meant to be called directly as a SQL function,
etc.
Tom Lane [Tue, 18 Oct 2005 17:13:14 +0000 (17:13 +0000)]
Code review for spi_query/spi_fetchrow patch: handle errors sanely,
avoid leaking memory. I would add a regression test for error handling
except it seems eval{} can't be used in unprivileged plperl :-(
Joe Conway [Tue, 18 Oct 2005 02:55:49 +0000 (02:55 +0000)]
When a cursor is opened using dblink_open, only start a transaction
if there isn't one already open. Upon dblink_close, only commit
the open transaction if it was started by dblink_open, and only
then when all cursors opened by dblink_open are closed. The transaction
accounting is done individually for all named connections, plus
the persistent unnamed connection.
Tom Lane [Tue, 18 Oct 2005 01:06:24 +0000 (01:06 +0000)]
A few trivial code cleanups motivated by reading warnings generated
by a recent HP C compiler. Mostly, get rid of useless local variables
that are assigned to but never used.
Tom Lane [Mon, 17 Oct 2005 16:24:20 +0000 (16:24 +0000)]
Clean up libpq's pollution of application namespace by renaming the
exported routines of ip.c, md5.c, and fe-auth.c to begin with 'pg_'.
Also get rid of the vestigial fe_setauthsvc/fe_getauthsvc routines
altogether.
Tom Lane [Sun, 16 Oct 2005 21:22:12 +0000 (21:22 +0000)]
Add note that some versions of OS X require SHMMAX to be an exact multiple
of 4096. Also add comment explaining why we don't suggest using
/etc/sysctl.conf to avoid needing to edit /etc/rc.
Tom Lane [Sat, 15 Oct 2005 20:37:36 +0000 (20:37 +0000)]
Suppress warnings on platforms where fprintf is a macro (eg, recent
Fedora). This was already done by somebody for the core flex files,
but these contrib files seem to have been missed.
Neil Conway [Sat, 15 Oct 2005 01:47:12 +0000 (01:47 +0000)]
Merge some user-submitted suggestions for improvement into the
documentation. Mostly add some <xref>s, fix a few typos, and
document that zlib is required in the installation docs.
Tom Lane [Fri, 14 Oct 2005 20:53:56 +0000 (20:53 +0000)]
Fix syslog bug: if any messages are emitted to write_syslog before
the facility has been set, the facility gets set to LOCAL0 and cannot
be changed later. This seems reasonably plausible to happen, particularly
at higher debug log levels, though I am not certain it explains Han Holl's
recent report. Easiest fix is to teach the code how to change the value
on-the-fly, which is nicer anyway. I made the settings PGC_SIGHUP to
conform with log_destination.
Tom Lane [Fri, 14 Oct 2005 16:41:02 +0000 (16:41 +0000)]
Pass a strdup'd ident string to openlog(), to ensure that reallocation
of GUC memory doesn't cause us to start emitting a bogus ident string.
Per report from Han Holl. Also some trivial code cleanup in write_syslog.
Bruce Momjian [Thu, 13 Oct 2005 22:55:55 +0000 (22:55 +0000)]
This makes the error messages for PREPARE TRANSACTION, COMMIT PREPARED
etc. match the docs, which talk about "transaction identifier" not
"gid" or "global transaction identifier".