Commit Graph

29446 Commits

Author SHA1 Message Date
Robert Haas
b13da41eba Fix unsafe loop test, and declare as_ident as bool rather than int. 2010-01-21 18:43:25 +00:00
Robert Haas
d66679672f Add new escaping functions PQescapeLiteral and PQescapeIdentifier.
PQescapeLiteral is similar to PQescapeStringConn, but it relieves the
caller of the need to know how large the output buffer should be, and
it provides the appropriate quoting (in addition to escaping special
characers within the string).  PQescapeIdentifier provides similar
functionality for escaping identifiers.

Per recent discussion with Tom Lane.
2010-01-21 14:58:53 +00:00
Simon Riggs
ed1d3f5ecf Add missing flag reset to ensure subsequent manual cancelation gives correct reason. 2010-01-21 09:30:36 +00:00
Heikki Linnakangas
2d29f5f59a Fix bogus comments. 2010-01-21 08:19:57 +00:00
Itagaki Takahiro
3b992cf590 Adjust psql to use pg_get_triggerdef(pretty=true) to remove extra ()'s
from description of triggers with WHEN clause.

Thanks to Brad T. Sliger for the review.
2010-01-21 06:11:46 +00:00
Simon Riggs
58565d78db Better internal documentation of locking for Hot Standby conflict resolution.
Discuss the reasons for the lock type we hold on ProcArrayLock while deriving
the conflict list. Cover the idea of false positive conflicts and seemingly
strange effects on snapshot derivation.
2010-01-21 00:53:58 +00:00
Tom Lane
a8bf2df829 Well, the systemtap guys moved the goalposts again: with the latest version,
we *must* generate probes.o or the dtrace probes don't work.  Revert our
workaround for their previous bug.  Details at
https://bugzilla.redhat.com/show_bug.cgi?id=557266
2010-01-20 23:12:03 +00:00
Peter Eisentraut
41a4e45957 Add user-specific .pg_service.conf file
This extends the existing pg_service.conf facility to first look for a
service definition file in the user's home directory.
2010-01-20 21:15:21 +00:00
Heikki Linnakangas
e8aae273d4 Fix bogus subdir setting. Again. I must've unfixed it by accident while
moving files around.
2010-01-20 20:34:51 +00:00
Heikki Linnakangas
09b115f706 Write a WAL record whenever we perform an operation without WAL-logging
that would've been WAL-logged if archiving was enabled. If we encounter
such records in archive recovery anyway, we know that some data is
missing from the log. A WARNING is emitted in that case.

Original patch by Fujii Masao, with changes by me.
2010-01-20 19:43:40 +00:00
Heikki Linnakangas
47ce95a7b9 Now that much of walreceiver has been pulled back into the postgres
binary, revert PGDLLIMPORT decoration of global variables. I'm not sure
if there's any real harm from unnecessary PGDLLIMPORTs, but these are all
internal variables that external modules really shouldn't be messing
with. ThisTimeLineID still needs PGDLLIMPORT.
2010-01-20 18:54:27 +00:00
Heikki Linnakangas
b3a1ef53c3 Add missing "!= NULL", for the sake of consistency.
Fujii Masao
2010-01-20 11:58:44 +00:00
Heikki Linnakangas
e31bf1c7b0 Adjust windows makefiles too, now that the walreceiver dynamic module
has been renamed.
2010-01-20 09:30:07 +00:00
Heikki Linnakangas
55d877184e Adjust MSVC build script too, now that the walreceiver dynamic module
has been renamed.
2010-01-20 09:22:43 +00:00
Heikki Linnakangas
32bc08b1d4 Rethink the way walreceiver is linked into the backend. Instead than shoving
walreceiver as whole into a dynamically loaded module, split the
libpq-specific parts of it into dynamically loaded module and keep the rest
in the main backend binary.

Although Tom fixed the Windows compilation problems with the old walreceiver
module already, this is a cleaner division of labour and makes the code
more readable. There's also the prospect of adding new transport methods
as pluggable modules in the future, which this patch makes easier, though for
now the API between libpqwalreceiver and walreceiver process should be
considered private.

The libpq-specific module is now in src/backend/replication/libpqwalreceiver,
and the part linked with postgres binary is in
src/backend/replication/walreceiver.c.
2010-01-20 09:16:24 +00:00
Peter Eisentraut
eb210ce85a Before attempting to create a composite type, check whether a type of that
name already exists, so we'd get an error message about a "type" instead
of about a "relation", because the composite type code shares code with
relation creation.
2010-01-20 05:47:09 +00:00
Andrew Dunstan
60e2fdf092 Fix typo in Mkvcbuild.pl 2010-01-20 04:29:07 +00:00
Andrew Dunstan
3d3616cc2f Build plperl's new Util.xs 2010-01-20 04:14:06 +00:00
Robert Haas
62b5c031f6 Fix doc build, which was broken by PL/perl utility functions patch. 2010-01-20 03:37:10 +00:00
Andrew Dunstan
05672e5045 Add utility functions to PLPerl:
quote_literal, quote_nullable, quote_ident,
    encode_bytea, decode_bytea, looks_like_number,
    encode_array_literal, encode_array_constructor.
