Commit Graph

30396 Commits

Author SHA1 Message Date
Tom Lane 99848ed7cb Add missing handling of PlannedStmt.transientPlan in copyfuncs/outfuncs.
_outPlannedStmt is only debug support, so the omission there was not very
serious, but the omission in _copyPlannedStmt is a real bug.  The consequence
would be that a copied plan tree would never be marked as a transient plan,
so that we would forget we ought to replan it after some not-yet-ready index
becomes ready for use.  This might explain some past complaints about indexes
created with CREATE INDEX CONCURRENTLY not being used right away.  Problem
spotted by Yeb Havinga.

Back-patch to 8.3, where the field was added.
2010-08-18 15:21:54 +00:00
Heikki Linnakangas ef71375346 Coerce 'unknown' type parameters to the right type in the fixed-params
parse_analyze() function. That case occurs e.g with PL/pgSQL
EXECUTE ... USING 'stringconstant'.

The coercion with a CoerceViaIO node. The result is similar to the coercion
via input function performed for unknown constants in coerce_type(),
except that this happens at runtime.

Backpatch to 9.0. The issue is present in 8.4 as well, but the coerce param
hook infrastructure this patch relies on was introduced in 9.0. Given the
lack of user reports and harmlessness of the bug, it's not worth attempting
a different fix just for 8.4.
2010-08-18 12:20:15 +00:00
Michael Meskes 9a8d15bd41 Applied Zoltan's patch to fix a few memleaks in ecpg's pgtypeslib. 2010-08-17 09:36:05 +00:00
Peter Eisentraut 7b243aa666 Revert: looks like Binary Large OBject[sic] wasn't a misspelling 2010-08-17 04:47:04 +00:00
Peter Eisentraut 5194b9d049 Spell and markup checking 2010-08-17 04:37:21 +00:00
Tom Lane ee0e525bfc Arrange to fsync the contents of lockfiles (both postmaster.pid and the
socket lockfile) when writing them.  The lack of an fsync here may well
explain two different reports we've seen of corrupted lockfile contents,
which doesn't particularly bother the running server but can prevent a
new server from starting if the old one crashes.  Per suggestion from
Alvaro.

Back-patch to all supported versions.
2010-08-16 17:32:46 +00:00
Robert Haas 66b14030e8 Make LockDatabaseObject() AcceptInvalidationMessages().
This is appropriate for the same reasons we already do it in
LockSharedObject(): things might have changed while we were waiting
for the lock.  There doesn't seem to be a live bug here at the moment,
but that's mostly because it isn't currently used for very much.
2010-08-16 02:02:28 +00:00
Tom Lane b49c879015 Fix psql's copy of utf2ucs() to match the backend's copy exactly;
in particular, propagate a fix in the test to see whether a UTF8 character has
length 4 bytes.  This is likely of little real-world consequence because
5-or-more-byte UTF8 sequences are not supported by Postgres nor seen anywhere
in the wild, but still we may as well get it right.  Problem found by Joseph
Adams.

Bug is aboriginal, so back-patch all the way.
2010-08-16 00:06:18 +00:00
Tom Lane f0f46ed66a Assorted improvements to backup/restore documentation, per Thom Brown. 2010-08-15 23:04:49 +00:00
Tom Lane 521c26ebf7 Clarify bit numbering in get_bit/set_bit etc. Per gripe from
Boszormenyi Zoltan.
2010-08-15 21:26:36 +00:00
Tom Lane d915a275c1 Improve pgarchivecleanup documentation, per comments from Satoshi Nagayasu. 2010-08-15 20:20:30 +00:00
Tom Lane 82954d49e4 Avoid unnecessary use of TPS acronym.
Robert Haas, per gripe from Erik Rijkers
2010-08-15 19:46:24 +00:00
Robert Haas 4730a54083 Add link and additional index reference to pgcrypto.
Kevin Grittner, with markup adjustments.
2010-08-15 01:57:03 +00:00
Tom Lane 22d9ddbb35 Fix planner to make a reasonable assumption about the amount of memory space
used by array_agg(), string_agg(), and similar aggregate functions that use
"internal" as their transition datatype.  The previous coding thought this
took *no* extra space, since "internal" is pass-by-value; but actually these
aggregates typically consume a great deal of space.  Per bug #5608 from
Itagaki Takahiro, and fix suggestion from Hitoshi Harada.

