Tom Lane [Thu, 19 Oct 2006 19:52:22 +0000 (19:52 +0000)]
Make sure that debug_query_string contains the original query text,
if available (which it usually should be), during processing of Bind
and Execute protocol messages. This improves usefulness of
log_min_error_statement logging for extended query protocol.
Tom Lane [Thu, 19 Oct 2006 17:26:32 +0000 (17:26 +0000)]
Work around reported problem that AIX's getaddrinfo() doesn't seem to zero
sin_port in the returned IP address struct when servname is NULL. This has
been observed to cause failure to bind the stats collection socket, and
could perhaps cause other issues too. Per reports from Brad Nicholson
and Chris Browne.
Tom Lane [Wed, 18 Oct 2006 22:44:12 +0000 (22:44 +0000)]
Add some code to CREATE DATABASE to check for pre-existing subdirectories
that conflict with the OID that we want to use for the new database.
This avoids the risk of trying to remove files that maybe we shouldn't
remove. Per gripe from Jon Lapham and subsequent discussion of 27-Sep.
Tom Lane [Wed, 18 Oct 2006 16:43:14 +0000 (16:43 +0000)]
Fix up timetz input so that a date is required only when the specified
timezone actually has a daylight-savings rule. This avoids breaking
cases that used to work because they went through the DecodePosixTimezone
code path. Per contrib regression failures (mea culpa for not running
those yesterday...). Also document the already-applied change to allow
GMT offsets up to 14 hours.
Tom Lane [Tue, 17 Oct 2006 21:03:21 +0000 (21:03 +0000)]
Fix up some problems in handling of zic-style time zone names in datetime
input routines. Remove the former "DecodePosixTimezone" function in favor of
letting the zic code handle POSIX-style zone specs (see tzparse()). In
particular this means that "PST+3" now means the same as "-03", whereas it
used to mean "-11" --- the zone abbreviation is effectively just a noise word
in this syntax. Make sure that all named and POSIX-style zone names will be
parsed as a single token. Fix long-standing bogosities in printing and input
of fractional-hour timezone offsets (since the tzparse() code will accept
these, we'd better make 'em work). Also correct an error in the original
coding of the zic-zone-name patch: in "timestamp without time zone" input,
zone names are supposed to be allowed but ignored, but the coding was such
that the zone changed the interpretation anyway.
Tom Lane [Mon, 16 Oct 2006 19:58:27 +0000 (19:58 +0000)]
Arrange for timezone names to be recognized case-insensitively; for
example SET TIME ZONE 'america/new_york' works now. This seems a good
idea on general user-friendliness grounds, and is part of the solution
to the timestamp-input parsing problems I noted recently.
Tom Lane [Sun, 15 Oct 2006 22:04:08 +0000 (22:04 +0000)]
Redesign the patch for allocation of shmem space and LWLocks for add-on
modules; the first try was not usable in EXEC_BACKEND builds (e.g.,
Windows). Instead, just provide some entry points to increase the
allocation requests during postmaster start, and provide a dedicated
LWLock that can be used to synchronize allocation operations performed
by backends. Per discussion with Marc Munro.
Tom Lane [Sun, 15 Oct 2006 18:56:39 +0000 (18:56 +0000)]
Adjust plperl to ensure that all strings and hash keys passed to Perl
are marked as UTF8 when the database encoding is UTF8. This should
avoid inconsistencies like that exhibited in bug #2683 from Vitali Stupin.
Bruce Momjian [Sat, 14 Oct 2006 23:08:48 +0000 (23:08 +0000)]
FAQ updates --- This is a small cosmetic patch that adds pt_BR IRC
channel to the lists of IRC channels, fixes a typo in the OID's
question, and corrects the PGCluster's project name.
Tom Lane [Sat, 14 Oct 2006 23:07:22 +0000 (23:07 +0000)]
Code review for --no-data-for-failed-tables patch. Instead of trashing
one of the program's core data structures, make use of the existing
ability to selectively exclude TOC items by ID. Slightly more code but
much less likely to create future maintenance problems.
Teodor Sigaev [Fri, 13 Oct 2006 13:59:47 +0000 (13:59 +0000)]
Fix infinite sleep and failes of send in Win32.
1) pgwin32_waitforsinglesocket(): WaitForMultipleObjectsEx now called with
finite timeout (100ms) in case of FP_WRITE and UDP socket. If timeout occurs
then pgwin32_waitforsinglesocket() tries to write empty packet goes to
WaitForMultipleObjectsEx again.
2) pgwin32_send(): add loop around WSASend and pgwin32_waitforsinglesocket().
The reason is: for overlapped socket, 'ok' result from
pgwin32_waitforsinglesocket() isn't guarantee that socket is still free,
it can become busy again and following WSASend call will fail with
WSAEWOULDBLOCK error.
See http://archives.postgresql.org/pgsql-hackers/2006-10/msg00561.php
Neil Conway [Thu, 12 Oct 2006 18:49:32 +0000 (18:49 +0000)]
In the installation docs, add some links to the documentation on LDAP
to the discussion of the "--with-ldap" configure option. Patch from
Albe Laurenz.
Tom Lane [Thu, 12 Oct 2006 17:02:24 +0000 (17:02 +0000)]
Fix mishandling of after-trigger state when a SQL function returns multiple
rows --- if the surrounding query queued any trigger events between the rows,
the events would be fired at the wrong time, leading to bizarre behavior.
Per report from Merlin Moncure.
This is a simple patch that should solve the problem fully in the back
branches, but in HEAD we also need to consider the possibility of queries
with RETURNING clauses. Will look into a fix for that separately.
Tom Lane [Thu, 12 Oct 2006 05:14:49 +0000 (05:14 +0000)]
Remove somebody's ill-considered free() call, per report from Chander Ganesan.
No, I do not care whether Coverity considers this a memory leak.
It's entirely not worth the code space to do it correctly.
Tom Lane [Wed, 11 Oct 2006 20:21:04 +0000 (20:21 +0000)]
Repair incorrect check for coercion of unknown literal to ANYARRAY, a bug
I introduced in 7.4.1 :-(. It's correct to allow unknown to be coerced to
ANY or ANYELEMENT, since it's a real-enough data type, but it most certainly
isn't an array datatype. This can cause a backend crash but AFAICT is not
exploitable as a security hole. Per report from Michael Fuhr.
Note: as fixed in HEAD, this changes a constant in the pg_stats view,
resulting in a change in the expected regression outputs. The back-branch
patches have been hacked to avoid that, so that pre-existing installations
won't start failing their regression tests.
Teodor Sigaev [Wed, 11 Oct 2006 16:42:51 +0000 (16:42 +0000)]
Rename function 'isexists' and 'isdefined' to
'exist' and 'defined' accordingly. Old names
are saved not mentioned in docs - for compatibility
with old applications.
Per discussion
http://archives.postgresql.org/pgsql-hackers/2006-10/msg00571.php
Tom Lane [Mon, 9 Oct 2006 23:36:59 +0000 (23:36 +0000)]
Revise psql pattern-matching switches as per discussion. The rule is now
to process all inclusion switches then all exclusion switches, so that the
behavior is independent of switch ordering.
Use of -T does not cause non-table objects to be suppressed. And
the patterns are now interpreted the same way psql's \d commands do it,
rather than as pure regex commands; this allows for example -t schema.tab
to do what it should have been doing all along. Re-enable the --blobs
switch to do something useful, ie, add back blobs into a dump they were
otherwise suppressed from.
Tom Lane [Mon, 9 Oct 2006 23:30:33 +0000 (23:30 +0000)]
Move processNamePattern into dumputils.c in preparation for using it in
pg_dump as well as psql. Since psql already uses dumputils.c, while there's
not any code sharing in the other direction, this seems the easiest way.
Also, fix misinterpretation of patterns using regex | by adding parentheses
(same bug found previously in similar_escape()). This should be backpatched.
Tom Lane [Sun, 8 Oct 2006 19:31:03 +0000 (19:31 +0000)]
Update Darwin dlopen() support to avoid deprecation warnings with latest
Apple developer tools. We now use dlopen directly if available, and fall
back to the older code if not. Chris Campbell
Tom Lane [Sun, 8 Oct 2006 17:15:34 +0000 (17:15 +0000)]
On Windows, we know the backend stack size limit because we have to
specify it explicitly in backend/Makefile. Arrange for this value to
be known by get_stack_depth_rlimit() too. Per suggestion from Magnus.
Bruce Momjian [Sat, 7 Oct 2006 23:28:04 +0000 (23:28 +0000)]
Allow HISTORY/history.html to be generated by removing <link> elements,
per suggestion from Peter. Without this, the main doc links prevent
those files from being built.
Tom Lane [Sat, 7 Oct 2006 22:21:38 +0000 (22:21 +0000)]
Fix ancient oversight in psql's \d pattern processing code: when seeing two
quote chars inside quote marks, should emit one quote *and stay in inquotes
mode*. No doubt the lack of reports of this have something to do with the
poor documentation of the feature ...
The -X option in pg_dump was supposed to be a workaround for the lack of
portable long options. But we have had portable long options for a long
time now, so this is obsolete. Now people have added options which *only*
work with -X but not as regular long option, so I'm putting a stop to this:
-X is deprecated; it still works, but it has been removed from the
documentation, and please don't add more of them.
Tom Lane [Sat, 7 Oct 2006 20:16:57 +0000 (20:16 +0000)]
When planning a query at Bind time, be careful to pass the correct
query_list into the Portal, ie, the one seen and possibly modified by
the planner. My fault :-( Per report from Sergey Koposov.
Tom Lane [Sat, 7 Oct 2006 19:25:29 +0000 (19:25 +0000)]
On platforms that have getrlimit(RLIMIT_STACK), use it to ensure that
max_stack_depth is not set to an unsafe value.
This commit also provides configure-time checking for <sys/resource.h>,
and cleans up some perhaps-unportable code associated with use of that
include file and getrlimit().
Tom Lane [Sat, 7 Oct 2006 16:43:28 +0000 (16:43 +0000)]
Adjust HINT for stack depth limit to mention checking the underlying
platform limit, rather than just blindly raising max_stack_depth.
Also, tweak the code to work properly if someone sets max_stack_depth
to more than 2Gb, which guc.c will allow on a 64-bit machine.
Tom Lane [Sat, 7 Oct 2006 00:11:53 +0000 (00:11 +0000)]
Fix string_to_array() to correctly handle the case where there are
overlapping possible matches for the separator string, such as
string_to_array('123xx456xxx789', 'xx').
Also, revise the logic of replace(), split_part(), and string_to_array()
to avoid O(N^2) work from redundant searches and conversions to pg_wchar
format when there are N matches to the separator string.
Backpatched the full patch as far as 8.0. 7.4 also has the bug, but the
code has diverged a lot, so I just went for a quick-and-dirty fix of the
bug itself in that branch.
Tom Lane [Fri, 6 Oct 2006 18:23:35 +0000 (18:23 +0000)]
Fix SysCacheGetAttr() to handle the case where the specified syscache has not
been initialized yet. This can happen because there are code paths that call
SysCacheGetAttr() on a tuple originally fetched from a different syscache
(hopefully on the same catalog) than the one specified in the call. It
doesn't seem useful or robust to try to prevent that from happening, so just
improve the function to cope instead. Per bug#2678 from Jeff Trout. The
specific example shown by Jeff is new in 8.1, but to be on the safe side
I'm backpatching 8.0 as well. We could patch 7.x similarly but I think
that's probably overkill, given the lack of evidence of old bugs of this ilk.
Tom Lane [Thu, 5 Oct 2006 23:33:33 +0000 (23:33 +0000)]
Cleanup for pglz_compress code: remove dead code, const-ify API of
remaining functions, simplify pglz_compress's API to not require a useless
data copy when compression fails. Also add a check in pglz_decompress that
the expected amount of data was decompressed.
Tom Lane [Thu, 5 Oct 2006 17:57:40 +0000 (17:57 +0000)]
Make use of qsort_arg in several places that were formerly using klugy
static variables. This avoids any risk of potential non-reentrancy,
and in particular offers a much cleaner workaround for the Intel compiler
bug that was affecting ginutil.c.
Tom Lane [Thu, 5 Oct 2006 00:07:45 +0000 (00:07 +0000)]
Second try at fixing libedit configuration for Bob Friesenhahn.
Buildfarm results from 'gazelle' show that there are indeed libedit
versions for which history.h is a needed header, even though it's
apparently been dropped entirely in other versions. Grumble.
Tom Lane [Wed, 4 Oct 2006 22:31:14 +0000 (22:31 +0000)]
Adjust configure's handling of libedit to not look for a history.h file.
Per Bob Friesenhahn's report, this file is not supplied by some versions
of libedit, and even when it is supplied it seems to be just a link to
readline.h, so we don't need to include it anyway.
Also, ensure that we won't try to use a too-old version of Bison.
The previous coding would bleat but then use it anyway; better to invoke
the 'missing' script if any grammar files need to be rebuilt.
Tom Lane [Wed, 4 Oct 2006 18:58:08 +0000 (18:58 +0000)]
Fix initdb's logic for picking shared_buffers/max_fsm_pages, which had
gotten rather thoroughly whacked out by careless recent changes: the
intended ratio between the two was off by a lot, and the minimum number
of shared buffers tried had increased by a lot. Problem exposed by
failures on buildfarm members with smaller SHMMAX values.
Tom Lane [Wed, 4 Oct 2006 17:52:52 +0000 (17:52 +0000)]
Improve error messages from to_tsquery per yesterday's discussion:
provide the bad input, and be sure to mention that we are talking about
a tsearch query.
Tom Lane [Tue, 3 Oct 2006 22:18:23 +0000 (22:18 +0000)]
Switch over to using our own qsort() all the time, as has been proposed
repeatedly. Now that we don't have to worry about memory leaks from
glibc's qsort, we can safely put CHECK_FOR_INTERRUPTS into the tuplesort
comparators, as was requested a couple months ago. Also, get rid of
non-reentrancy and an extra level of function call in tuplesort.c by
providing a variant qsort_arg() API that passes an extra void * argument
through to the comparison routine. (We might want to use that in other
places too, I didn't look yet.)
Bruce Momjian [Tue, 3 Oct 2006 22:12:14 +0000 (22:12 +0000)]
pgevent fixes:
1) Make vcbuild actually build the pgevent dll.
2) Change the pgevent DLL file so it doens't specify ordinal for the
functions. You're not supposed to do that. You're actually supposed to
declare them as PRIVATE as well, but mingw doesn't support that. VC++
will throw a warning and not an error though, so we can live with it.