Split SPI.xs into two - SPI.xs now contains only SPI functions. Remainder
are in new Util.xs.
Some more code and documentation cleanup along the way, as well as
adding some CVS markers to files missing them.

Original patch from Tim Bunce, with a little editing from me.
2010-01-20 01:08:21 +00:00
Robert Haas
5b13d1ff53 Reformat documentation of libpq escaping functions.
Modify the "Escaping Strings for Inclusion in SQL Commands" section
to use a <variablelist> as the preceding and following sections do,
and merge the "Escaping Binary Strings for Inclusion in SQL Commands"
section into it.

This changes only the formatting of these sections, not the content.
It is intended to lay the groundwork for a follow-on patch to add
some new escaping functions, but it makes sense to commit this first,
for clarity.
2010-01-20 00:42:28 +00:00
Tom Lane
16f2eadfab When doing a parallel restore, we must guard against out-of-range dependency
dump IDs, because the array we're using is sized according to the highest
dump ID actually defined in the archive file.  In a partial dump there could
be references to higher dump IDs that weren't dumped.  Treat these the same
as references to in-range IDs that weren't dumped.  (The whole thing is a
bit scary because the missing objects might have been part of dependency
chains, which we won't know about.  Not much we can do though --- throwing
an error is probably overreaction.)

Also, reject parallel restore with pre-1.8 archive version (made by pre-8.0
pg_dump).  In these old versions the dependency entries are OIDs, not dump
IDs, and we don't have enough information to interpret them.

Per bug #5288 from Jon Erdman.
2010-01-19 18:39:19 +00:00
Tom Lane
85b587c259 Fix thinko in my recent change to put an explicit argisrow field in NullTest:
when the planner splits apart a ROW(...) IS NULL test, the argisrow values
of the component tests have to be determined from the component field types,
not copied from the original NullTest (in which argisrow is surely true).
2010-01-19 16:33:33 +00:00
Magnus Hagander
7e40cdc075 Add pg_stat_reset_shared('bgwriter') to reset the cluster-wide shared
statistics of the bgwriter.

Greg Smith
2010-01-19 14:11:32 +00:00
Tom Lane
4f15699d70 Add pg_table_size() and pg_indexes_size() to provide more user-friendly
wrappers around the pg_relation_size() function.

Bernd Helmle, reviewed by Greg Smith
2010-01-19 05:50:18 +00:00
Tom Lane
309cd7cf18 Add "USING expressions" option to plpgsql's OPEN cursor FOR EXECUTE.
This is the last EXECUTE-like plpgsql statement that was missing
the capability of inserting parameter values via USING.

Pavel Stehule, reviewed by Itagaki Takahiro
2010-01-19 01:35:31 +00:00
Peter Eisentraut
8ab27affea Cast slightly abused enum to int, so that GCC 4.5 won't warn about switch
cases that are not part of the enum's definition.
2010-01-18 22:19:34 +00:00
Tom Lane
a49147af78 Fix an oversight in convert_EXISTS_sublink_to_join: we can't convert an
EXISTS that contains a WITH clause.  This would usually lead to a
"could not find CTE" error later in planning, because the WITH wouldn't
get processed at all.  Noted while playing with an example from Ken Marshall.
2010-01-18 18:17:45 +00:00
Teodor Sigaev
a0a7e63434 Fix incorrect comparison of scan key in GIN. Per report from
Vyacheslav Kalinin <vka@mgcp.com>
2010-01-18 11:50:43 +00:00
Tom Lane
376c6203cc Fix portalmem.c to avoid keeping a dangling pointer to a cached plan list
after it's released its reference count for the cached plan.  There are
code paths that might try to examine the plan list before noticing that
the portal is already in aborted state.  Report and diagnosis by Tatsuo
Ishii, though this isn't exactly his proposed patch.
2010-01-18 02:30:25 +00:00
Tom Lane
04ef404018 Update SET CONSTRAINTS reference page --- it failed to mention EXCLUDE
constraints and was lacking a couple of other interesting details.
2010-01-18 00:32:21 +00:00
Tom Lane
9a915e596f Improve the handling of SET CONSTRAINTS commands by having them search
pg_constraint before searching pg_trigger.  This allows saner handling of
corner cases; in particular we now say "constraint is not deferrable"
rather than "constraint does not exist" when the command is applied to
a constraint that's inherently non-deferrable.  Per a gripe several months
ago from hubert depesz lubaczewski.

To make this work without breaking user-defined constraint triggers,
we have to add entries for them to pg_constraint.  However, in return
we can remove the pgconstrname column from pg_constraint, which represents
a fairly sizable space savings.  I also replaced the tgisconstraint column
with tgisinternal; the old meaning of tgisconstraint can now be had by
testing for nonzero tgconstraint, while there is no other way to get
the old meaning of nonzero tgconstraint, namely that the trigger was
internally generated rather than being user-created.