Back-patch to 8.4, where array_agg was introduced.
2010-08-14 15:47:13 +00:00
Tom Lane 41b810fe32 Fix \ef and \sf to not fail on functions with nonnull probin.
Update comment about them in pg_get_functiondef.
2010-08-14 14:20:35 +00:00
Tom Lane b6e06942c6 Add a \sf (show function) command to psql, for those times when you need to
look at a function but don't wish to fire up an editor.

Pavel Stehule, reviewed by Jan Urbanski
2010-08-14 13:59:49 +00:00
Tom Lane 946b078044 MyBackendId now needs to be PGDLLIMPORT, so that contrib modules can
access it on Windows.  Per buildfarm.
2010-08-14 13:37:21 +00:00
Robert Haas 27f145a40e Further dtrace adjustments for the backend-IDs-in-relpath patch.
Update the documentation, and back out a few ill-considered changes
whose folly I failed to realize for failure to read the documentation.
2010-08-14 02:22:10 +00:00
Robert Haas 105d4c5ffe Fix assorted dtrace breakage caused by patch to include backend IDs
in temp relpaths.

Per buildfarm.
2010-08-13 22:54:17 +00:00
Tom Lane 36ba263d8f Clean up failure to use ClosePager() where appropriate in help.c.
Also prevent possible repeat opening of pager in helpSQL().
2010-08-13 20:56:18 +00:00
Robert Haas debcec7dc3 Include the backend ID in the relpath of temporary relations.
This allows us to reliably remove all leftover temporary relation
files on cluster startup without reference to system catalogs or WAL;
therefore, we no longer include temporary relations in XLOG_XACT_COMMIT
and XLOG_XACT_ABORT WAL records.

Since these changes require including a backend ID in each
SharedInvalSmgrMsg, the size of the SharedInvalidationMessage.id
field has been reduced from two bytes to one, and the maximum number
of connections has been reduced from INT_MAX / 4 to 2^23-1.  It would
be possible to remove these restrictions by increasing the size of
SharedInvalidationMessage by 4 bytes, but right now that doesn't seem
like a good trade-off.

Review by Jaime Casanova and Tom Lane.
2010-08-13 20:10:54 +00:00
Tom Lane 3f9479ef3f Minor #include cleanup.
I just noticed that libpq's pqsignal.h was violating our general inclusion
style guidelines by explicitly including postgres_fe.h.  Remove that, and
put it in pqsignal.c where it belongs.
2010-08-13 20:04:33 +00:00
Tom Lane a0b7b717a4 Add xml_is_well_formed, xml_is_well_formed_document, xml_is_well_formed_content
functions to the core XML code.  Per discussion, the former depends on
XMLOPTION while the others do not.  These supersede a version previously
offered by contrib/xml2.

Mike Fowler, reviewed by Pavel Stehule
2010-08-13 18:36:26 +00:00
Tom Lane 2a7349f030 Fix Assert failure in PushOverrideSearchPath when trying to restore a search
path that specifies useTemp, but there is no active temp schema in the
current session.  (This can happen if the path was saved during a transaction
that created a temp schema and was later rolled back.)  For existing callers
it's sufficient to ignore the useTemp flag in this case, though we might
later want to offer an option to create a fresh temp schema.  So far as I can
tell this is just an Assert failure: in a non-assert build, the code would
push a zero onto the new search path, which is useless but not very harmful.
Per bug report from Heikki.

Back-patch to 8.3; prior versions don't have this code.
2010-08-13 16:27:11 +00:00
Robert Haas 95ef7cd40d Make RecordTransactionCommit() respect wal_level.
Since the only purpose of WAL-loggin SharedInvalidationMessages is to support
Hot Standby operation, they needn't be included when wal_level < hot_standby.

