Commit Graph

17182 Commits

Author SHA1 Message Date
Tom Lane 28c3cd5c1c Fix typo in comment. 2007-02-06 16:20:23 +00:00
Tom Lane c76ed81513 Remove some dead code, per Heikki. 2007-02-06 14:55:11 +00:00
Peter Eisentraut 037f8413fa Move NAMEDATALEN definition from postgres_ext.h to pg_config_manual.h. It
used to be part of libpq's exported interface many releases ago, but now
it's no longer necessary to make it accessible to clients.
2007-02-06 09:16:08 +00:00
Tom Lane 56e59edd75 Fix a performance regression in 8.2: optimization of MIN/MAX into indexscans
had stopped working for tables buried inside views or sub-selects.  This is
because I had gotten rid of the simplify_jointree() preprocessing step, and
optimize_minmax_aggregates() wasn't smart enough to deal with a non-canonical
FromExpr.  Per gripe from Bill Howe.
2007-02-06 06:50:26 +00:00
Tom Lane 8076c8c7f0 Come to think of it, we should check that commutator pairs have the same
merges/hashes property settings.
2007-02-06 03:52:59 +00:00
Tom Lane ab05eedecc Add support for cross-type hashing in hashed subplans (hashed IN/NOT IN cases
that aren't turned into true joins).  Since this is the last missing bit of
infrastructure, go ahead and fill out the hash integer_ops and float_ops
opfamilies with cross-type operators.  The operator family project is now
DONE ... er, except for documentation ...
2007-02-06 02:59:15 +00:00
Andrew Dunstan 00ade1dfcf Pass modern COPY syntax to backend, since copy (query) does not accept old syntax. Per complaint from Michael Fuhr. 2007-02-05 15:22:18 +00:00
Tom Lane 23c4978e6c Rename MaxTupleSize to MaxHeapTupleSize to clarify that it's not meant to
describe the maximum size of index tuples (which is typically AM-dependent
anyway); and consequently remove the bogus deduction for "special space"
that was built into it.

Adjust TOAST_TUPLE_THRESHOLD and TOAST_MAX_CHUNK_SIZE to avoid wasting two
bytes per toast chunk, and to ensure that the calculation correctly tracks any
future changes in page header size.  The computation had been inaccurate in a
way that didn't cause any harm except space wastage, but future changes could
have broken it more drastically.

Fix the calculation of BTMaxItemSize, which was formerly computed as 1 byte
more than it could safely be.  This didn't cause any harm in practice because
it's only compared against maxalign'd lengths, but future changes in the size
of page headers or btree special space could have exposed the problem.

initdb forced because of change in TOAST_MAX_CHUNK_SIZE, which alters the
storage of toast tables.
2007-02-05 04:22:18 +00:00
Tom Lane a2e092e1c7 Don't MAXALIGN in the checks to decide whether a tuple is over TOAST's
threshold for tuple length.  On 4-byte-MAXALIGN machines, the toast code
creates tuples that have t_len exactly TOAST_TUPLE_THRESHOLD ... but this
number is not itself maxaligned, so if heap_insert maxaligns t_len before
comparing to TOAST_TUPLE_THRESHOLD, it'll uselessly recurse back to
tuptoaster.c, wasting cycles.  (It turns out that this does not happen on
8-byte-MAXALIGN machines, because for them the outer MAXALIGN in the
TOAST_MAX_CHUNK_SIZE macro reduces TOAST_MAX_CHUNK_SIZE so that toast tuples
will be less than TOAST_TUPLE_THRESHOLD in size.  That MAXALIGN is really
incorrect, but we can't remove it now, see below.)  There isn't any particular
value in maxaligning before comparing to the thresholds, so just don't do
that, which saves a small number of cycles in itself.

These numbers should be rejiggered to minimize wasted space on toast-relation
pages, but we can't do that in the back branches because changing
TOAST_MAX_CHUNK_SIZE would force an initdb (by changing the contents of toast
tables).  We can move the toast decision thresholds a bit, though, which is
what this patch effectively does.

Thanks to Pavan Deolasee for discovering the unintended recursion.

Back-patch into 8.2, but not further, pending more testing.  (HEAD is about
to get a further patch modifying the thresholds, so it won't help much
for testing this form of the patch.)
2007-02-04 20:00:37 +00:00
Bruce Momjian c29a0bd52c Change vacuum lazy "compacting" warning message to:
errhint("Consider using VACUUM FULL on this relation or increasing the configuration parameter \"max_fsm_pages\".")));
2007-02-04 03:10:55 +00:00
Peter Eisentraut 4c488e857e Update SQL conformance information about XML features. 2007-02-03 17:59:36 +00:00
Peter Eisentraut ec020e1ceb Implement XMLSERIALIZE for real. Analogously, make the xml to text cast
observe the xmloption.

Reorganize the representation of the XML option in the parse tree and the
API to make it easier to manage and understand.

Add regression tests for parsing back XML expressions.
2007-02-03 14:06:56 +00:00
Neil Conway b587bafef1 This patch changes the installscript for vcbuild to actually parse the
generated solution files for what to install, instead of blindly copying
everything as it previously did. With the previous quick-n-dirty
version, it would copy old DLLs if you reconfigured in a way that didn't
include subprojects like a PL for example.

Magnus Hagander.
2007-02-02 16:25:34 +00:00
Michael Meskes 685523c420 Applied Magnus Hagander's patch to take away some compiler warnings. 2007-02-02 09:31:10 +00:00
Michael Meskes fc8115d42f Cleaned up va_list handling. Hopefully this now works on all archs. 2007-02-02 08:58:23 +00:00
Tom Lane 5413eef8dc Repair failure to check that a table is still compatible with a previously
made query plan.  Use of ALTER COLUMN TYPE creates a hazard for cached
query plans: they could contain Vars that claim a column has a different
type than it now has.  Fix this by checking during plan startup that Vars
at relation scan level match the current relation tuple descriptor.  Since
at that point we already have at least AccessShareLock, we can be sure the
column type will not change underneath us later in the query.  However,
since a backend's locks do not conflict against itself, there is still a
hole for an attacker to exploit: he could try to execute ALTER COLUMN TYPE
while a query is in progress in the current backend.  Seal that hole by
rejecting ALTER TABLE whenever the target relation is already open in
the current backend.

This is a significant security hole: not only can one trivially crash the
backend, but with appropriate misuse of pass-by-reference datatypes it is
possible to read out arbitrary locations in the server process's memory,
which could allow retrieving database content the user should not be able
to see.  Our thanks to Jeff Trout for the initial report.

Security: CVE-2007-0556
2007-02-02 00:07:03 +00:00
Tom Lane f8eb75b673 Repair insufficiently careful type checking for SQL-language functions:
we should check that the function code returns the claimed result datatype
every time we parse the function for execution.  Formerly, for simple
scalar result types we assumed the creation-time check was sufficient, but
this fails if the function selects from a table that's been redefined since
then, and even more obviously fails if check_function_bodies had been OFF.

This is a significant security hole: not only can one trivially crash the
backend, but with appropriate misuse of pass-by-reference datatypes it is
possible to read out arbitrary locations in the server process's memory,
which could allow retrieving database content the user should not be able
to see.  Our thanks to Jeff Trout for the initial report.