In passing, fix an old misstatement in the docs and comments, namely that
pg_trigger.tgdeferrable is exactly redundant with pg_constraint.condeferrable.
Actually, we mark RI action triggers as nondeferrable even when they belong to
a nominally deferrable FK constraint.  The SET CONSTRAINTS code now relies on
that instead of hard-coding a list of exception OIDs.
2010-01-17 22:56:23 +00:00
Magnus Hagander
ee3b4188a7 Add include directory for dblink to find fmgroids.h on VS2008 builds. 2010-01-17 13:21:50 +00:00
Magnus Hagander
94fa8301f7 Silence compiler warning, noted by Stefan Kaltenbrunner 2010-01-17 12:11:25 +00:00
Tom Lane
0ae19c11f4 Remove unnecessary, inconsistent flag resets in ProcessInterrupts. 2010-01-17 04:27:54 +00:00
Magnus Hagander
1db098974c Fix spelling error, noticed by Thomas Shinnick 2010-01-16 20:38:54 +00:00
Tom Lane
a6c75be23d Re-order configure tests to reflect the fact that the code generated for
posix_fadvise and other file-related functions can depend on _LARGEFILE_SOURCE
and/or _FILE_OFFSET_BITS.  Per report from Robert Treat.

Back-patch to 8.4.  This has been wrong all along, but we weren't really using
posix_fadvise in anger before, and AC_FUNC_FSEEKO seems to mask the issue well
enough for that function.
2010-01-16 19:50:26 +00:00
Tom Lane
196a6ca5de Fix unportable use of isxdigit() with char (rather than unsigned char)
argument, per warnings from buildfarm member pika.  Also clean up code
formatting a trifle.
2010-01-16 17:39:55 +00:00
Tom Lane
e319e6799a Fix bogus initialization of KnownAssignedXids shared memory state ---
didn't work in EXEC_BACKEND case.
2010-01-16 17:17:26 +00:00
Simon Riggs
8bfd1a8848 Lock database while running drop database in Hot Standby to protect
against concurrent reconnection. Failure during testing showed issue
was possible, even though earlier analysis seemed to indicate it
would not be required. Use LockSharedObjectForSession() before
ResolveRecoveryConflictWithDatabase() and hold lock until end of
processing for that WAL record. Simple approach to avoid introducing
further bugs at this stage of development on an improbable issue.
2010-01-16 14:16:31 +00:00
Magnus Hagander
40b91b3a8d Build the walreceiver library on MSVC as well. 2010-01-16 11:55:38 +00:00
Peter Eisentraut
44e03742d8 Improved printing of Python exceptions in PL/Python
Mimic the Python interpreter's own logic for printing exceptions instead
of just using the straight str() call, so that
you get

    plpy.SPIError

instead of

    <class 'plpy.SPIError'>

and for built-in exceptions merely

    UnicodeEncodeError

Besides looking better this cuts down on the endless version differences
in the regression test expected files.
2010-01-16 11:03:51 +00:00
Simon Riggs
2edc31c439 Message mentions msec when it should be seconds, so use s instead of ms.
Noticed by Andres Freund
2010-01-16 10:13:04 +00:00
Simon Riggs
a8ce974cdd Teach standby conflict resolution to use SIGUSR1
Conflict reason is passed through directly to the backend, so we can
take decisions about the effect of the conflict based upon the local
state. No specific changes, as yet, though this prepares for later work.
CancelVirtualTransaction() sends signals while holding ProcArrayLock.
Introduce errdetail_abort() to give message detail explaining that the
abort was caused by conflict processing. Remove CONFLICT_MODE states
in favour of using PROCSIG_RECOVERY_CONFLICT states directly, for clarity.
2010-01-16 10:05:59 +00:00
Tom Lane
c9dc53be77 Huh, apparently on cygwin we HAVE_SIGPROCMASK, so both variants of
the BlockSig/UnBlockSig declaration have to be PGDLLIMPORT'ified.
Per buildfarm results.
2010-01-16 05:52:29 +00:00
Bruce Momjian
a736540958 Add #include <sys/time.h> for struct timeval definition on BSD/OS. 2010-01-16 01:55:28 +00:00
Tom Lane
47a09eda89 PGDLLIMPORT-ize the remaining variables needed by walreceiver. 2010-01-16 00:04:41 +00:00
Tom Lane
08f8d478eb Do parse analysis of an EXPLAIN's contained statement during the normal
parse analysis phase, rather than at execution time.  This makes parameter
handling work the same as it does in ordinary plannable queries, and in
particular fixes the incompatibility that Pavel pointed out with plpgsql's
new handling of variable references.  plancache.c gets a little bit
grottier, but the alternatives seem worse.
2010-01-15 22:36:35 +00:00
Tom Lane
00b5ccebdd Second try: walreceiver should not be built with -DBUILDING_DLL 2010-01-15 21:43:21 +00:00
Tom Lane
cf7af28068 No, scratch that, it was getting added twice. 2010-01-15 21:06:26 +00:00