Back-patch to 9.0.

Review by Heikki Linnakanagas and Fujii Masao.
2010-08-13 15:42:21 +00:00
Tom Lane e4155c8483 Fix pg_restore to complain if any arguments remain after parsing the switches
and input file name, per bug #5617 from Leo Shklovskii.  Rearrange the
corresponding code in pg_dump and pg_dumpall so that all three programs
handle this in a consistent, straightforward fashion.

Back-patch to 9.0, but no further.  Although this is certainly a bug, it's
possible that people have scripts that will be broken by the added error
check, so it seems better not to change the behavior in stable branches.
2010-08-13 14:38:04 +00:00
Robert Haas 9b0a86861a Reorder docs on lexical structure slightly for clarity.
Thom Brown
2010-08-13 01:12:38 +00:00
Robert Haas 30c22eb8fc Correct sundry errors in Hot Standby-related comments.
Fujii Masao
2010-08-12 23:24:54 +00:00
Tom Lane 00f76dbffa Get rid of a bunch of dubious error handling code in pgbench by just erroring
out immediately on any out-of-memory condition.  It's rather pointless to
imagine that pgbench will be able to continue usefully after a malloc
failure, and in any case there were a number of unchecked mallocs.
2010-08-12 21:10:59 +00:00
Tom Lane 5a4e19abe6 Add the ability to compute per-statement latencies (ie, average execution
times) to pgbench.

Florian Pflug, reviewed by Greg Smith
2010-08-12 20:39:39 +00:00
Bruce Momjian 47eeb5e662 Back out syntax case changes --- seems they were intentional. 2010-08-12 02:03:58 +00:00
Tom Lane 568e709372 Extend psql's \e and \ef commands so that a line number can be specified,
and the editor's cursor will be initially placed on that line.  In \e the
lines are counted with respect to the query buffer, while in \ef they are
counted with line 1 = first line of function body.  These choices are useful
for positioning the cursor on the line of a previously-reported error.

To avoid assumptions about what switch the user's editor takes for this
purpose, invent a new psql variable EDITOR_LINENUMBER_SWITCH with (at
present) no default value.

One incompatibility from previous behavior is that "\e 1234" will now
take "1234" as a line number not a file name.  There are at least two
ways to select a numerically-named file if you really want to.

Pavel Stehule, reviewed by Jan Urbanski, with further editing by Robert Haas
and Tom Lane
2010-08-12 00:40:59 +00:00
Bruce Momjian a4a3ef344e Properly lowercase identifiers, uppercase keywords, in doc examples 2010-08-11 21:48:51 +00:00
Heikki Linnakangas c9ae257e23 The sanity check added to array_recv() wa a bit too tight; we must
continue to accept an empty array with dimension information. array_send()
can output such arrays.

Per report from Vladimir Shakhov.
2010-08-11 19:12:27 +00:00
Robert Haas 741396936e Fix one more incorrect errno definition in the ECPG manual.
Again, back-patch all the way to 7.4.
2010-08-11 19:03:16 +00:00
Robert Haas ffcd7a1167 Fix incorrect errno definitions in ECPG manual.
ecpgerrno.h hasn't materially changed since PostgreSQL 7.4, so this has
been wrong for a very long time.  Back-patch all the way.

Satoshi Nagayasu
2010-08-11 18:52:02 +00:00
Tom Lane c04fd1b9db Remove the arbitrary (and undocumented) limit on the number of parameter=value
pairs that can be handled by xslt_process().

There is much else to do here, but this patch seems useful in its own right
for as long as this code survives.

Pavel Stehule, reviewed by Mike Fowler
2010-08-10 23:02:00 +00:00
Tom Lane 33f43725fb Add three-parameter forms of array_to_string and string_to_array, to allow
better handling of NULL elements within the arrays.  The third parameter
is a string that should be used to represent a NULL element, or should
be translated into a NULL element, respectively.  If the third parameter
is NULL it behaves the same as the two-parameter form.