Security: CVE-2007-0555
2007-02-02 00:02:55 +00:00
Neil Conway d596efac56 Update some of the "expected" regression test results for Bruce's
recent may/might cleanup, in the hopes that this will unbreak the
buildfarm. Per report from Stefan Kaltenbrunner.
2007-02-01 20:11:18 +00:00
Tom Lane 6994d0b891 Fix plpgsql so that when a local variable has no initial-value expression,
an error will be thrown correctly if the variable is of a NOT NULL domain.
Report and almost-correct fix from Sergiy Vyshnevetskiy (bug #2948).
2007-02-01 19:22:07 +00:00
Bruce Momjian 8b4ff8b6a1 Wording cleanup for error messages. Also change can't -> cannot.
Standard English uses "may", "can", and "might" in different ways:

        may - permission, "You may borrow my rake."

        can - ability, "I can lift that log."

        might - possibility, "It might rain today."

Unfortunately, in conversational English, their use is often mixed, as
in, "You may use this variable to do X", when in fact, "can" is a better
choice.  Similarly, "It may crash" is better stated, "It might crash".
2007-02-01 19:10:30 +00:00
Neil Conway dbcaee49b5 Fix a few typos in comments in GiN. 2007-02-01 04:16:08 +00:00
Bruce Momjian bc799fab2b Update comment. 2007-01-31 22:17:03 +00:00
Bruce Momjian 482e6936fa Revert error message change for may/can/might --- needs discussion. 2007-01-31 21:03:37 +00:00
Bruce Momjian a134ee3379 Update documentation on may/can/might:
Standard English uses "may", "can", and "might" in different ways:

        may - permission, "You may borrow my rake."

        can - ability, "I can lift that log."

        might - possibility, "It might rain today."

Unfortunately, in conversational English, their use is often mixed, as
in, "You may use this variable to do X", when in fact, "can" is a better
choice.  Similarly, "It may crash" is better stated, "It might crash".

Also update two error messages mentioned in the documenation to match.
2007-01-31 20:56:20 +00:00
Neil Conway 67a1ae9f05 Add missing Makefile dependencies for the "bigtest" and "bigcheck"
targets, and refactor the tablespace setup code into a separate
Makefile target.
2007-01-31 19:38:50 +00:00
Neil Conway 05ce7d6a41 Rewrite uuid input and output routines to avoid dependency on the
nonportable "hh" sprintf(3) length modifier. Instead, do the parsing
and output by hand. The code to do this isn't ideal, but this is
an interim measure anyway: the uuid type should probably use the
in-memory struct layout specified by RFC 4122. For now, this patch
should hopefully rectify the buildfarm failures for the uuid test.

Along the way, re-add pg_cast entries for uuid <-> varchar, which
I mistakenly removed earlier, and bump the catversion.
2007-01-31 19:33:54 +00:00
Tom Lane 068bf6534f Fix initdb to not generate misleading error messages when postgres.bki
or other share-directory files are inaccessible for some reason other
than not existing.  Inspired by trouble report from Simon Kinsella.
2007-01-31 18:52:49 +00:00
Teodor Sigaev 61f621b506 Revert gincostestimate changes. 2007-01-31 16:54:51 +00:00
Teodor Sigaev d4c6da1527 Allow GIN's extractQuery method to signal that nothing can satisfy the query.
In this case extractQuery should returns -1 as nentries. This changes
prototype of extractQuery method to use int32* instead of uint32* for
nentries argument.
Based on that gincostestimate may see two corner cases: nothing will be found
or seqscan should be used.

Per proposal at http://archives.postgresql.org/pgsql-hackers/2007-01/msg01581.php

PS tsearch_core patch should be sightly modified to support changes, but I'm
waiting a verdict about reviewing of tsearch_core patch.
2007-01-31 15:09:45 +00:00
Tom Lane 35b039a26c Repair oversights in the mechanism used to store compiled plpgsql functions.
The original coding failed (tried to access deallocated memory) if there were
two active call sites (fn_extra pointers) for the same function and the
function definition was updated.  Also, if an update of a recursive function
was detected upon nested entry to the function, the existing compiled version
was summarily deallocated, resulting in crash upon return to the outer
instance.  Problem observed while studying a bug report from Sergiy
Vyshnevetskiy.

Bug does not exist before 8.1 since older versions just leaked the memory of
obsoleted compiled functions, rather than trying to reclaim it.
2007-01-30 22:05:13 +00:00
Tom Lane 33d78c9e48 Add SPI_push/SPI_pop calls so that datatype input and output functions called
by plpgsql can themselves use SPI --- possibly indirectly, as in the case
of domain_in() invoking plpgsql functions in a domain check constraint.
Per bug #2945 from Sergiy Vyshnevetskiy.

Somewhat arbitrarily, I've chosen to back-patch this as far as 8.0.  Given
the lack of prior complaints, it doesn't seem critical for 7.x.
2007-01-30 18:02:22 +00:00
Bruce Momjian ae875d318e Update documentation for pg_get_serial_sequence() function. 2007-01-30 02:39:27 +00:00
Tom Lane a635c08fa1 Add support for cross-type hashing in hash index searches and hash joins.
Hashing for aggregation purposes still needs work, so it's not time to
mark any cross-type operators as hashable for general use, but these cases
work if the operators are so marked by hand in the system catalogs.
2007-01-30 01:33:36 +00:00
Tom Lane e8cd6f14a2 Add comment noting that hashm_procid in a hash index's metapage isn't
actually used for anything.
2007-01-29 23:22:59 +00:00
Bruce Momjian a6017cff0b Use sizeof() for snprintf() buffer length. 2007-01-29 20:22:35 +00:00
Bruce Momjian 5b4fa95984 Update process termination message to display signal number and name
from exec.c and postmaster.c.
2007-01-29 20:17:40 +00:00
Tom Lane b39e91501c Improve hash join to discard input tuples immediately if they can't
match because they contain a null join key (and the join operator is
known strict).  Improves performance significantly when the inner
relation contains a lot of nulls, as per bug #2930.
2007-01-28 23:21:26 +00:00
Tom Lane 28c480e9ae Remove unnecessary checkpoint from PL regression tests. This was once
handy to prevent core dump files from disappearing, but it's useless now
because (a) we don't drop core in individual DB subdirectories anymore,
and (b) CREATE DATABASE forces an internal checkpoint anyway.
2007-01-28 21:17:32 +00:00
Neil Conway 74a1a2b8b1 Rename the uuid_t type to pg_uuid_t, to avoid a conflict with any
definitions of uuid_t that may be provided by the system headers. This
should hopefully fix the Win32 build problems reported by Magnus.
2007-01-28 20:25:38 +00:00
Andrew Dunstan cd47d0f781 Fix plpython MSVC build in non-debug mode. 2007-01-28 19:36:46 +00:00
Tom Lane 529a24a22b Remove some unnecessary conversion work in build_regtype_array(). 2007-01-28 19:05:35 +00:00
Tom Lane 2b8758a389 Repair oversight in creation of "append relations": we should set up
rel->tuples as well as rel->rows, since some estimation functions expect both
to be valid in every baserel.  Per report from Dave Dutcher.
2007-01-28 18:50:40 +00:00
Tom Lane 5681cde7b1 Make some small improvements in the accuracy of plpgsql's error location
reports; inspired by the misleading CONTEXT lines shown in recent bug report
from Stefan Kaltenbrunner.  Also, allow statement-type names shown in these
messages to be translated.
2007-01-28 17:58:13 +00:00
Andrew Dunstan 17c8493c64 Fix path problem in MSVC bison wrapper. per Joachim Wieland. 2007-01-28 16:29:37 +00:00
Neil Conway a534068e0e Add a new builtin type, "uuid". This implements a UUID type, similar to
that defined in RFC 4122. This patch includes the basic implementation,
plus regression tests. Documentation and perhaps some additional
functionality will come later. Catversion bumped.

Patch from Gevik Babakhani; review from Peter, Tom, and myself.
2007-01-28 16:16:54 +00:00
Tom Lane a8e0b66061 Fix up plpgsql's "simple expression" evaluation mechanism so that it behaves
safely in the presence of subtransactions.  To ensure that any ExprContext
shutdown callbacks are called at the right times, we have to have a separate
EState for each level of subtransaction.  Per "TupleDesc reference leak" bug
report from Stefan Kaltenbrunner.

Although I'm convinced the code is wrong as far back as 8.0, it doesn't seem
that there are any ways for the problem to really manifest before 8.2: AFAICS,
8.0 and 8.1 only use the ExprContextCallback mechanism to handle set-returning
functions, which cannot usefully be executed in a "simple expression" anyway.
Hence, no backpatch before 8.2 --- the risk of unforeseen breakage seems
to outweigh the chance of fixing something.
2007-01-28 16:15:49 +00:00
Tom Lane 76c7d2afee Drat, can't fit an additional argument into log_error. Is it worth an
sprintf pushup to be sure we can report something useful for out-of-range
exitstatus?
2007-01-28 07:29:32 +00:00
Tom Lane a9fa52504f Clean up broken usage of HAVE_DECL_SYS_SIGLIST and inconsistent/poorly
formatted error messages.
2007-01-28 06:32:03 +00:00
Bruce Momjian 91ed399517 Use autoconf build-in sys_siglist macro AC_DECL_SYS_SIGLIST, rather than
create our own.
2007-01-28 03:50:34 +00:00
Tom Lane 9bf559dee3 Add a delay at the start of the stats test, to let any prior stats
activity quiesce.  Possibly this will fix the large increase in
non-reproducible stats test failures we've noted since turning on
stats_row_level by default.
2007-01-28 03:02:31 +00:00
Tom Lane a053437d9e Dept of second thoughts: the IQ of estimate_array_length() needs to be
kept on par with that of scalararraysel(), else estimates that should
track might not.  Hence teach it about binary-compatible cases, too.
2007-01-28 02:53:34 +00:00
Bruce Momjian c2c0b318d8 Add signal.h for sys_siglist reference. 2007-01-28 02:33:09 +00:00
Tom Lane af18f6ad85 Fix scalararraysel() to cope with binary-compatible cases, such as text[]
versus varchar[].  This oversight probably explains Ryan Holmes' recent
complaint --- he was getting a generic selectivity estimate instead of
anything intelligent.
2007-01-28 01:37:38 +00:00
Bruce Momjian 82480fc254 Use sys_siglist[] to print out signal names for signal exits, rather
than just numbers.
2007-01-28 01:12:05 +00:00
Tom Lane 6cefacd7c8 Correct an old logic error in btree page splitting: when considering a split
exactly at the point where we need to insert a new item, the calculation used
the wrong size for the "high key" of the new left page.  This could lead to
choosing an unworkable split, resulting in "PANIC: failed to add item to the
left sibling" (or "right sibling") failure.  Although this bug has been there
a long time, it's very difficult to trigger a failure before 8.2, since there
was generally a lot of free space on both sides of a chosen split.  In 8.2,
where the user-selected fill factor determines how much free space the code
tries to leave, an unworkable split is much more likely.  Report by Joe
Conway, diagnosis and fix by Heikki Linnakangas.
2007-01-27 20:53:30 +00:00
Michael Meskes 0fe1c36757 Fixed expected files, so they are in sync with tests again. 2007-01-27 18:33:22 +00:00
Andrew Dunstan ee57938c0b remove unnecessary and now inaccurate cast which I should have removed with other old code. 2007-01-27 16:46:21 +00:00
Peter Eisentraut 915abb346a Reactivate libxml memory management via palloc, now that I think I've
classified the conditions under which this is safe to do (see source
code comment).
2007-01-27 14:50:51 +00:00
Peter Eisentraut d3be7fae11 Add trailing zero byte in Unicode codepoint conversion. 2007-01-27 11:48:31 +00:00
Andrew Dunstan 175a242187 Allow args to spi_prepare to be standard type aliaes as well as those known in pg_type. Fixes bug #2917. Add some regression tests for these cases. 2007-01-27 01:55:57 +00:00
Tom Lane 4355d214c2 On Windows, use pgwin32_waitforsinglesocket() instead of select() to wait for
input in the stats collector.  Our select() emulation is apparently buggy
for UDP sockets :-(.  This should resolve problems with stats collection
(and hence autovacuum) failing under more than minimal load.  Diagnosis
and patch by Magnus Hagander.

Patch probably needs to be back-ported to 8.1 and 8.0, but first let's
see if it makes the buildfarm happy...
2007-01-26 20:06:52 +00:00
Neil Conway 8ff2bccee3 Squelch some VC++ compiler warnings. Mark float literals with the "f"
suffix, to distinguish them from doubles. Make some function declarations
and definitions use the "const" qualifier for arguments consistently.
Ignore warning 4102 ("unreferenced label"), because such warnings
are always emitted by bison-generated code. Patch from Magnus Hagander.
2007-01-26 17:45:42 +00:00
Bruce Momjian 70268b50dd Update Win32 exception comment. 2007-01-25 21:50:49 +00:00
Neil Conway 74b6f73bc2 Add a setlocal command to the beginning of build.bat. This is required
to deal with buildenv.bat properly, so that PATH (for example) doesn't
expand infintly. Per report from Joachim Wieland, patch from Magnus.
2007-01-25 19:48:33 +00:00
Michael Meskes a5a1506c96 Removed compiler warning due to unneeded unsigned declaration.
Removed regression test that triggers those libc precision bugs on some archs.
2007-01-25 16:45:25 +00:00
Bruce Momjian c8bdd8ce88 Correction: temp_tablespaces was implemented by Albert Cervera Areny,
with cleanup by Jaime Casanova.
2007-01-25 15:05:15 +00:00
Bruce Momjian 0626a7d1b5 Reverse out use of Py_RETURN_TRUE in plpython, only supported in Python >=
2.3.
2007-01-25 14:52:23 +00:00
Peter Eisentraut 22bd156ff0 Various fixes in the logic of XML functions:
- Add new SQL command SET XML OPTION (also available via regular GUC) to
  control the DOCUMENT vs. CONTENT option in implicit parsing and
  serialization operations.

- Subtle corrections in the handling of the standalone property in
  xmlroot().

- Allow xmlroot() to work on content fragments.

- Subtle corrections in the handling of the version property in
  xmlconcat().

- Code refactoring for producing XML declarations.
2007-01-25 11:53:52 +00:00
Bruce Momjian 148ea5cbea Add GUC temp_tablespaces to provide a default location for temporary
objects.

Jaime Casanova
2007-01-25 04:35:11 +00:00
Bruce Momjian 5af6b2abe9 Properly detoast access to bytea field pg_trigger.tgargs. Old code
might cause server crash.

Backpatch to 8.2.X.
2007-01-25 04:17:46 +00:00
Bruce Momjian 251281767a Fix for plpython functions; return true/false for boolean,
rather than 1/0.  This helps when creating trigger functions that output
SQL.

Guido Goldstein
2007-01-25 04:08:51 +00:00
Bruce Momjian 6441288ec9 Add 'output file' option for pg_dumpall, especially useful for Win32,
where output redirection of child processes (pg_dump) doesn't work.

Dave Page
2007-01-25 03:30:43 +00:00
Bruce Momjian d37881fd90 Allow pg_dumpall to specify a database name rather than the default
'template1'.

Dave Page
2007-01-25 02:46:33 +00:00
Bruce Momjian 5ce94b28cc Add --tablespaces-only and --roles-only options to pg_dumpall.
Dave Page
2007-01-25 02:30:32 +00:00
Bruce Momjian ef65f6f7a4 Prevent WAL logging when COPY is done in the same transation that
created it.

Simon Riggs
2007-01-25 02:17:26 +00:00
Bruce Momjian 693c85d954 When using MSVC, disable the building of ecpg if pthreads is not
specified.

Magnus Hagander
2007-01-24 19:24:28 +00:00
Tom Lane 0887fa1117 Get pg_utf_mblen(), pg_utf2wchar_with_len(), and utf2ucs() all on the same
page about the maximum UTF8 sequence length we support (4 bytes since 8.1,
3 before that).  pg_utf2wchar_with_len never got updated to support 4-byte
characters at all, and in any case had a buffer-overrun risk in that it
could produce multiple pg_wchars from what mblen claims to be just one UTF8
character.  The only reason we don't have a major security hole is that most
callers allocate worst-case output buffers; the sole exception in released
versions appears to be pre-8.2 iwchareq() (ie, ILIKE), which can be crashed
due to zeroing out its return address --- but AFAICS that can't be exploited
for anything more than a crash, due to inability to control what gets written
there.  Per report from James Russell and Michael Fuhr.

Pre-8.1 the risk is much less, but I still think pg_utf2wchar_with_len's
behavior given an incomplete final character risks buffer overrun, so
back-patch that logic change anyway.

This patch also makes sure that UTF8 sequences exceeding the supported
length (whichever it is) are consistently treated as error cases, rather
than being treated like a valid shorter sequence in some places.
2007-01-24 17:12:17 +00:00
Tom Lane 07cf99ac6f Relax an Assert() that has been found to be too strict in some situations
involving unions of types having typmods.  Variants of the failure are known
to occur in 8.1 and up; not sure if it's possible in 8.0 and 7.4, but since
the code exists that far back, I'll just patch 'em all.  Per report from
Brian Hurt.
2007-01-24 01:25:47 +00:00
Peter Eisentraut 4e8b5cd94b Simplify handling of XML error messages: Just use the string provided by
libxml as the detail message.

As per <http://archives.postgresql.org/pgsql-hackers/2006-12/msg01087.php>.

For converting error codes to messages, we only need to cover those codes
that we raise ourselves now.
2007-01-23 23:39:16 +00:00
Tom Lane 379958128c Update pg_dump to support dumping operator families. 2007-01-23 17:54:50 +00:00
Bruce Momjian 867c133599 Add comment about exception lists in both winnt.h and ntstatus.h. 2007-01-23 16:21:17 +00:00
Alvaro Herrera e25138f3e9 This patch is required for vcbuild to work after the changes to
pg_proc.h (it's the same changes that's in gen_fmgrtab.sh in the unix
build).

Patch from Magnus Hagander.
2007-01-23 15:44:11 +00:00
Tom Lane a33cf1041f Add CREATE/ALTER/DROP OPERATOR FAMILY commands, also COMMENT ON OPERATOR
FAMILY; and add FAMILY option to CREATE OPERATOR CLASS to allow adding a
class to a pre-existing family.  Per previous discussion.  Man, what a
tedious lot of cutting and pasting ...
2007-01-23 05:07:18 +00:00
Bruce Momjian 8502b68513 Remove newline from error message because URL is gone. 2007-01-23 03:31:33 +00:00
Bruce Momjian 882b9948d7 Back out use of FormatMessage(), does error values, not exception
values.  Point to /include/ntstatus.h for an exception list, rather than
a URL.
2007-01-23 03:28:49 +00:00
Bruce Momjian 610f60a092 Print meaningfull error text for abonormal process exit on Win32, rather
than hex codes, using FormatMessage().
2007-01-23 01:45:11 +00:00
Tom Lane 4f06c688c7 Put back planner's ability to cache the results of mergejoinscansel(),
which I had removed in the first cut of the EquivalenceClass rewrite to
simplify that patch a little.  But it's still important --- in a four-way
join problem mergejoinscansel() was eating about 40% of the planning time
according to gprof.  Also, improve the EquivalenceClass code to re-use
join RestrictInfos rather than generating fresh ones for each join
considered.  This saves some memory space but more importantly improves
the effectiveness of caching planning info in RestrictInfos.
2007-01-22 20:00:40 +00:00
Bruce Momjian 45e0736938 Use errhint() for WIN32 SIGTERM message, where possible. 2007-01-22 19:38:05 +00:00
Bruce Momjian d26a5f1fea Uppercase hex value. 2007-01-22 18:32:57 +00:00
Bruce Momjian 208ae0c290 When system() fails in Win32, report it as an exception, print the
exception value in hex, and give a URL where the value can be looked-up.
2007-01-22 18:31:51 +00:00
Tom Lane 5a7471c307 Add COST and ROWS options to CREATE/ALTER FUNCTION, plus underlying pg_proc
columns procost and prorows, to allow simple user adjustment of the estimated
cost of a function call, as well as control of the estimated number of rows
returned by a set-returning function.  We might eventually wish to extend this
to allow function-specific estimation routines, but there seems to be
consensus that we should try a simple constant estimate first.  In particular
this provides a relatively simple way to control the order in which different
WHERE clauses are applied in a plan node, which is a Good Thing in view of the
fact that the recent EquivalenceClass planner rewrite made that much less
predictable than before.
2007-01-22 01:35:23 +00:00
Peter Eisentraut a85e9c61e5 Remove some unused variables 2007-01-21 09:23:29 +00:00
Peter Eisentraut 962e825cd7 Put back libpq link, but make sure that libpq's in-tree directory is
mentioned before the system directories.
2007-01-21 09:19:06 +00:00
Tom Lane 066926dfbb Refactor some lsyscache routines to eliminate duplicate code and save
a couple of syscache lookups in make_pathkey_from_sortinfo().
2007-01-21 00:57:15 +00:00
Tom Lane fcf4b146c6 Simplify pg_am representation of ordering-capable access methods:
provide just a boolean 'amcanorder', instead of fields that specify the
sort operator strategy numbers.  We have decided to require ordering-capable
AMs to use btree-compatible strategy numbers, so the old fields are
overkill (and indeed misleading about what's allowed).
2007-01-20 23:13:01 +00:00
Neil Conway aef0f53b62 Make setseed() return void, rather than an int4 without any use. Per
pgsql-patches discussion of September 20, 2006. Bump the catversion.
2007-01-20 21:47:10 +00:00
Bruce Momjian ebef17c7a2 Add documentation of memory and time units to postgresql.conf.
Backpatch to 8.2.X for new initdbs.
2007-01-20 21:42:03 +00:00
Tom Lane 67f06327f9 Don't use 'int' where you mean 'bool'. 2007-01-20 21:40:25 +00:00
Neil Conway 479ee09059 List disabled triggers separately in psql's "\d <table>" output.
Previously, disabled triggers were not displayed any differently than
enabled ones, which was quite misleading. Patch from Brendan Jurd.
2007-01-20 21:17:30 +00:00
Tom Lane f41803bb39 Refactor planner's pathkeys data structure to create a separate, explicit
representation of equivalence classes of variables.  This is an extensive
rewrite, but it brings a number of benefits:
* planner no longer fails in the presence of "incomplete" operator families
that don't offer operators for every possible combination of datatypes.
* avoid generating and then discarding redundant equality clauses.
* remove bogus assumption that derived equalities always use operators
named "=".
* mergejoins can work with a variety of sort orders (e.g., descending) now,
instead of tying each mergejoinable operator to exactly one sort order.
* better recognition of redundant sort columns.
* can make use of equalities appearing underneath an outer join.
2007-01-20 20:45:41 +00:00
Neil Conway 2b7334d487 Refactor the index AM API slightly: move currentItemData and
currentMarkData from IndexScanDesc to the opaque structs for the
AMs that need this information (currently gist and hash).

Patch from Heikki Linnakangas, fixes by Neil Conway.
2007-01-20 18:43:35 +00:00
Peter Eisentraut 2cc01004c6 Remove remains of old depend target. 2007-01-20 17:16:17 +00:00
Neil Conway 64230a9f28 Regression tests for large objects. Patch from Jeremy Drake. 2007-01-20 17:15:44 +00:00
Bruce Momjian f5f9577e50 Modify max_fsm_pages in postgresql.conf.sample to show a typical value,
rather than a value too high.
2007-01-20 17:04:58 +00:00
Neil Conway 4945a8fad4 Teach psql's \lo slash commands to respect quiet mode, and to output
HTML in HTML mode. Patch from Jeremy Drake.
2007-01-20 16:57:31 +00:00
Peter Eisentraut 552348c166 The libpq library directory was mentioned here in the wrong place, which
might lead to a previously installed libpq being used instead.  But we
don't actually have to link with libpq here at all, so remove it.
2007-01-20 15:26:28 +00:00
Peter Eisentraut 862c3ff04d Only build ecpg test code when the test is to be performed, in line with
other test code.
2007-01-20 15:25:29 +00:00
Bruce Momjian 09c1baabc3 Move code that places LOG error level between ERROR and PANIC into new
function is_log_level_output(), for code clarity.
2007-01-20 14:45:35 +00:00
Peter Eisentraut 92b8d17ab4 Fix xmlconcat regression test 2007-01-20 11:44:15 +00:00
Peter Eisentraut b4c8d49036 Fix xmlconcat by properly merging the XML declarations. Add aggregate
function xmlagg.
2007-01-20 09:27:20 +00:00
Neil Conway d97a89f21b Add missing copyright blurb, make ruleutils.c use the standard layout
for its header comment.
2007-01-20 01:08:42 +00:00
Alvaro Herrera 67a4c24bc8 Fix pg_regress breakage for PL and contrib tests, by not requiring that
"input" and "output" dirs be necessarily present.
2007-01-19 21:21:13 +00:00
Peter Eisentraut 4b48ad4fb2 Add support for converting binary values (i.e. bytea) into xml values,
with new GUC parameter "xmlbinary" that controls the output encoding, as
per SQL/XML standard.
2007-01-19 16:58:46 +00:00
Alvaro Herrera 5b4a08896b Change the sed rules in the regression test for pg_regress hackery to create
the generated files, to help Visual C++ to run these tests.  The tests still
pass in VPATH and normal builds.

Patch from Magnus Hagander, editorialized by me.
2007-01-19 16:42:24 +00:00
Peter Eisentraut 020841071b Clean up encoding issues in the xml type: In text mode, encoding
declarations are ignored and removed, in binary mode they are honored as
specified by the XML standard.
2007-01-18 13:59:11 +00:00
Tom Lane c81bfc244b Add a note pointing out that is_pseudo_constant_clause() doesn't check
for aggregates.  This is OK for current uses but could burn somebody
someday...
2007-01-17 17:25:52 +00:00
Tom Lane eddbf39756 Extend yesterday's patch so that the bgwriter is also told to forget
pending fsyncs during DROP DATABASE.  Obviously necessary in hindsight :-(
2007-01-17 16:25:01 +00:00
Neil Conway 530b10c719 Tweak the width_bucket() regression tests to avoid an unnecessary
dependency on the platform's floating point implementation. Per
report from Stefan Kaltenbrunner.
2007-01-17 16:19:08 +00:00
Tom Lane 6d660587f6 Revise bgwriter fsync-request mechanism to improve robustness when a table
is deleted.  A backend about to unlink a file now sends a "revoke fsync"
request to the bgwriter to make it clean out pending fsync requests.  There
is still a race condition where the bgwriter may try to fsync after the unlink
has happened, but we can resolve that by rechecking the fsync request queue
to see if a revoke request arrived meanwhile.  This eliminates the former
kluge of "just assuming" that an ENOENT failure is okay, and lets us handle
the fact that on Windows it might be EACCES too without introducing any
questionable assumptions.  After an idea of mine improved by Magnus.

The HEAD patch doesn't apply cleanly to 8.2, but I'll see about a back-port
later.  In the meantime this could do with some testing on Windows; I've been
able to force it through the code path via ENOENT, but that doesn't prove that
it actually fixes the Windows problem ...
2007-01-17 00:17:21 +00:00
Neil Conway 7f58ed1a10 vcbuild updates from Magnus:
* After Markos patch, now builds pgcrypto without zlib again
* Updates README with xml info
* xml requires xslt and iconv
* disable unnecessary warning about __cdecl()
* Add a buildenv.bat called from all other bat files to set up things
like PATH for flex/bison. (Can't just set it before calling, doesn't
always work when building from the GUI)
2007-01-16 21:43:19 +00:00
Neil Conway cf57ef4e50 Implement width_bucket() for the float8 data type.
The implementation is somewhat ugly logic-wise, but I don't see an
easy way to make it more concise.

When writing this, I noticed that my previous implementation of
width_bucket() doesn't handle NaN correctly:

    postgres=# select width_bucket('NaN', 1, 5, 5);
     width_bucket
    --------------
                6
    (1 row)

AFAICS SQL:2003 does not define a NaN value, so it doesn't address how
width_bucket() should behave here. The patch changes width_bucket() so
that ereport(ERROR) is raised if NaN is specified for the operand or the
lower or upper bounds to width_bucket(). For float8, NaN is disallowed
for any of the floating-point inputs, and +/- infinity is disallowed
for the histogram bounds (but allowed for the operand).

Update docs and regression tests, bump the catversion.
2007-01-16 21:41:14 +00:00
Tom Lane 6959cb5957 Fix incorrect permissions check in information_schema.key_column_usage view:
it was checking a pg_constraint OID instead of pg_class OID, resulting in
"relation with OID nnnnn does not exist" failures for anyone who wasn't
owner of the table being examined.  Per bug #2848 from Laurence Rowe.

Note: for existing 8.2 installations a simple version update won't fix this;
the easiest fix is to CREATE OR REPLACE this view with the corrected
definition.
2007-01-16 18:32:26 +00:00
Alvaro Herrera 10a5e3348e Enable autovacuum in the default configuration, per discussion. 2007-01-16 18:26:02 +00:00
Alvaro Herrera eb63cc3da8 Arrange for autovacuum to be killed when another operation wants to be alone
accessing it, like DROP DATABASE.  This allows the regression tests to pass
with autovacuum enabled, which open the gates for finally enabling autovacuum
by default.
2007-01-16 13:28:57 +00:00
Peter Eisentraut cb8906b354 Fix reverse compilation of IS DOCUMENT expression. 2007-01-14 21:39:24 +00:00
Peter Eisentraut 2f8f76bcd5 Add support for xmlval IS DOCUMENT expression. 2007-01-14 13:11:54 +00:00
Tom Lane 9a54b76b39 Fix handling of CC (century) format spec in to_date/to_char. According to
standard convention the 21st century runs from 2001-2100, not 2000-2099,
so make it work like that.  Per bug #2885 from Akio Iwaasa.

Backpatch to 8.2, but no further, since this is really a definitional
change; users of older branches are probably more interested in stability.
2007-01-12 23:34:55 +00:00
Peter Eisentraut 113fbe1264 Fix compiler warning 2007-01-12 22:09:49 +00:00
Peter Eisentraut 8b35795362 Use XML output escaping also in XMLFOREST. 2007-01-12 21:47:27 +00:00
Bruce Momjian a7ffd1a8b1 Update error messsage wording. 2007-01-12 19:34:41 +00:00
Bruce Momjian e6b054c0f5 Update ORDER BY UNION function/exprssion wording (again). 2007-01-12 19:23:38 +00:00
Tom Lane d83235415b Add some notes about the basic mathematical laws that the system presumes
hold true for operators in a btree operator family.  This is mostly to
clarify my own thinking about what the planner can assume for optimization
purposes.  (blowing dust off an old abstract-algebra textbook...)
2007-01-12 17:04:54 +00:00
Peter Eisentraut fc568b9d8f Allow for arbitrary data types as content in XMLELEMENT. The original
coercion to type xml was a mistake.  Escape values so they are valid
XML character data.
2007-01-12 16:29:24 +00:00
Michael Meskes 1b1c6ed70a Missed two new files from Joachim's patch. 2007-01-12 11:31:33 +00:00
Michael Meskes 89dad03f8b also adjust MinGW expected file to new setup
create expected file with correct port number
2007-01-12 11:27:28 +00:00
Michael Meskes b8f611cf4b Simplified regression handling
Added patch by Joachim to work around OpenBSD bug in regression suite.
2007-01-12 10:00:14 +00:00
Tom Lane 97903c3d94 Fix a performance problem in databases with large numbers of tables
(or other types of pg_class entry): the function pgstat_vacuum_tabstat,
invoked during VACUUM startup, had runtime proportional to the number of
stats table entries times the number of pg_class rows; in other words
O(N^2) if the stats collector's information is reasonably complete.
Replace list searching with a hash table to bring it back to O(N)
behavior.  Per report from kim at myemma.com.

Back-patch as far as 8.1; 8.0 and before use different coding here.
2007-01-11 23:06:03 +00:00
Bruce Momjian 87f6d64149 Update UNION/INTERSECT/EXCEPT ORDER BY error wording for
expressions/functions.
2007-01-11 20:04:50 +00:00
Bruce Momjian e2fe327013 Improve error wording of ORDER BY in UNION that uses new expressions in
ORDER BY.
2007-01-11 18:44:53 +00:00
Tom Lane ad429fe314 Teach nodeMergejoin how to handle DESC and/or NULLS FIRST sort orders.
So far only tested by hacking the planner ...
2007-01-11 17:19:13 +00:00
Michael Meskes 5b88b85cad Applied Joachim's patch for a --regression option.
Made this option mark the .c files, so the environment variable is no longer needed.
Created a special MinGW file with the special error message.
Do not print port into log file when running regression tests.
2007-01-11 15:47:34 +00:00
Bruce Momjian a5ec2ec77a Allow Borland CC to compile libpq and psql.
Backpatch to 8.2.X.

L Bayuk
2007-01-11 02:42:31 +00:00
Bruce Momjian 945d0b4b09 Allow Borland CC to compile libpq and psql.
L Bayuk
2007-01-11 02:39:52 +00:00
Peter Eisentraut c0e977c18f Use libxml's xmlwriter API for producing XML elements, instead of doing
our own printing dance.  This does a better job of quoting and escaping the
values.
2007-01-10 20:33:54 +00:00
Tom Lane c4e7e675d8 Make sure BYTE_ORDER gets defined in 64-bit builds on Solaris,
per Stefan Kaltenbrunner.
2007-01-10 18:22:50 +00:00
Tom Lane a191a169d6 Change the planner-to-executor API so that the planner tells the executor
which comparison operators to use for plan nodes involving tuple comparison
(Agg, Group, Unique, SetOp).  Formerly the executor looked up the default
equality operator for the datatype, which was really pretty shaky, since it's
possible that the data being fed to the node is sorted according to some
nondefault operator class that could have an incompatible idea of equality.
The planner knows what it has sorted by and therefore can provide the right
equality operator to use.  Also, this change moves a couple of catalog lookups
out of the executor and into the planner, which should help startup time for
pre-planned queries by some small amount.  Modify the planner to remove some
other cavalier assumptions about always being able to use the default
operators.  Also add "nulls first/last" info to the Plan node for a mergejoin
--- neither the executor nor the planner can cope yet, but at least the API is
in place.
2007-01-10 18:06:05 +00:00
Neil Conway 5f6d735356 Attached patch fixes two problems:
1) gendef works from inside visual studio - use a tempfile instead of
redirection, because for some reason you can't redirect dumpbin from
inside (patch from Joachim Wieland)
2) gendef must process only *.obj, or you get weird errors in some build
scenarios when it tries to process a logfile

Magnus Hagander
2007-01-10 04:02:05 +00:00
Neil Conway 840df5156a This patch enables verbose output when building all projects. This is
the same output level that was used when building a single project
before, and really needed to get reasonable information about what
happens (non-verbose just says "starting build of foo" and "done
building foo", more or less).

Magnus Hagander
2007-01-10 03:54:35 +00:00
Bruce Momjian 25d64529b8 Update copyright script to allow spaces around dash. 2007-01-10 02:41:28 +00:00
Bruce Momjian 0764f41306 Have log_temp_files be in kilobytes, remove trace call. 2007-01-09 22:16:46 +00:00
Bruce Momjian d64995aa89 Remove trace macro call from new log_temp_files, until it gets more
research.
2007-01-09 22:03:51 +00:00
Bruce Momjian 40f797be03 Enable another five tuple status bits by using the high bits of the
nattr field, and rename the field.

Heikki Linnakangas
2007-01-09 22:01:00 +00:00
Bruce Momjian be8a431881 Add GUC log_temp_files to log the use of temporary files.
Bill Moran
2007-01-09 21:31:17 +00:00
Tom Lane 69db009163 Add a citation to Seltzer and Yigit's Usenix '91 paper about hash table
management.  The paper clearly describes many of the ideas embodied in
our current hashing code, but as far as I could find out there is not
a direct code heritage.  (Mike Olsen recalls discussion of this paper
at Postgres meetings but believes it "informed the Postgres implementation
probably just at the design level".  Margo herself says she wasn't
involved with Postgres' hash code.)  Credit where credit is due 'n all
that, even if fifteen years after the fact.
2007-01-09 07:30:49 +00:00
Tom Lane 352871c357 Fix vcbuild to allow building without OpenSSL and/or zlib. Magnus 2007-01-09 06:00:43 +00:00
Tom Lane 7d5d06f860 vcbuild documentation from Magnus and Dave. 2007-01-09 05:56:49 +00:00
Tom Lane 833f9cb7b8 pltcl regression test needs to actually create an opclass, not just one operator. 2007-01-09 03:13:38 +00:00
Tom Lane 4431758229 Support ORDER BY ... NULLS FIRST/LAST, and add ASC/DESC/NULLS FIRST/NULLS LAST
per-column options for btree indexes.  The planner's support for this is still
pretty rudimentary; it does not yet know how to plan mergejoins with
nondefault ordering options.  The documentation is pretty rudimentary, too.
I'll work on improving that stuff later.

Note incompatible change from prior behavior: ORDER BY ... USING will now be
rejected if the operator is not a less-than or greater-than member of some
btree opclass.  This prevents less-than-sane behavior if an operator that
doesn't actually define a proper sort ordering is selected.
2007-01-09 02:14:16 +00:00
Peter Eisentraut 3a32ba2f3f Prevent duplicate attribute names in XMLELEMENT. 2007-01-08 23:41:57 +00:00
Tom Lane 19f9376bf4 Tweak joinlist creation to avoid generating useless one-element subproblems
when collapsing of JOIN trees is stopped by join_collapse_limit.  For instance
a list of 11 LEFT JOINs with limit 8 now produces something like
	((1 2 3 4 5 6 7 8) 9 10 11 12)
instead of
	(((1 2 3 4 5 6 7 8) (9)) 10 11 12)
The latter structure is really only required for a FULL JOIN.
Noted while studying an example from Shane Ambler.
2007-01-08 16:47:30 +00:00
Tom Lane 9a9a143a98 Remove cost_hashjoin's very ancient hack to discourage (once, entirely forbid)
hash joins with the estimated-larger relation on the inside.  There are
several cases where doing that makes perfect sense, and in cases where it
doesn't, the regular cost computation really ought to be able to figure that
out.  Make some marginal tweaks in said computation to try to get results
approximating reality a bit better.  Per an example from Shane Ambler.

Also, fix an oversight in the original patch to add seq_page_cost: the costs
of spilling a hash join to disk should be scaled by seq_page_cost.
2007-01-08 16:09:22 +00:00
Peter Eisentraut d807c7ef3f Some fine-tuning of xmlpi in corner cases:
- correct error codes
- do syntax checks in correct order
- strip leading spaces of argument
2007-01-07 22:49:56 +00:00
Peter Eisentraut fe733968ea Indent comments in makefiles better so they don't appear in the output. 2007-01-07 08:49:31 +00:00
Peter Eisentraut 53a11befc8 Allow XML fragment to contain a XML declaration. For that, we need a small
hand-crafted parser for the XML declaration, because libxml doesn't seem
to allow this.
2007-01-07 00:13:55 +00:00
Bruce Momjian f0f4a6d781 Apply fix so pow() and exp() ERANGE is used only if result is not 0. 2007-01-06 20:21:29 +00:00
Bruce Momjian c3578a68f8 Allow initdb to specify the pg_xlog directory.
Euler Taveira de Oliveira
2007-01-06 19:40:00 +00:00
Peter Eisentraut 19749fb0cf Replace xmlroot with a properly functioning version that parses the value,
sets the items, and serializes the value back (rather than adding an
arbitrary number of XML preambles as before).

The libxml memory management via palloc had to be disabled because it
crashes when libxml tries to access memory that was helpfully freed
earlier by PostgreSQL.  This needs further thought.
2007-01-06 19:18:36 +00:00
Tom Lane 063560bb8e Fix filtered_base_yylex() to save and restore base_yylval and base_yylloc
properly when doing a lookahead.  The lack of this was causing various
interesting misbehaviors when one tries to use "with" as a plain identifier.
2007-01-06 19:14:17 +00:00
Bruce Momjian e80b0bd69d Check for ERANGE in exp() as well.
Improve release docs for ecpg regression tests.
2007-01-06 15:18:03 +00:00
Bruce Momjian 19ce06b91b Improve dpow() check for ERANGE overflow for HPPA. 2007-01-06 04:14:55 +00:00
Tom Lane b2965b9fce Put back ERANGE test in dpow(). There are platforms that need this,
like my HPPA ...
2007-01-06 02:28:38 +00:00
Bruce Momjian 561b4bae78 Document that we need to update the ecpg regression files when we update
the library version number.
2007-01-06 00:25:11 +00:00
Bruce Momjian 9b1854f16e Update ecpg regresison output for new library version number. 2007-01-05 22:43:17 +00:00
Bruce Momjian 29dccf5fe0 Update CVS HEAD for 2007 copyright. Back branches are typically not
back-stamped for this.
2007-01-05 22:20:05 +00:00
Bruce Momjian 7e3c689fd3 Update copyright script, report year used 2007-01-05 21:29:20 +00:00
Bruce Momjian 5a2a527bb5 Modify copyright script to pull current year from `date`. 2007-01-05 21:09:53 +00:00
Bruce Momjian 1c3b43cddd Stamp major release 8.3.0, and increment library version numbers. 2007-01-05 20:54:43 +00:00
Andrew Dunstan 226e9fffc8 Call setrlimit if possible in pg_regress to allow core file generation, and provide a switch for similar behaviour in pg_ctl. 2007-01-05 16:17:55 +00:00
Bruce Momjian 138668ca37 Update float dpow() comment about whick platforms had issues with Nan.
Stefan Kaltenbrunner
2007-01-05 03:19:26 +00:00
Tom Lane e1aeba0799 Fix AddDefine to handle quotes properly. Magnus 2007-01-04 17:58:19 +00:00
Tom Lane 2ee56b6a3a Tweak pg_dumpall to add GRANT CONNECT ON DATABASE ... TO PUBLIC when dumping
database privileges from a pre-8.2 server.  This ensures that the reloaded
database will maintain the same behavior it had in the previous installation,
ie, everybody has connect privilege.  Per gripe from L Bayuk.
2007-01-04 17:49:37 +00:00
Tom Lane 7c8927bf08 Fix some small typos in comments. Greg Stark 2007-01-04 16:29:42 +00:00
Bruce Momjian a252994abe Simplify assignment of Inf for pow Nan (don't worry about the sign). 2007-01-04 05:18:39 +00:00
Tom Lane eeb2189112 Fix erroneous implementation of -s in postmaster.c (the switch doesn't take
an optarg).  Add some comments noting that code in three different files has
to be kept in sync.  Fix erroneous description of -S switch (it sets work_mem
not silent_mode), and do some light copy-editing elsewhere in postgres-ref.
2007-01-04 00:57:51 +00:00
Tom Lane d6061d2f31 Fix regex_fixed_prefix() to cope reasonably well with regex patterns of the
form '^(foo)$'.  Before, these could never be optimized into indexscans.
The recent changes to make psql and pg_dump generate such patterns (for \d
commands and -t and related switches, respectively) therefore represented
a big performance hit for people with large pg_class catalogs, as seen in
recent gripe from Erik Jones.  While at it, be more paranoid about
case-sensitivity checking in multibyte encodings, and fix some other
corner cases in which a regex might be interpreted too liberally.
2007-01-03 22:39:26 +00:00
Bruce Momjian 9c88830ec4 Update pow() tests to check for both errno==EDOM _and_ result==Nan, and
document why this happens.  Remove exp() errno check because not needed.
2007-01-03 22:05:00 +00:00
Tom Lane 812095d604 Fix erroneous error tests in pow/exp. 2007-01-03 19:34:23 +00:00
Tom Lane ef07221997 Clean up smgr.c/md.c APIs as per discussion a couple months ago. Instead of
having md.c return a success/failure boolean to smgr.c, which was just going
to elog anyway, let md.c issue the elog messages itself.  This allows better
error reporting, particularly in cases such as "short read" or "short write"
which Peter was complaining of.  Also, remove the kluge of allowing mdread()
to return zeroes from a read-beyond-EOF: this is now an error condition
except when InRecovery or zero_damaged_pages = true.  (Hash indexes used to
require that behavior, but no more.)  Also, enforce that mdwrite() is to be
used for rewriting existing blocks while mdextend() is to be used for
extending the relation EOF.  This restriction lets us get rid of the old
ad-hoc defense against creating huge files by an accidental reference to
a bogus block number: we'll only create new segments in mdextend() not
mdwrite() or mdread().  (Again, when InRecovery we allow it anyway, since
we need to allow updates of blocks that were later truncated away.)
Also, clean up the original makeshift patch for bug #2737: move the
responsibility for padding relation segments to full length into md.c.
2007-01-03 18:11:01 +00:00
Bruce Momjian 990fea847f Attempt to return proper overflow/underflow messages for platforms that
only return Nan and set errno for pow/exp overflow/underflow.
2007-01-03 14:35:24 +00:00
Bruce Momjian ada6fd63d9 For float4/8, remove errno checks for pow() and exp() because only some
platforms set errno, and we already have a check macro that detects
under/overflow, so there is no reason for platform-specific code
anymore.
2007-01-03 04:21:47 +00:00
D'Arcy J.M. Cain 74a40190aa Widen the money type to 64 bits. 2007-01-03 01:19:51 +00:00
Bruce Momjian d30d8f3aa0 Update expected result for new inet error message wording. 2007-01-02 23:38:42 +00:00
Bruce Momjian f2a19cf3a5 Adjust network errmsg("result is out of range") message to be consistent
with other places.
2007-01-02 22:21:08 +00:00
Bruce Momjian 182676ae27 Some platforms set errno on pow(), exp() overflow, some do not, so if
isinf(), fall through to our own infinity checks.
2007-01-02 22:19:42 +00:00
Tom Lane 09d09b988d Add a regression test for ALTER SET TABLESPACE; this is a whole separate
code path in tablecmds.c that wasn't exercised at all before.
2007-01-02 21:43:36 +00:00
Bruce Momjian cac2d912d9 finite() no longer used; remove finite() platform-specific
infrastructure.
2007-01-02 21:25:50 +00:00
Bruce Momjian 2955f1ebf4 Add n_live_tuples and n_dead_tuples to pg_stat_all_tables.
The purpose is to allow autovacuum-esq conditional vacuuming and
clustering using SQL to discover the required stats.

No documentation updates required.  Catalog version updated.

Glen Parker
2007-01-02 20:59:32 +00:00
Bruce Momjian 7bb1cc50b2 Add #include <float.h> for platforms that still need it. 2007-01-02 20:50:35 +00:00
Bruce Momjian f9ac414c35 Fix float4/8 to handle Infinity and Nan consistently, e.g. Infinity is a
valid result from a computation if one of the input values was infinity.
The previous code assumed an operation that returned infinity was an
overflow.

Handle underflow/overflow consistently, and add checks for aggregate
overflow.

Consistently prevent Inf/Nan from being cast to integer data types.

Fix INT_MIN % -1 to prevent overflow.

Update regression results for new error text.

Per report from Roman Kononov.
2007-01-02 20:00:50 +00:00
Tom Lane 0b56be8344 Found the problem with my operator-family changes: by fetching from
pg_opclass during LookupOpclassInfo(), I'd turned pg_opclass_oid_index
into a critical system index.  However the problem could only manifest
during a backend's first attempt to load opclass data, and then only
if it had successfully loaded pg_internal.init and subsequently received
a relcache flush; which made it impossible to reproduce in sequential
tests and darn hard even in parallel tests.  Memo to self: when
exercising cache flush scenarios, must disable LookupOpclassInfo's
internal cache too.
2006-12-31 20:32:04 +00:00
Tom Lane 5725b9d9af Support type modifiers for user-defined types, and pull most knowledge
about typmod representation for standard types out into type-specific
typmod I/O functions.  Teodor Sigaev, with some editorialization by
Tom Lane.
2006-12-30 21:21:56 +00:00
Tom Lane cd44c23eb4 Add support for XML build option to MSVC build scripts.
Magnus Hagander
2006-12-29 16:49:02 +00:00
Tom Lane dbfb727444 Fix multiple breakages in last XML patch. 2006-12-29 16:44:28 +00:00
Peter Eisentraut 8832f0f358 De-escape XML names when reverse-compiling XML expressions. 2006-12-29 10:50:22 +00:00
Tom Lane 9aefd56669 Fix up btree's initial scankey processing to be able to detect redundant
or contradictory keys even in cross-data-type scenarios.  This is another
benefit of the opfamily rewrite: we can find the needed comparison
operators now.
2006-12-28 23:16:39 +00:00
Tom Lane c99ddfc43d Enable btree_predicate_proof() to make proofs involving cross-data-type
predicate operators.  The hard stuff turns out to be already done in the
previous commit, we need merely open the floodgates...
2006-12-28 19:53:05 +00:00
Peter Eisentraut ad1425ae43 Add send and recv functions for xml type. 2006-12-28 14:28:36 +00:00
Peter Eisentraut d9e1c97feb Handle content and document options in xmlparse() correctly. 2006-12-28 03:17:38 +00:00
Tom Lane 859b8dd51a Add a defense to prevent core dumps if 8.2 version of rank_cd() is used with
the 8.1 SQL function definition for it.  Per report from Rajesh Kumar Mallah,
such a DBA error doesn't seem at all improbable, and the cost of checking for
it is not very high compared to the cost of running this function.  (It would
have been better to change the C name of the function so it wouldn't be called
by the old SQL definition, but it's too late for that now in the 8.2 branch.)
2006-12-28 01:09:01 +00:00
Tom Lane 3a7f5459d7 fflush the \o file, if any, after each backslash command. We already
do this for ordinary SQL commands, so it seems consistent to do it for
backslash commands too.  Per gripe from Rajesh Kumar Mallah.
2006-12-28 00:29:13 +00:00
Tom Lane 36b8706236 Revert exports.list change pending closer study. 2006-12-28 00:01:05 +00:00
Tom Lane 65b541b38f Use a more backward-compatible syntax for exports.list on Linux.
Per Thorkil Olesen.
2006-12-27 23:53:13 +00:00
Bruce Momjian 7accb29478 Clean up pgindent handling of comments after 'else' by only moving
multi-line comments to the next line.
2006-12-27 23:03:52 +00:00
Tom Lane 72619f8191 Modify local buffer management to request memory for local buffers in blocks
of increasing size, instead of one at a time.  This reduces the memory
management overhead when num_temp_buffers is large: in the previous coding
we would actually waste 50% of the space used for temp buffers, because aset.c
would round the individual requests up to 16K.  Problem noted while studying
a performance issue reported by Steven Flatt.

Back-patch as far as 8.1 --- older versions used few enough local buffers
that the issue isn't significant for them.
2006-12-27 22:31:54 +00:00
Tom Lane c22dea8900 Improve memory management code to avoid inefficient behavior when a context
has a small maxBlockSize: the maximum request size that we will treat as a
"chunk" needs to be limited to fit in maxBlockSize.  Otherwise we will round
up the request size to the next power of 2, wasting space, which is a bit
pointless if we aren't going to make the blocks big enough to fit additional
stuff in them.  The example motivating this is local buffer management, which
makes repeated allocations of 8K (one BLCKSZ buffer) in TopMemoryContext,
which has maxBlockSize = 8K because for the most part allocations there are
small.  This leads to each local buffer actually eating 16K of space, which
adds up when there are thousands of them.  I intend to change localbuf.c to
aggregate its requests, which will prevent this particular misbehavior, but
it seems likely that similar scenarios could arise elsewhere, so fixing the
core problem seems wise as well.
2006-12-27 22:30:48 +00:00
Tom Lane 6bb7b467c0 Print combining characters (those reported as having zero width by
PQdsplen()) normally, instead of replacing them by \uXXXX sequences.
Assume that they in fact occupy zero screen space for formatting purposes.
Per gripe from Michael Fuhr and ensuing discussion.
2006-12-27 19:45:36 +00:00
Tom Lane 0cbc5b1ed4 Fix failure due to accessing an already-freed tuple descriptor in a plan
involving HashAggregate over SubqueryScan (this is the known case, there
may well be more).  The bug is only latent in releases before 8.2 since they
didn't try to access tupletable slots' descriptors during ExecDropTupleTable.
The least bogus fix seems to be to make subqueries share the parent query's
memory context, so that tupdescs they create will have the same lifespan as
those of the parent query.  There are comments in the code envisioning going
even further by not having a separate child EState at all, but that will
require rethinking executor access to range tables, which I don't want to
tackle right now.  Per bug report from Jean-Pierre Pelletier.
2006-12-26 21:37:20 +00:00
Tom Lane 68996463d4 Repair bug #2839: the various ExecReScan functions need to reset
ps_TupFromTlist in plan nodes that make use of it.  This was being done
correctly in join nodes and Result nodes but not in any relation-scan nodes.
Bug would lead to bogus results if a set-returning function appeared in the
targetlist of a subquery that could be rescanned after partial execution,
for example a subquery within EXISTS().  Bug has been around forever :-(
... surprising it wasn't reported before.
2006-12-26 19:26:46 +00:00
Tom Lane fccf99f0c8 Repair bug #2836: SPI_execute_plan returned zero if none of the querytrees
were marked canSetTag.  While it's certainly correct to return the result
of the last one that is marked canSetTag, it's less clear what to do when
none of them are.  Since plpgsql will complain if zero is returned, the
8.2.0 behavior isn't good.  I've fixed it to restore the prior behavior of
returning the physically last query's result code when there are no
canSetTag queries.
2006-12-26 16:56:18 +00:00
Tom Lane 506a9893b7 Make HISTCONTROL=ignoredups work again (broken by misordering of
operations during recent code refactoring).  Per bug #2840 from Ned Crigler.
2006-12-24 19:14:28 +00:00
Tom Lane 57f1630cf0 Bring some order and sanity to error handling in the xml patch.
Use a TRY block instead of (inadequate) ad-hoc coding to ensure that
libxml is cleaned up after a failure.  Report the intended SQLCODE
instead of defaulting to XX000.  Avoid risking use of a dangling
pointer by keeping the persistent error buffer in TopMemoryContext.
Be less trusting that error messages don't contain %.

This patch doesn't do anything about changing the way the messages
are put together --- this is just about mechanism.
2006-12-24 18:25:58 +00:00
Tom Lane e9da20ab4d Fix machine-dependent crash in sqlchar_to_unicode(). Get rid of
bletcherous and unsafe manipulation of global encoding setting.
Clean up libxml reporting mechanism a bit (it still looks like a
dangling-pointer crash waiting to happen, though, not to mention
being far less than sane from a localization standpoint).
2006-12-24 00:57:48 +00:00
Tom Lane c957c0bac7 Code review for XML patch. Instill a bit of sanity in the location of
the XmlExpr code in various lists, use a representation that has some hope
of reverse-listing correctly (though it's still a de-escaping function
shy of correctness), generally try to make it look more like Postgres
coding conventions.
2006-12-24 00:29:20 +00:00
Tom Lane 64974613c9 Suppress various compiler warnings in new xml code. 2006-12-23 04:56:50 +00:00
Bruce Momjian 426030eda1 Remove unnecessary parentheses in if() statements. 2006-12-23 02:13:24 +00:00
Bruce Momjian 27eeca5c5b For GUC values, check for partial string matches on 'on' and 'off', but
require at least two characters for uniqueness.   This now matches the
behavior of other boolean strings we support, per report from Gurjeet
Singh.
2006-12-23 00:52:40 +00:00
Tom Lane a78fcfb512 Restructure operator classes to allow improved handling of cross-data-type
cases.  Operator classes now exist within "operator families".  While most
families are equivalent to a single class, related classes can be grouped
into one family to represent the fact that they are semantically compatible.
Cross-type operators are now naturally adjunct parts of a family, without
having to wedge them into a particular opclass as we had done originally.

This commit restructures the catalogs and cleans up enough of the fallout so
that everything still works at least as well as before, but most of the work
needed to actually improve the planner's behavior will come later.  Also,
there are not yet CREATE/DROP/ALTER OPERATOR FAMILY commands; the only way
to create a new family right now is to allow CREATE OPERATOR CLASS to make
one by default.  I owe some more documentation work, too.  But that can all
be done in smaller pieces once this infrastructure is in place.
2006-12-23 00:43:13 +00:00
Peter Eisentraut 2c0efff2a0 Fix expected file. 2006-12-21 19:18:04 +00:00
Peter Eisentraut d030a2bb20 Catalog version bump for SQL/XML changes. 2006-12-21 18:32:56 +00:00
Peter Eisentraut 8c1de5fb00 Initial SQL/XML support: xml data type and initial set of functions. 2006-12-21 16:05:16 +00:00
Andrew Dunstan 5133dd786b Interpret a dbName param to PQsetdbLogin as a conninfo string if it contains an = sign. Tom Lane and Andrew Dunstan. 2006-12-19 01:53:36 +00:00
Tom Lane 93b4f0ff77 Set pg_am.amstrategies to zero for index AMs that don't have fixed
operator strategy numbers, ie, GiST and GIN.  This is almost cosmetic
enough to not need a catversion bump, but since the opr_sanity regression
test has to change in sync with the catalog entry, I figured I'd better
do one.
2006-12-18 18:56:29 +00:00
Andrew Dunstan 6b4fe0460c fix thinko in placement of TimeValStruct typedef in Windows case, as reported by Magnus. 2006-12-18 14:17:41 +00:00
Andrew Dunstan 7bdc55cc71 enable \timing oputput for \copy commands 2006-12-16 00:38:43 +00:00
Tom Lane 281f40187f Fix some planner bugs exposed by reports from Arjen van der Meijden. These
are all in new-in-8.2 logic associated with indexability of ScalarArrayOpExpr
(IN-clauses) or amortization of indexscan costs across repeated indexscans
on the inside of a nestloop.  In particular:

Fix some logic errors in the estimation for multiple scans induced by a
ScalarArrayOpExpr indexqual.

Include a small cost component in bitmap index scans to reflect the costs of
manipulating the bitmap itself; this is mainly to prevent a bitmap scan from
appearing to have the same cost as a plain indexscan for fetching a single
tuple.

Also add a per-index-scan-startup CPU cost component; while prior releases
were clearly too pessimistic about the cost of repeated indexscans, the
original 8.2 coding allowed the cost of an indexscan to effectively go to zero
if repeated often enough, which is overly optimistic.

Pay some attention to index correlation when estimating costs for a nestloop
inner indexscan: this is significant when the plan fetches multiple heap
tuples per iteration, since high correlation means those tuples are probably
on the same or adjacent heap pages.
2006-12-15 18:42:26 +00:00
Tom Lane 782d68e38d Put JST back into the default set of timezone abbreviations;
was removed in an unexplainable moment of brain fade.
2006-12-15 16:54:43 +00:00
Tom Lane 1f09a857b7 Make --with-ldap build on Unixware, per Olivier Prenant. 2006-12-14 21:49:54 +00:00
Peter Eisentraut 0bc8a5b669 Remove Windows port^W^Wobsolete template file. 2006-12-14 20:53:50 +00:00
Peter Eisentraut e5467d9e24 Activate WIN32_STACK_RLIMIT override only on platforms where this is
necessary.
2006-12-14 20:51:14 +00:00
Tom Lane ec97c55de2 Put back yet another improperly-removed #include, per Mark Kirkwood. 2006-12-13 05:54:48 +00:00
Tom Lane f18c57fdf1 Fix planner to do the right thing when a degenerate outer join (one whose
joinclause doesn't use any outer-side vars) requires a "bushy" plan to be
created.  The normal heuristic to avoid joins with no joinclause has to be
overridden in that case.  Problem is new in 8.2; before that we forced the
outer join order anyway.  Per example from Teodor.
2006-12-12 21:31:02 +00:00
Peter Eisentraut 9cf2706742 Allow augmenting CPPFLAGS from the configure command line. This generally
works, but some platform templates overwrote it without asking.
2006-12-12 19:43:19 +00:00
Tom Lane 9fa12ddda6 Add a paramtypmod field to Param nodes. This is dead weight for Params
representing externally-supplied values, since the APIs that carry such
values only specify type not typmod.  However, for PARAM_SUBLINK Params
it is handy to carry the typmod of the sublink's output column.  This
is a much cleaner solution for the recently reported 'could not find
pathkey item to sort' and 'failed to find unique expression in subplan
tlist' bugs than my original 8.2-compatible patch.  Besides, someday we
might want to support typmods for external parameters ...
2006-12-10 22:13:27 +00:00
Tom Lane 0cb91ccba9 Remove the logId/logSeg fields from pg_control, because they are not needed
in normal operation, and we can avoid rewriting pg_control at every log
segment switch if we don't insist that these values be valid.  Reducing
the number of pg_control updates is a good idea for both performance and
reliability.  It does make pg_resetxlog's life a bit harder, but that seems
a good tradeoff; and anyway the change to pg_resetxlog amounts to automating
something people formerly needed to do by hand, namely look at the existing
pg_xlog files to make sure the new WAL start point was past them.

In passing, change the wording of xlog.c's "database system was interrupted"
messages: describe the pg_control timestamp as "last known up at" rather than
implying it is the exact time of service interruption.  With this change the
timestamp will generally be the time of the last checkpoint, which could be
many minutes before the failure; and we've already seen indications that
people tend to misinterpret the old wording.

initdb forced due to change in pg_control layout.  Simon Riggs and Tom Lane
2006-12-08 19:50:53 +00:00
Neil Conway 543790104a Fix the build for when SHOW_MEMORY_STATS is defined. The reference to
the nonexistent ShowStats variable is simply removed, per Gavin Sherry.
2006-12-08 02:15:07 +00:00
Tom Lane 566480acbb Avoid double free of _SPI_current->tuptable. AtEOSubXact_SPI() now tries to
release it in a subtransaction abort, but this neglects possibility that
someone outside SPI already did.  Fix is for spi.c to forget about a tuptable
as soon as it's handed it back to the caller.
Per bug #2817 from Michael Andreen.
2006-12-08 00:40:27 +00:00
Tom Lane 8124215cc3 Repair incorrect placement of WHERE clauses when there are multiple,
rearrangeable outer joins and the WHERE clause is non-strict and mentions
only nullable-side relations.  New bug in 8.2, caused by new logic to allow
rearranging outer joins.  Per bug #2807 from Ross Cohen; thanks to Jeff
Davis for producing a usable test case.
2006-12-07 19:33:40 +00:00
Tom Lane b307d7a6c4 Fix planning of SubLinks to ensure that Vars generated from transformation of
a sublink's test expression have the correct vartypmod, rather than defaulting
to -1.  There's at least one place where this is important because we're
expecting these Vars to be exactly equal() to those appearing in the subplan
itself.  This is a pretty klugy solution --- it would likely be cleaner to
change Param nodes to include a typmod field --- but we can't do that in the
already-released 8.2 branch.
Per bug report from Hubert Fongarnand.
2006-12-06 19:40:01 +00:00
Neil Conway 886a02d1cb Add a txn_start column to pg_stat_activity. This makes it easier to
identify long-running transactions. Since we already need to record
the transaction-start time (e.g. for now()), we don't need any
additional system calls to report this information.

Catversion bumped, initdb required.
2006-12-06 18:06:48 +00:00
Neil Conway dd740e1fd0 Various improvements to the GUC description strings. Punctuate and
capitalize the strings like sentences. Remove unnecessarily
specific descriptions of the units used by GUC variables, since
we now allow any reasonable unit to be specified.
2006-12-06 17:35:49 +00:00
Bruce Momjian 50a073916c Fix pg_dump linking on Win32 with MSVS win32.mak:
The module link is insufficient.:-(

---- Sorry, japanese message change to xxx ---
link.exe @C:\DOCUME~1\hi-saito\LOCALS~1\Temp\nmk03360.
common.obj : error LNK2001: xxxxxx "_pg_qsort" xxxxxx
pg_dump_sort.obj : error LNK2001: xxxxx "_pg_qsort" xxxxx
.\Release\pg_dump.exe : fatal error LNK1120: xxxxxxx
NMAKE : fatal error U1077: 'link.exe' : xxxxx '0x460'
Stop.

Hiroshi Saito
2006-12-04 22:26:17 +00:00
Bruce Momjian 1e22e60505 Patch of Win32 Encoding problem for server messages using
FormatMessage() (This should have been in 8.2.0, patched to 8.2.X and
HEAD):

I think this problem to be complex....
http://archives.postgresql.org/pgsql-hackers/2006-11/msg00042.php

FormatMessage of windows cannot consider the encoding of the database.
However, I should try the solution now. It is necessary to clear the
problem.

Multi character-code exists together in message and log. It doesn't
consider
the data base encoding that the user intended....

The user in multi-byte country can try this.
http://inet.winpg.jp/~saito/pg_bug/MessageCheck.c

That is, it is likely to become it in this manner.(Japanese)
http://inet.winpg.jp/~saito/pg_bug/FormatMessage998.png

Hiroshi Saito
2006-12-04 22:23:40 +00:00
Tom Lane 8dcc8e3761 Refactor ExecGetJunkAttribute to avoid searching for junk attributes
by name on each and every row processed.  Profiling suggests this may
buy a percent or two for simple UPDATE scenarios, which isn't huge,
but when it's so easy to get ...
2006-12-04 02:06:55 +00:00
Tom Lane 406d028a9b Fix LIMIT/OFFSET for null limit values. This worked before 8.2 but was broken
by the change to make limit values int8 instead of int4.  (Specifically, you
can do DatumGetInt32 safely on a null value, but not DatumGetInt64.)  Per
bug #2803 from Greg Johnson.
2006-12-03 21:40:07 +00:00
Bruce Momjian f8660e309d Stamp 8.2, except configure.in. 2006-12-02 04:12:39 +00:00
Peter Eisentraut 339483928d Translation updates 2006-12-02 01:16:16 +00:00
Tom Lane 3049fe7cfa Make the bgwriter's error recovery path do smgrcloseall(). On Windows this
should allow delete-pending files to actually go away, and thereby work
around the various complaints we've seen about 'permission denied'
errors in such cases.  Should be reasonably harmless in any case...
2006-12-01 19:55:28 +00:00
Tom Lane 5f60086e10 Minor adjustments to make failures in startup/shutdown behave more cleanly.
StartupXLOG and ShutdownXLOG no longer need to be critical sections, because
in all contexts where they are invoked, elog(ERROR) would be translated to
elog(FATAL) anyway.  (One change in bgwriter.c is needed to make this true:
set ExitOnAnyError before trying to exit.  This is a good fix anyway since
the existing code would have gone into an infinite loop on elog(ERROR) during
shutdown.)  That avoids a misleading report of PANIC during semi-orderly
failures.  Modify the postmaster to include the startup process in the set of
processes that get SIGTERM when a fast shutdown is requested, and also fix it
to not try to restart the bgwriter if the bgwriter fails while trying to write
the shutdown checkpoint.  Net result is that "pg_ctl stop -m fast" does
something reasonable for a system in warm standby mode, and so should Unix
system shutdown (ie, universal SIGTERM).  Per gripe from Stephen Harris and
some corner-case testing of my own.
2006-11-30 18:29:12 +00:00
Teodor Sigaev ef148d6b85 Fix bug with page deletion. If inner page is removed and it tries to
remove page on next level linked from next inner page, ginScanToDelete()
wrongly sets parent page. Bug reveals when many item pointers from index
was deleted ( several hundred thousands).

Bug is discovered by hubert depesz lubaczewski <depesz@gmail.com>

Suppose, we need rc2 before release...
2006-11-30 16:22:32 +00:00
Alvaro Herrera cf06c2e5d4 Fix Makefile problem which prevented installation on VPATH builds. 2006-11-29 21:21:03 +00:00
Tom Lane ae8c1bea02 More MSVC build support from Magnus. 2006-11-29 19:49:31 +00:00
Peter Eisentraut 0943799f2d Spelling fix 2006-11-29 14:50:07 +00:00
Tom Lane 765cc1588f Update timezone data to tzdata2006p zic distribution. It seems Western
Australia decided to institute DST with one month's notice ... way to go,
politicians.
2006-11-28 19:37:03 +00:00
Tom Lane 64353640e8 Mark to_char(timestamp without timezone) as stable, not immutable, since its
result now depends on the lc_messages setting, as noted by Bruce.
Also, mark to_number() and the numeric-type variants of to_char() as stable,
because their results depend on lc_numeric; this is a longstanding oversight.
Also, mark to_date() and to_char(interval) as stable; although these appear
not to depend on any GUC variables as of CVS HEAD, that seems a property
unlikely to survive future improvements.  It seems best to mark all the
formatting functions stable and be done with it.
catversion not bumped, because this does not seem critical enough to force
a post-RC1 initdb, and anyway we cannot do so in the back branches.
2006-11-28 19:18:44 +00:00
Peter Eisentraut a75ccd1def Fix some translator comments so that xgettext finds them and pgindent does
not destroy them.  Maybe we can adjust pgindent sometime.
2006-11-28 12:54:42 +00:00
Peter Eisentraut b64d2d2133 Add workaround for localizing May and abbreviated May differently. Idea
of Dennis Björklund.
2006-11-28 12:53:44 +00:00
Michael Meskes 09309df9a2 Also install ecpg_config.h 2006-11-28 12:44:06 +00:00
Tom Lane fa8e42dff1 Add $(CFLAGS) to the simplified build rule for .so libraries on Darwin.
Arguably we should do this on *all* platforms, but for the moment Ill
2006-11-28 05:45:43 +00:00
Andrew Dunstan 796a3f373a protect vfprintf from hijacking by Windows gettext just like other members of the *printf family. 2006-11-28 01:12:34 +00:00
Peter Eisentraut 3cd318a8d1 Fix gratuitous message spelling differences 2006-11-27 15:50:55 +00:00
PostgreSQL Daemon c11b5228cf update for rc1 2006-11-25 03:34:13 +00:00
Bruce Momjian 0d9e0d9dde Copy fsync() defines into test_fsync.c, someday place them in an
include.

Propery align for O_DIRECT.

Check for write()/fsync() failures.
2006-11-25 01:22:28 +00:00
Tom Lane df3a6fe477 Fix psql's \copy command to ensure that it cycles libpq back to the idle state
(in particular, causing the ReadyForQuery message to be eaten) before
returning from do_copy.  The only known consequence of failing to do so is
that get_prompt might show a wrong result for the %x transaction status
escape, as reported by Bernd Helmle; but it's possible there are other issues.

Back-patch as far as 7.4, the oldest version supporting %x.
2006-11-24 23:06:50 +00:00
Bruce Momjian 9b15b14014 Revert (too late in beta):
Fix to_char() locale handling to honor LC_TIME, not LC_MESSAGES.

Euler Taveira de Oliveira
2006-11-24 22:25:56 +00:00
Tom Lane 988a87a03a Change pg_stat_all_tables and sister views to put the recently-added
vacuum/analyze timestamp columns at the end, rather than at a random
spot in the middle as in the original patch.  This was deemed more usable
as well as less likely to break existing application code.  initdb forced
accordingly.  In passing, remove former kluge for initializing
pg_stat_file()'s pg_proc entry --- bootstrap mode was fixed recently
so that this can be done without any hacks, but I overlooked this usage.
2006-11-24 21:18:42 +00:00
Peter Eisentraut 2c82df2a06 Translation updates 2006-11-24 17:11:57 +00:00
Peter Eisentraut 8c1ce4559d Separate release preparation jobs for all releases and for major releases 2006-11-24 17:03:50 +00:00
Bruce Momjian d2b694d825 Fix to_char() locale handling to honor LC_TIME, not LC_MESSAGES.
Euler Taveira de Oliveira
2006-11-24 15:26:18 +00:00
Peter Eisentraut 409600942b KB -> kB 2006-11-24 09:20:12 +00:00
Bruce Momjian 1120c61b29 Revert out:
Update fsync test to match new O_DIRECT behavior.

Greg Smith
2006-11-23 17:20:47 +00:00
Bruce Momjian 3455b0a5d5 Update fsync test to match new O_DIRECT behavior.
Greg Smith
2006-11-23 16:41:11 +00:00
Tom Lane ce3d1a4fbc Un-break ecpg regression test. 2006-11-23 05:47:48 +00:00
Neil Conway 546d6848ca Add a comment noting that heap_copytuple_with_tuple() results in a
HeapTuple that is no longer allocated as a single palloc() block; if
used carelessly, this might result in a subsequent memory leak after
heap_freetuple().
2006-11-23 05:27:18 +00:00
Bruce Momjian 0c6f167c4a Update lock comments for concurrent index creation, analyze.
Walter Cruz
2006-11-23 05:14:04 +00:00
Bruce Momjian 956c2d6683 Make ecpg test variable 'times' static so as not to conflict with libc
symbol.
2006-11-23 04:38:01 +00:00
Tom Lane 395249ecbe Several changes to reduce the probability of running out of memory during
AbortTransaction, which would lead to recursion and eventual PANIC exit
as illustrated in recent report from Jeff Davis.  First, in xact.c create
a special dedicated memory context for AbortTransaction to run in.  This
solves the problem as long as AbortTransaction doesn't need more than 32K
(or whatever other size we create the context with).  But in corner cases
it might.  Second, in trigger.c arrange to keep pending after-trigger event
records in separate contexts that can be freed near the beginning of
AbortTransaction, rather than having them persist until CleanupTransaction
as before.  Third, in portalmem.c arrange to free executor state data
earlier as well.  These two changes should result in backing off the
out-of-memory condition before AbortTransaction needs any significant
amount of memory, at least in typical cases such as memory overrun due
to too many trigger events or too big an executor hash table.  And all
the same for subtransaction abort too, of course.
2006-11-23 01:14:59 +00:00
Tom Lane 617f123f06 Get rid of retail definitions of HAVE_STRDUP and HAVE_VSNPRINTF in
some of the Windows-only makefiles; the correct place to assert these
things is pg_config.h.win32.  Per bug #2677.
2006-11-21 23:26:47 +00:00
Tom Lane d735804f88 Translate Windows' GMT Standard Time/GMT Daylight Time zones to
zic's Europe/London, rather than Europe/Dublin as before.  This seems
a less surprising choice, particularly with respect to dates before
1948.  Original suggestion was to translate to straight GMT, but this
seems wrong given that these zones *are* DST-aware.  Per offlist
discussion with Magnus.
2006-11-21 23:11:55 +00:00
Tom Lane 7ec1c5a867 Prevent intratransaction memory leak when a subtransaction is aborted
in the middle of executing a SPI query.  This doesn't entirely fix the
problem of memory leakage in plpgsql exception handling, but it should
get rid of the lion's share of leakage.
2006-11-21 22:35:29 +00:00
Tom Lane 5fc2d7e451 Suppress timezone (%Z) part of timestamp display when running on Windows,
because on that platform strftime produces localized zone names in varying
encodings.  Even though it's only in a comment, this can cause encoding
errors when reloading the dump script.  Per suggestion from Andreas
Seltenreich.  Also, suppress %Z on Windows in the %s escape of
log_line_prefix ... not sure why this one is different from the other two,
but it shouldn't be.
2006-11-21 22:19:46 +00:00
Tom Lane c714e5cba7 Fix plpython to work (or at least pass its regression tests) with
python 2.5.  This involves fixing several violations of the published
spec for creating PyTypeObjects, and adding another regression test
expected output for yet another variation of error message spelling.
2006-11-21 21:51:05 +00:00
Tom Lane 3ad0728c81 On systems that have setsid(2) (which should be just about everything except
Windows), arrange for each postmaster child process to be its own process
group leader, and deliver signals SIGINT, SIGTERM, SIGQUIT to the whole
process group not only the direct child process.  This provides saner behavior
for archive and recovery scripts; in particular, it's possible to shut down a
warm-standby recovery server using "pg_ctl stop -m immediate", since delivery
of SIGQUIT to the startup subprocess will result in killing the waiting
recovery_command.  Also, this makes Query Cancel and statement_timeout apply
to scripts being run from backends via system().  (There is no support in the
core backend for that, but it's widely done using untrusted PLs.)  Per gripe
from Stephen Harris and subsequent discussion.
2006-11-21 20:59:53 +00:00
Neil Conway 66eda1c7b3 VC build patch from Magnus:
Typo in the changes to plperl - uses wrong dir, and had a missing slash.

Also fixes error checking for xsubpp - it was broken in a way that hid
the problem above when run more than once (which is the normal case when
developing).
2006-11-21 17:54:26 +00:00
Andrew Dunstan f87fcd43c6 remove duplicate declaration, per report from Magnus Hagander. 2006-11-21 16:59:02 +00:00
Tom Lane bcd713a618 If SSL negotiation fails and SSLMODE is 'prefer', then retry without SSL.
Negotiation failure is only likely to happen if one side or the other is
misconfigured, eg. bad client certificate.  I'm not 100% convinced that
a retry is really the best thing, hence not back-patching this fix for now.
Per gripe from Sergio Cinos.
2006-11-21 16:28:00 +00:00
Tom Lane 414c7a537e Change the default setting for log_min_error_statement to ERROR. Per
recent discussion in which majority opinion was that this is a more
widely useful setting than the previous default of PANIC.
2006-11-21 01:23:37 +00:00
Tom Lane e82d9e6283 Adjust elog.c so that elog(FATAL) exits (including cases where ERROR is
promoted to FATAL) end in exit(1) not exit(0).  Then change the postmaster to
allow exit(1) without a system-wide panic, but not for the startup subprocess
or the bgwriter.  There were a couple of places that were using exit(1) to
deliberately force a system-wide panic; adjust these to be exit(2) instead.
This fixes the problem noted back in July that if the startup process exits
with elog(ERROR), the postmaster would think everything is hunky-dory and
proceed to start up.  Alternative solutions such as trying to run the entire
startup process as a critical section seem less clean, primarily because of
the fact that a fair amount of startup code is shared by all postmaster
children in the EXEC_BACKEND case.  We'd need an ugly special case somewhere
near the head of main.c to make it work if it's the child process's
responsibility to determine what happens; and what's the point when the
postmaster already treats different children differently?
2006-11-21 00:49:55 +00:00
Tom Lane aaef29b377 More MSVC build fixes:
* New versions of OpenSSL come with proper debug versions, and use
suffixed names on the LIBs for that. Adapts library handling to deal
with that.

* Fixes error where it incorrectly enabled Kerberos based on NLS
configuration instead of Kerberos configuration

* Specifies path of perl in config, instead of using current one.
Required when using a 64-bit perl normally, but want to build pl/perl
against 32-bit one (required)

* Fix so pgevent generates win32ver.rc automatically

Magnus Hagander
2006-11-20 19:18:02 +00:00
Tom Lane 1a5c450f30 When truncating a relation in-place (eg during VACUUM), do not try to unlink
any no-longer-needed segments; just truncate them to zero bytes and leave
the files in place for possible future re-use.  This avoids problems when
the segments are re-used due to relation growth shortly after truncation.
Before, the bgwriter, and possibly other backends, could still be holding
open file references to the old segment files, and would write dirty blocks
into those files where they'd disappear from the view of other processes.

Back-patch as far as 8.0.  I believe the 7.x branches are not vulnerable,
because they had no bgwriter, and "blind" writes by other backends would
always be done via freshly-opened file references.
2006-11-20 01:07:56 +00:00
Tom Lane d68efb3f8d Repair problems with hash indexes that span multiple segments: the hash code's
preference for filling pages out-of-order tends to confuse the sanity checks
in md.c, as per report from Balazs Nagy in bug #2737.  The fix is to ensure
that the smgr-level code always has the same idea of the logical EOF as the
hash index code does, by using ReadBuffer(P_NEW) where we are adding a single
page to the end of the index, and using smgrextend() to reserve a large batch
of pages when creating a new splitpoint.  The patch is a bit ugly because it
avoids making any changes in md.c, which seems the most prudent approach for a
backpatchable beta-period fix.  After 8.3 development opens, I'll take a look
at a cleaner but more invasive patch, in particular getting rid of the now
unnecessary hack to allow reading beyond EOF in mdread().

Backpatch as far as 7.4.  The bug likely exists in 7.3 as well, but because
of the magnitude of the 7.3-to-7.4 changes in hash, the later-version patch
doesn't even begin to apply.  Given the other known bugs in the 7.3-era hash
code, it does not seem worth trying to develop a separate patch for 7.3.
2006-11-19 21:33:23 +00:00
Tom Lane 4f335a3d7f Repair two related errors in heap_lock_tuple: it was failing to recognize
cases where we already hold the desired lock "indirectly", either via
membership in a MultiXact or because the lock was originally taken by a
different subtransaction of the current transaction.  These cases must be
accounted for to avoid needless deadlocks and/or inappropriate replacement of
an exclusive lock with a shared lock.  Per report from Clarence Gardner and
subsequent investigation.
2006-11-17 18:00:15 +00:00
Peter Eisentraut b6b5aa102b Small message equalization fix 2006-11-17 16:46:27 +00:00
Peter Eisentraut e05a3c30b0 Message fix 2006-11-16 14:41:49 +00:00
Peter Eisentraut e138b80996 String fix 2006-11-16 14:28:41 +00:00
Andrew Dunstan 751e3e6bd8 Force plperl and plperlu to run in separate interpreters. Create an error
on an attempt to create the second interpreter if this is not supported by
the perl installation. Per recent -hackers discussion.
2006-11-13 17:13:57 +00:00
Neil Conway dc10387eb1 Fix some typos in comments. 2006-11-12 06:55:54 +00:00
Tom Lane a46ca619f8 Suppress a few 'uninitialized variable' warnings that gcc emits only at
-O3 or higher (presumably because it inlines more things).  Per gripe
from Mark Mielke.
2006-11-11 01:14:19 +00:00
Tom Lane d13f372acd Fix pg_get_serial_sequence(), which could incorrectly return the name
of an index on a serial column, rather than the name of the associated
sequence.  Fallout from recent changes in dependency setup for serials.
Per bug #2732 from Basil Evseenko.
2006-11-10 22:59:29 +00:00
Tom Lane 792d6edd5b Clean up some misleading references to %p being a full path, per Simon. 2006-11-10 22:32:20 +00:00
Tom Lane 33556af7c7 Fix errors in key_column_usage.position_in_unique_constraint column recently
added to information_schema (per a SQL2003 addition).  The original coding
failed if a referenced column participated in more than one pg_constraint
entry.  Also, it did not work if an FK relied directly on a unique index
without any constraint syntactic sugar --- this case is outside the SQL spec,
but PG has always supported it, so it's reasonable for our information_schema
to handle it too.  Per bug#2750 from Stephen Haberman.

Although this patch changes the initial catalog contents, I didn't force
initdb.  Any beta3 testers who need the fix can install it via CREATE OR
REPLACE VIEW, so forcing them to initdb seems an unnecessary imposition.
2006-11-10 18:10:10 +00:00
Tom Lane d19798e584 Fix set_joinrel_size_estimates() to estimate outer-join sizes more
accurately: we have to distinguish the effects of the join's own ON
clauses from the effects of pushed-down clauses.  Failing to do so
was a quick hack long ago, but it's time to be smarter.  Per example
from Thomas H.
2006-11-10 01:21:41 +00:00
Tom Lane dcbdf9b1d4 Change Windows rename and unlink substitutes so that they time out after
30 seconds instead of retrying forever.  Also modify xlog.c so that if
it fails to rename an old xlog segment up to a future slot, it will
unlink the segment instead.  Per discussion of bug #2712, in which it
became apparent that Windows can handle unlinking a file that's being
held open, but not renaming it.
2006-11-08 20:12:05 +00:00
Tom Lane 808b3190d1 Modify aset.c to track the next intended block allocation size explicitly.
The former coding relied on the actual allocated size of the last block,
which made it behave strangely if the first allocation in a context was
larger than ALLOC_CHUNK_LIMIT: subsequent allocations would be referenced
to that and not to the intended series of block sizes.  Noted while
studying a memory wastage gripe from Tatsuo.
2006-11-08 19:27:24 +00:00
Tom Lane fc5eb3f69a Tweak accumArrayResult() to double the size of its working arrays when
more space is needed, instead of incrementing by a fixed amount; the old
method wastes lots of space and time when the ultimate size is large.
Per gripe from Tatsuo.
2006-11-08 19:24:38 +00:00
Tom Lane a5cf12e2ef Fix performance issues in replace_text(), replace_text_regexp(), and
text_to_array(): they all had O(N^2) behavior on long input strings in
multibyte encodings, because of repeated rescanning of the input text to
identify substrings whose positions/lengths were computed in characters
instead of bytes.  Fix by tracking the current source position as a char
pointer as well as a character-count.  Also avoid some unnecessary palloc
operations.  text_to_array() also leaked memory intracall due to failure
to pfree temporary strings.  Per gripe from Tatsuo Ishii.
2006-11-08 19:22:25 +00:00
Michael Meskes 0c96e42797 Applied patch by Peter Harris to free auto_mem structure on connect 2006-11-08 10:46:47 +00:00
Neil Conway 415b925345 Fix a memory leak in psql: we'd leak a few PGresult handles if
a connectivity error occurred while executing one of the queries
for "\d <table>". Not serious, but still worth fixing. Patch from
Brendan Jurd.
2006-11-08 01:22:55 +00:00
Neil Conway 8964b41c7b Remove a 15-year old comment questioning behavior that is now well-
established: referencing an undefined parameter should result in an
error, not NULL.
2006-11-08 00:45:30 +00:00
PostgreSQL Daemon 9b3aee524f Tag as Beta3 ... two outstanding *known* bugs before RC1 ... 2006-11-07 17:59:05 +00:00
Tom Lane f0395d50e9 Repair bug #2694 concerning an ARRAY[] construct whose inputs are empty
sub-arrays.  Per discussion, if all inputs are empty arrays then result
must be an empty array too, whereas a mix of empty and nonempty arrays
should (and already did) draw an error.  In the back branches, the
construct was strict: any NULL input immediately yielded a NULL output;
so I left that behavior alone.  HEAD was simply ignoring NULL sub-arrays,
which doesn't seem very sensible.  For lack of a better idea it now
treats NULL sub-arrays the same as empty ones.
2006-11-06 18:21:31 +00:00
Tom Lane 36e012e727 Remove temporary Windows-specific debugging code; it seems the problem
with fopen() not using FILE_SHARE_DELETE was indeed the bug we were after,
given lack of recent reports.
2006-11-06 17:10:22 +00:00
Tom Lane 02f37bd8c4 Revert to the pre-8.2 method of probing for libm, that is, always
include it if it links properly.  It seems too risky to assume that
standard functions like pow() are not special-cased by the compiler.
Per report from Andreas Lange that build fails on Solaris cc compiler
with -fast.  Even though we don't consider that a supported option,
I'm worried that similar issues will arise with other compilers.
2006-11-06 03:44:38 +00:00
Tom Lane 74686b6de7 Get rid of some unnecessary dependencies on DataDir: wherever possible,
the backend should rely on its working-directory setting instead.
Also do some message-style police work in contrib/adminpack.
2006-11-06 03:06:41 +00:00
Neil Conway 62fe410ec6 Minor fix for LDAP authentication: if an error occurs, we need to
manually release the LDAP handle via ldap_unbind(). This isn't a
significant problem in practice because an error eventually results
in exiting the process, but we can cleanup correctly without too
much pain.

In passing, fix an error in snprintf() usage: the "size" parameter
to snprintf() is the size of the destination buffer, including space
for the NUL terminator. Also, depending on the value of NAMEDATALEN,
the old coding could have allowed for a buffer overflow.
2006-11-06 01:27:52 +00:00
Tom Lane 76d5667ba8 Fix recently-identified PITR recovery hazard: the base backup could contain
stale relcache init files (pg_internal.init), and there is no mechanism for
updating them during WAL replay.  Easiest solution is just to delete the init
files at conclusion of startup, and let the first backend started in each
database take care of rebuilding the init file.  Simon Riggs and Tom Lane.

Back-patched to 8.1.  Arguably this should be fixed in 8.0 too, but it would
require significantly more code since 8.0 has no handy startup-time scan of
pg_database to piggyback on.  Manual solution of the problem is possible
in 8.0 (just delete the pg_internal.init files before starting WAL replay),
so that may be a sufficient answer.
2006-11-05 23:40:31 +00:00
Tom Lane 48188e1621 Fix recently-understood problems with handling of XID freezing, particularly
in PITR scenarios.  We now WAL-log the replacement of old XIDs with
FrozenTransactionId, so that such replacement is guaranteed to propagate to
PITR slave databases.  Also, rather than relying on hint-bit updates to be
preserved, pg_clog is not truncated until all instances of an XID are known to
have been replaced by FrozenTransactionId.  Add new GUC variables and
pg_autovacuum columns to allow management of the freezing policy, so that
users can trade off the size of pg_clog against the amount of freezing work
done.  Revise the already-existing code that forces autovacuum of tables
approaching the wraparound point to make it more bulletproof; also, revise the
autovacuum logic so that anti-wraparound vacuuming is done per-table rather
than per-database.  initdb forced because of changes in pg_class, pg_database,
and pg_autovacuum catalogs.  Heikki Linnakangas, Simon Riggs, and Tom Lane.
2006-11-05 22:42:10 +00:00
Tom Lane 70ce5c9082 Fix "failed to re-find parent key" btree VACUUM failure by revising page
deletion code to avoid the case where an upper-level btree page remains "half
dead" for a significant period of time, and to block insertions into a key
range that is in process of being re-assigned to the right sibling of the
deleted page's parent.  This prevents the scenario reported by Ed L. wherein
index keys could become out-of-order in the grandparent index level.

Since this is a moderately invasive fix, I'm applying it only to HEAD.
The bug exists back to 7.4, but the back branches will get a different patch.
2006-11-01 19:43:17 +00:00
Tom Lane 19d0c46def pg_restore failed on tar-format archives if they contained large objects
(blobs) with comments, per bug #2727 from Konstantin Pelepelin.
Mea culpa for not having tested this case.
Back-patch to 8.1; prior branches don't dump blob comments at all.
2006-11-01 15:59:26 +00:00
Tom Lane c1fdbba49f Update zic database to tzdata2006n. 2006-11-01 05:20:38 +00:00
Tom Lane 76d5f6f035 expression_tree_walker failed to let walker function see the immediate child
node of a SubLink or SubPlan testexpr field.  Bug resulted from replacing
the old lefthand/exprs list fields with a simple expression field, and not
remembering that expression_tree_walker is coded to save a few cycles by
recursing directly to self on list fields (on the assumption the walker
isn't interested in List nodes per se).  On non-list fields it must of
course call the walker.  Possibly that hack isn't worth the risk of more
such bugs, but I'll leave it be for now.  Per bug report from James Robinson.
2006-10-25 22:11:32 +00:00
Tom Lane 4df8de7a68 Fix check for whether a clauseless join has to be forced in the presence of
outer joins.  Originally it was only looking for overlap of the righthand
side of a left join, but we have to do it on the lefthand side too.
Per example from Jean-Pierre Pelletier.
2006-10-24 17:50:22 +00:00
Tom Lane d8221dfa6d Tweak zic.c to compile cleanly on MSVC: use CopyFile instead of
CopyFileEx.  This avoids a warning about the function not being
present on older Windows versions.  Magnus Hagander
2006-10-24 15:11:03 +00:00
Tom Lane 66f5264a2e Stamp 8.2beta2. 2006-10-23 22:50:20 +00:00
Michael Meskes a09f9ff649 Small parser sync 2006-10-23 08:00:48 +00:00
Tom Lane 954c1813ac Remove an unnecessary HOLD_INTERRUPTS/RESUME_INTERRUPTS pair.
This was required back when RESUME_INTERRUPTS could actually
execute ProcessInterrupts, but that hasn't been true since 2001...
2006-10-22 20:34:54 +00:00
Tom Lane c2c0b14086 Various MSVC build fixes from Magnus; also remove stray Windows
newlines.
2006-10-22 17:17:09 +00:00
Peter Eisentraut 9c2c41646a Translations update 2006-10-21 21:03:04 +00:00
Tom Lane 33af087695 Try to fix the AIX getaddrinfo mess in a way that works on all versions.
Going to wait for buildfarm results before backpatching, this time.
2006-10-19 23:17:39 +00:00
Tom Lane 1b84441a49 Marginal improvement in logging: include the function name when logging
a fastpath function call.
2006-10-19 22:44:11 +00:00
Tom Lane 4887f5f979 Rename our substitute qsort to pg_qsort at the link-symbol level (but
provide a macro so code can still just say qsort).  Avoids linker warnings
on pickier platforms such as Darwin, and outright failure on MSVC.
2006-10-19 20:56:22 +00:00
Tom Lane 443abd83e5 Add externs for optarg/optind where apparently needed. Per Magnus. 2006-10-19 20:38:48 +00:00
Tom Lane f6e00ae128 Further MSVC portability fixes from Magnus. 2006-10-19 20:03:08 +00:00
Tom Lane 2315df21f8 Fix a couple of places that were assuming debug_query_string couldn't
be NULL ... seems an unsafe assumption.
2006-10-19 19:53:03 +00:00
Tom Lane 681892208f 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.
2006-10-19 19:52:22 +00:00
Tom Lane def651f48f Clean up local redeclarations of variables with DLLIMPORT, per report
from Magnus that MSVC complains about this.
2006-10-19 18:32:48 +00:00
Tom Lane dbb397f30f 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.
2006-10-19 17:26:32 +00:00
Tom Lane 1e758d5263 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.
2006-10-18 22:44:12 +00:00
Tom Lane 877f08da14 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.
2006-10-18 16:43:14 +00:00
Tom Lane 022fd99668 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.
2006-10-17 21:03:21 +00:00
Tom Lane 14914e0d33 Fix unexpected side-effect of changes for case insensitivity of timezone names. 2006-10-17 02:21:46 +00:00
Peter Eisentraut 3e584e071b Remove use of whrandom module, which was removed in Python 2.5. 2006-10-16 21:13:57 +00:00
Tom Lane 0b35b01e7a 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.
2006-10-16 19:58:27 +00:00
Bruce Momjian 389fad1e6b Remove use of '<' and '>' in SGML, use '&' escapes.
Update find_gt_lt to allow grep parameters to be passed into it.
2006-10-16 17:28:03 +00:00
Tom Lane e0dece127d 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.
2006-10-15 22:04:08 +00:00
Tom Lane a3dff39c53 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.
2006-10-15 18:56:39 +00:00
Tom Lane 1314983fd3 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.
2006-10-14 23:07:22 +00:00
Tom Lane f58eac82ee Code and docs review for ALTER TABLE INHERIT/NO INHERIT patch. 2006-10-13 21:43:19 +00:00
Bruce Momjian 5777dca4f8 Fix test_fsync compile on MinGW(win32)
Hiroshi Saito
2006-10-13 14:19:29 +00:00
Teodor Sigaev 47df6e7e2d 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
2006-10-13 13:59:47 +00:00
Tom Lane d2e17e1ddc 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.
2006-10-12 17:02:24 +00:00
Tom Lane b38900c767 Use Min() instead of min() in qsort, for consistency and to avoid
redefined-macro warnings on some platforms.  Per gripe from Hiroshi Saito.
2006-10-12 15:04:55 +00:00
Tom Lane a50606de91 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.
2006-10-12 05:14:49 +00:00
Bruce Momjian 638cc9abf8 Update pg_hba.conf comment about documentation section. 2006-10-11 23:01:46 +00:00
Tom Lane 772c5ba31f 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.
2006-10-11 20:21:04 +00:00
Tom Lane 8f2f180ff1 Code review for LIKE INCLUDING CONSTRAINTS patch --- improve comments,
don't cheat on the raw-vs-cooked status of a constraint.
2006-10-11 16:42:59 +00:00
Bruce Momjian ed95aea27d MSVC/BCC Win32 compiler fixes.
Hiroshi Saito
2006-10-10 21:31:44 +00:00
Bruce Momjian 04209052ba Typo fix. 2006-10-10 00:30:32 +00:00
Bruce Momjian 327d5c3571 Add release checklist item:
o copy FAQs from HEAD to top-most branches
2006-10-10 00:30:18 +00:00
Tom Lane 24e9752863 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.
2006-10-09 23:36:59 +00:00
Tom Lane 39ed8c4049 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.
2006-10-09 23:30:33 +00:00
Tom Lane c50b36d215 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
2006-10-08 19:31:03 +00:00
Bruce Momjian 7efbf6d7b6 Add include needed for new getrusage() call. 2006-10-08 17:45:50 +00:00
Tom Lane c7611f99d6 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.
2006-10-08 17:15:34 +00:00
Bruce Momjian 5e0bc3b711 Update comments for pgcvslog, -r BASE does not work with cvs log. 2006-10-08 01:39:59 +00:00
Tom Lane 0629030962 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 ...
2006-10-07 22:21:38 +00:00
Peter Eisentraut 5a05d18e59 Added missing entry (CASCADED) in keywords table. 2006-10-07 21:51:02 +00:00
Tom Lane 953893822b Fix thinko in comment. 2006-10-07 21:48:43 +00:00
Peter Eisentraut 2b25e1169f 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.
2006-10-07 20:59:05 +00:00
Tom Lane dc9142f406 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.
2006-10-07 20:16:57 +00:00
Tom Lane 71a6f8b85b 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().
2006-10-07 19:25:29 +00:00
Tom Lane 1c160291ef 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.
2006-10-07 16:43:28 +00:00
Tom Lane 452fa214e5 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.
2006-10-07 00:11:53 +00:00
Tom Lane 11d4d424d4 Fix bcc32.mak to create and remove pg_config_os.h properly. Apparently
win32.mak got patched for this, but not bcc32.mak.
2006-10-06 18:53:53 +00:00
Tom Lane 6ea8f49573 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.
2006-10-06 18:23:35 +00:00
Peter Eisentraut b9b4f10b5b Message style improvements 2006-10-06 17:14:01 +00:00
Tom Lane 378c79dc78 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.
2006-10-05 23:33:33 +00:00
Tom Lane e378f82e00 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.
2006-10-05 17:57:40 +00:00
Tom Lane b2c04d5e6b Work around buggy strtod on (some versions of?) IRIX. Combination of
proposed patches from John Jorgensen and Steve Singer.
2006-10-05 01:40:45 +00:00
Tom Lane 9e6c3582dd 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.
2006-10-05 00:07:45 +00:00
Bruce Momjian 03ea9ecbda Update Solaris strtod() bug comment. 2006-10-04 22:49:44 +00:00
Bruce Momjian 50a3fb9f22 Update Solaris strtol() bug comment. 2006-10-04 22:48:41 +00:00
Tom Lane bdef2bf296 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.
2006-10-04 22:31:14 +00:00
Bruce Momjian abcf7603c0 Exclude pgindent from affecting the ecpg regression directory. 2006-10-04 20:42:19 +00:00
Tom Lane ff40057116 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.
2006-10-04 18:58:08 +00:00
Tom Lane af0af42f85 Fix comment to agree with presentation. 2006-10-04 18:45:52 +00:00
Tom Lane 0d2aed94c2 Add qsort and qsort_arg to MSVC list of src/port files. 2006-10-04 16:51:22 +00:00
Michael Meskes fcc2fbac22 Reverted changes made by pgindent
Made show.pgc set all variables before displaying them.
2006-10-04 10:09:03 +00:00
Bruce Momjian f99a569a2e pgindent run for 8.2. 2006-10-04 00:30:14 +00:00
Bruce Momjian 451e419e98 Udpate typedefs for pgindent. 2006-10-04 00:02:10 +00:00
Tom Lane 6edd2b4a91 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.)
2006-10-03 22:18:23 +00:00
Bruce Momjian ed80f5701b 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.

Magnus Hagander
2006-10-03 22:12:14 +00:00
Bruce Momjian eff77a759a Update typedef list for 8.2 pgindent run. 2006-10-03 22:09:42 +00:00
Bruce Momjian fb541a1b59 Fix yesno_prompt() memory leak in /script tools, reported by Converity. 2006-10-03 21:45:20 +00:00
Bruce Momjian 0a42adcc32 Improve numeric overflow error message.
David Fetter
2006-10-03 21:25:56 +00:00
Bruce Momjian 45c8ed96b9 Make some sentences consistent with similar ones.
Euler Taveira de Oliveira
2006-10-03 21:21:36 +00:00
Bruce Momjian 5441a64164 The attached patch changes units of the some default values in
postgresql.conf.

- shared_buffers = 32000kB => 32MB
- temp_buffers = 8000kB => 8MB
- wal_buffers = 8 => 64kB

The code of initdb was a bit modified to write MB-unit values.
Values greater than 8000kB are rounded out to MB.

GUC_UNIT_XBLOCKS is added for wal_buffers. It is like GUC_UNIT_BLOCKS,
but uses XLOG_BLCKSZ instead of BLCKSZ.

Also, I cleaned up the test of GUC_UNIT_* flags in preparation to
add more unit flags in less bits.

ITAGAKI Takahiro
2006-10-03 21:11:55 +00:00
Bruce Momjian e15ce612b5 Cleanup pgwin32_open() 'if' test, and avoid possible error. 2006-10-03 20:44:18 +00:00
Tom Lane 0184c6835c Rearrange MSVC errcode hack, fix incorrect _MSC_VER test. Magnus 2006-10-03 20:33:20 +00:00
Bruce Momjian 878f32feab Move WIN32_ONLY_COMPILER define from c.h to win32.h because it was being
defined too late.
2006-10-03 03:59:22 +00:00
Bruce Momjian e3f1607cf8 Mention in postgresql.conf that autovacuum also needs
stats_start_collector and stats_row_level to also be on

David Wheeler
2006-10-03 00:39:26 +00:00
Bruce Momjian b65b2cead5 Add URL about strlcpy() creation history. 2006-10-02 23:58:59 +00:00
Tom Lane 1e05359f4b Properly handle the case where strlcpy() exists in libc but isn't
declared in the system headers.  Per report from Bruce than some BSDen
are like this.
2006-10-02 00:06:18 +00:00
Tom Lane db2dcf58be Make some marginal performance improvements in reportErrorPosition(),
which turns out to be a dominant part of the runtime in scenarios
involving lots of parse-time warnings (such as Stephen Frost's example
of an INSERT with a lot of backslash-containing strings).  There's not
a whole lot we can do about the character-at-a-time scanning, but we
can at least avoid traversing the query twice.
2006-10-01 22:25:48 +00:00
Tom Lane 8e4fe3ba1e Do a CHECK_FOR_INTERRUPTS after emitting a message of less than ERROR
severity.  This is to ensure the user can cancel a query that's spitting
out lots of notice/warning messages, even if they're coming from a loop
that doesn't otherwise contain a CHECK_FOR_INTERRUPTS.  Per gripe from
Stephen Frost.
2006-10-01 22:08:18 +00:00
Tom Lane 514ce7a331 Fix overly enthusiastic Assert introduced in 8.1: it's expecting a
CaseTestExpr, but forgot that the optimizer is sometimes able to replace
CaseTestExpr by Const.
2006-10-01 17:23:38 +00:00
Bruce Momjian a9c7c5c240 BSD/OS doesn't have a prototype for strlcpy() but has the function, so
work around that with defines.
2006-09-30 12:06:42 +00:00
Tom Lane 352a56ba68 Allow assignment to array elements not contiguous with those already
present; intervening positions are filled with nulls.  This behavior
is required by SQL99 but was not implementable before 8.2 due to lack
of support for nulls in arrays.  I have only made it work for the
one-dimensional case, which is all that SQL99 requires.  It seems quite
complex to get it right in higher dimensions, and since we never allowed
extension at all in higher dimensions, I think that must count as a
future feature addition not a bug fix.
2006-09-29 21:22:21 +00:00
Tom Lane f213131f20 Fix IS NULL and IS NOT NULL tests on row-valued expressions to conform to
the SQL spec, viz IS NULL is true if all the row's fields are null, IS NOT
NULL is true if all the row's fields are not null.  The former coding got
this right for a limited number of cases with IS NULL (ie, those where it
could disassemble a ROW constructor at parse time), but was entirely wrong
for IS NOT NULL.  Per report from Teodor.

I desisted from changing the behavior for arrays, since on closer inspection
it's not clear that there's any support for that in the SQL spec.  This
probably needs more consideration.
2006-09-28 20:51:43 +00:00
Tom Lane 062421defb Fix a couple other places that need to know about (some) src/port/ files
explicitly.
2006-09-28 14:48:45 +00:00
Tom Lane 85bbd549d8 Oops, forgot that libpq needs extra steps to make use of src/port/ files. 2006-09-27 21:29:17 +00:00
Tom Lane c92f7e258e Replace strncpy with strlcpy in selected places that seem possibly relevant
to performance.  (A wholesale effort to get rid of strncpy should be
undertaken sometime, but not during beta.)  This commit also fixes dynahash.c
to correctly truncate overlength string keys for hashtables, so that its
callers don't have to anymore.
2006-09-27 18:40:10 +00:00
Tom Lane 996b203e62 Add strlcpy() to the set of functions supported by src/port/ when not
available directly on the platform.  Per discussion, this function is
sufficiently widely recognized to be treated as standard.
2006-09-27 16:29:46 +00:00
Tom Lane 1d45168f4b Fix some misuses of strncat(). 2006-09-27 16:19:42 +00:00
Tom Lane 9ba4065312 Remove separate strdup.h header file; it's redundant with port.h. 2006-09-27 15:41:24 +00:00
Alvaro Herrera 4650c4fdb9 Degrade the transaction-id wraparound point message from LOG to DEBUG1, per
discussion.

Patch from Simon Riggs.
2006-09-26 17:21:39 +00:00
Michael Meskes 2c660c61cf Added new files 2006-09-26 09:07:31 +00:00
Michael Meskes 9897e35c56 Added Joachim's changes for MinGW.
Added SET DATESTYLE to one test so the output format is defined.
2006-09-26 07:56:57 +00:00
Tom Lane 0f8fc35a5a Increase default value of effective_cache_size to 128MB, per discussion. 2006-09-25 22:12:24 +00:00
Tom Lane ffae5cc5a6 Add a check to prevent overwriting valid data if smgrnblocks() gives a
wrong answer, as has been seen to occur with a buggy Linux kernel.  Not
really our bug, but it's a simple test in a seldom-used control path,
so might as well have a defense.
2006-09-25 22:01:10 +00:00
Tom Lane c232c8afa8 Fix notice message from DROP FUNCTION IF EXISTS, and improve message
for DROP AGGREGATE IF EXISTS.  Per report from Teodor.
2006-09-25 15:17:34 +00:00
Tom Lane 1d0969041e Fix incorrect mapping of fopen mode 'a' in recently-added code to
make fopen work safely on Windows.  Magnus
2006-09-24 17:19:53 +00:00
Tom Lane f375d5d6f9 Cause pg_regress to invoke the temporary postmaster as 'postgres' not
'postmaster', so as not to depend on the existence of the postmaster
symlink.  Also, implement postmaster-still-alive and postmaster-kill
operations for Windows, per Magnus.
2006-09-24 17:10:18 +00:00
Tom Lane ccfafb4716 Suppress useless warning on pre-XP versions of Windows. Magnus 2006-09-24 16:59:45 +00:00
PostgreSQL Daemon bbed6678f3 Tag us Beta1 2006-09-23 01:33:37 +00:00
Tom Lane d40d34863e Fix pg_locks view to call advisory locks advisory locks, while preserving
backward compatibility for anyone using the old userlock code that's now
on pgfoundry --- locks from that code still show as 'userlock'.
2006-09-22 23:20:14 +00:00
Tom Lane beca984e5f Fix bugs in plpgsql and ecpg caused by assuming that isspace() would only
return true for exactly the characters treated as whitespace by their flex
scanners.  Per report from Victor Snezhko and subsequent investigation.

Also fix a passel of unsafe usages of <ctype.h> functions, that is, ye olde
char-vs-unsigned-char issue.  I won't miss <ctype.h> when we are finally
able to stop using it.
2006-09-22 21:39:58 +00:00
Tom Lane 6d0efd3a09 Surely this temp buffer needn't be static. 2006-09-22 19:51:14 +00:00
Peter Eisentraut cbb7acface Rearrange yes/no prompting code so that the prompts always show the
(possibly (un)translated) letters that are actually expected as input.
Also reject invalid responses instead of silenty taken them as "no".

with help from Bernd Helmle
2006-09-22 18:50:41 +00:00
Peter Eisentraut 90c07a71ca Add units to the default postgresql.conf. For the most part, this should
match what SHOW displays as default value, to make the user experience
uniform.
2006-09-22 17:41:21 +00:00
Tom Lane 9e936693a9 Fix free space map to correctly track the total amount of FSM space needed
even when a single relation requires more than max_fsm_pages pages.  Also,
make VACUUM emit a warning in this case, since it likely means that VACUUM
FULL or other drastic corrective measure is needed.  Per reports from Jeff
Frost and others of unexpected changes in the claimed max_fsm_pages need.
2006-09-21 20:31:22 +00:00
Tom Lane bfd1ffa948 Change patternsel (LIKE/regex selectivity estimation) so that if there
is a large enough histogram, it will use the number of matches in the
histogram to derive a selectivity estimate, rather than the admittedly
pretty bogus heuristics involving examining the pattern contents.  I set
'large enough' at 100, but perhaps we should change that later.  Also
apply the same technique in contrib/ltree's <@ and @> estimator.  Per
discussion with Stefan Kaltenbrunner and Matteo Beccati.
2006-09-20 19:50:21 +00:00
Tom Lane b74c543685 Improve usage of effective_cache_size parameter by assuming that all the
tables in the query compete for cache space, not just the one we are
currently costing an indexscan for.  This seems more realistic, and it
definitely will help in examples recently exhibited by Stefan
Kaltenbrunner.  To get the total size of all the tables involved, we must
tweak the handling of 'append relations' a bit --- formerly we looked up
information about the child tables on-the-fly during set_append_rel_pathlist,
but it needs to be done before we start doing any cost estimation, so
push it into the add_base_rels_to_query scan.
2006-09-19 22:49:53 +00:00
Tom Lane 9b5e108ee9 Fix shared library creation to work properly on AIX. Albe Laurenz 2006-09-19 15:36:08 +00:00
Tom Lane 9b4cda0df6 Add built-in userlock manipulation functions to replace the former
contrib functionality.  Along the way, remove the USER_LOCKS configuration
symbol, since it no longer makes any sense to try to compile that out.
No user documentation yet ... mmoncure has promised to write some.
Thanks to Abhijit Menon-Sen for creating a first draft to work from.
2006-09-18 22:40:40 +00:00
Tom Lane 2ad94d382c Fix problems with column name list of CREATE TABLE AS being applied to
the input query's target list too soon, causing it to affect processing
of ORDER BY in the input query.
2006-09-18 16:04:04 +00:00
Tom Lane 18a963778a Fix CREATE TABLE ... AS VALUES ... to work rather than Assert'ing;
oversight in original implementation of VALUES.  Also fix an oversight
in recent addition of options to CREATE TABLE AS: they weren't getting
propagated if the query was a set-operation such as UNION.
2006-09-18 00:52:14 +00:00
Tom Lane da7540b9d1 Change ANALYZE to take ShareUpdateExclusiveLock not AccessShareLock on
the table being analyzed.  This prevents two ANALYZEs from running
concurrently on the same table and possibly suffering concurrent-update
failures while trying to store their results into pg_statistic.  The
downside is that a database-wide ANALYZE executed within a transaction
block will hold ShareUpdateExclusiveLock on many tables simultaneously,
which could lead to concurrency issues or even deadlock against another
such ANALYZE.  However, this seems a corner case of less importance
than getting unexpected errors from a foreground ANALYZE when autovacuum
elects to analyze the same table concurrently.  Per discussion.
2006-09-17 22:50:31 +00:00
Tom Lane 2e5e856f6b Marginal cleanup in arrangements for ensuring StrategyHintVacuum is cleared
after an error during VACUUM.  We have a PG_TRY block anyway around the only
call sites, so just reset it in the CATCH clause instead of having
AtEOXact_Buffers blindly do it during xact end.  I think the old code was
actively wrong for the case of a failure during ANALYZE inside a
subtransaction --- the flag wouldn't get cleared until main transaction end.
Probably not worth back-patching though.
2006-09-17 22:16:22 +00:00
Tom Lane 5ff4f39c0e Rename the recently-added pg_timezonenames view to pg_timezone_abbrevs,
and create a new view pg_timezone_names that provides information about
the zones known in the 'zic' database.  Magnus Hagander, with some
additional work by Tom Lane.
2006-09-16 20:14:34 +00:00
Tom Lane 7ed5df437d Update timezone data files to release 2006k of the zic database. 2006-09-16 17:21:03 +00:00