There are two incompatible changes in the behavior of the two-parameter form
of string_to_array.  First, it will return an empty (zero-element) array
rather than NULL when the input string is of zero length.  Second, if the
field separator is NULL, the function splits the string into individual
characters, rather than returning NULL as before.  These two changes make
this form fully compatible with the behavior of the new three-parameter form.

Pavel Stehule, reviewed by Brendan Jurd
2010-08-10 21:51:00 +00:00
Peter Eisentraut 5148a04636 Add some links to tables 2010-08-10 20:42:01 +00:00
Peter Eisentraut 6d5afc2003 <example> is a floating element, so it's use is inappropriate when the
surrounding text refers to the example inline.
2010-08-10 20:41:27 +00:00
Robert Haas 20bf5e03e5 Use double quotes rather than double quotes for libpq target anchors.
Per observation from Tom Lane that the previous patch to these files was
not consistent with what is done elsewhere in the docs.
2010-08-10 02:56:46 +00:00
Tom Lane 46af71ff7e Fix incorrect logic in plpgsql for cleanup after evaluation of non-simple
expressions.  We need to deal with this when handling subscripts in an array
assignment, and also when catching an exception.  In an Assert-enabled build
these omissions led to Assert failures, but I think in a normal build the
only consequence would be short-term memory leakage; which may explain why
this wasn't reported from the field long ago.

Back-patch to all supported versions.  7.4 doesn't have exceptions, but
otherwise these bugs go all the way back.

Heikki Linnakangas and Tom Lane
2010-08-09 18:50:11 +00:00
Robert Haas 477319829c Provide stable target anchors for libpq functions.
Daniele Varrazzo
2010-08-09 12:00:24 +00:00
Tom Lane 2e35d4f35c Modify the handling of RAISE without parameters so that the error it throws
can be caught in the same places that could catch an ordinary RAISE ERROR
in the same location.  The previous coding insisted on throwing the error
from the block containing the active exception handler; which is arguably
more surprising, and definitely unlike Oracle's behavior.

Not back-patching, since this is a pretty obscure corner case.  The risk
of breaking somebody's code in a minor version update seems to outweigh
any possible benefit.

Piyush Newe, reviewed by David Fetter
2010-08-09 02:25:07 +00:00
Tom Lane 4dfc457854 Add an xpath_exists() function. This is equivalent to XMLEXISTS except that
it offers support for namespace mapping.

Mike Fowler, reviewed by David Fetter
2010-08-08 19:15:27 +00:00
Tom Lane 46aa77c7bd Add stats functions and views to provide access to a transaction's own
statistics counts.  These numbers are being accumulated but haven't yet been
transmitted to the collector (and won't be, until the transaction ends).
For some purposes, though, it's handy to be able to look at them.

Joel Jacobson, reviewed by Itagaki Takahiro
2010-08-08 16:27:06 +00:00
Bruce Momjian 83f5491c63 Fix 9.0 release notes vacuum mention, not -> now
Peter Fokkinga
2010-08-07 13:07:06 +00:00
Tom Lane e49ae8d3bc Recognize functional dependency on primary keys. This allows a table's
other columns to be referenced without listing them in GROUP BY, so long as
the primary key column(s) are listed in GROUP BY.

Eventually we should also allow functional dependency on a UNIQUE constraint
when the columns are marked NOT NULL, but that has to wait until NOT NULL
constraints are represented in pg_constraint, because we need to have
pg_constraint OIDs for all the conditions needed to ensure functional
dependency.

Peter Eisentraut, reviewed by Alex Hunsaker and Tom Lane
2010-08-07 02:44:09 +00:00
Peter Eisentraut ce6ce1a09d Fix indexterm spelling 2010-08-06 20:09:03 +00:00
Tom Lane 4672093a8e Let's put that </link> in a sane place ... 2010-08-06 19:13:13 +00:00