Commit Graph

23251 Commits

Author SHA1 Message Date
Tom Lane
abc3120e9b Add server support for "plugin" libraries that can be used for add-on tasks
such as debugging and performance measurement.  This consists of two features:
a table of "rendezvous variables" that allows separately-loaded shared
libraries to communicate, and a new GUC setting "local_preload_libraries"
that allows libraries to be loaded into specific sessions without explicit
cooperation from the client application.  To make local_preload_libraries
as flexible as possible, we do not restrict its use to superusers; instead,
it is restricted to load only libraries stored in $libdir/plugins/.  The
existing LOAD command has also been modified to allow non-superusers to
LOAD libraries stored in this directory.

This patch also renames the existing GUC variable preload_libraries to
shared_preload_libraries (after a suggestion by Simon Riggs) and does some
code refactoring in dfmgr.c to improve clarity.

Korry Douglas, with a little help from Tom Lane.
2006-08-15 18:26:59 +00:00
Tatsuo Ishii
66541c5aa5 Fix pgbench to handle empty lines in script files as documented.
patches contributed by Itagaki Takahiro.
2006-08-15 13:05:30 +00:00
Michael Meskes
2834fb6a83 Fixed a typo and made two mallocs Coverity friendly. 2006-08-15 12:46:25 +00:00
Michael Meskes
4a445f5d97 Sorry, forgot the new files. 2006-08-15 06:48:24 +00:00
Michael Meskes
b30da7ba5f Added lots of SoC stuff made by Joachim.
Fixed broken newline on Windows.
Fixed a nasty buffer underrun that only occured when using Informix
no_indicator NULL setting on timestamps and intervals.
2006-08-15 06:40:20 +00:00
Tom Lane
58538a0ffc Cause '*' and 'foo.*' notations to mark the referenced RTE(s) as
requiring read permissions.  Up till now there was no possible case
in which the RTEs wouldn't already have ACL_SELECT set ... but now that
you can say something like 'INSERT INTO foo ... RETURNING *' this is
an essential step.  With this commit, a RETURNING clause adds the
requirement for SELECT permissions on the target table if and only if
the clause actually reads the value of at least one target-table column.
2006-08-14 23:39:32 +00:00
Tom Lane
65b2f93b58 Fix oversight in initial implementation of PORTAL_ONE_RETURNING mode: we
cannot assume that there's exactly one Query in the Portal, as we can for
ONE_SELECT mode, because non-SELECT queries might have extra queries added
during rule rewrites.  Fix things up so that we'll use ONE_RETURNING mode
when a Portal contains one primary (canSetTag) query and that query has
a RETURNING list.  This appears to be a second showstopper reason for running
the Portal to completion before we start to hand anything back --- we want
to be sure that the rule-added queries get run too.
2006-08-14 22:57:15 +00:00
Tom Lane
3d1e01caa4 Support INSERT/UPDATE/DELETE RETURNING in plpgsql, with rowcount checking
as per yesterday's proposal.  Also make things a tad more orthogonal by
adding the recent STRICT addition to EXECUTE INTO.
Jonah Harris and Tom Lane
2006-08-14 21:14:42 +00:00
Tom Lane
29fa051316 When executing a list of queries derived from rule expansion,
_SPI_execute_plan's return code should reflect the type of the query
that is marked canSetTag, not necessarily the last one in the list.

This is arguably a bug fix, but I'm hesitant to back-patch it because
it's the sort of subtle change that might break someone's code, and it's
best not to do that kind of thing in point releases.
2006-08-14 13:40:18 +00:00
Tom Lane
c859294ca2 Remove hash_destroy calls in hash_create's failure paths. As noted by
a Coverity warning, these are risky since the hashtable isn't necessarily
fully set up yet.  They're unnecessary anyway: a deletable hashtable
should be in a memory context that will be cleared following elog(ERROR).
Per report from Martijn van Oosterhout.
2006-08-14 12:39:55 +00:00
Bruce Momjian
f058451871 Revert (again) GUC patch to return commented fields to their default
values, due to concern about the patch.
2006-08-14 02:27:27 +00:00
Tom Lane
3648147401 Get rid of "lookahead" functionality in plpgsql's yylex() function,
and instead make the grammar production for the RETURN statement do the
heavy lifting.  The lookahead idea was copied from the main parser, but
it does not work in plpgsql's parser because here gram.y looks explicitly
at the scanner's yytext variable, which will be out of sync after a
failed lookahead step.  A minimal example is

create or replace function foo() returns void language plpgsql as '
begin
  perform return foo bar;
end';

which can be seen by testing to deliver "foo foo bar" to the main parser
instead of the expected "return foo bar".  This isn't a huge bug since
RETURN is not found in the main grammar, but it could bite someone who
tried to use "return" as an identifier.

Back-patch to 8.1.  Bug exists further back, but HEAD patch doesn't apply
cleanly, and given the lack of field complaints it doesn't seem worth
the effort to develop adjusted patches.
2006-08-14 00:46:53 +00:00
Tom Lane
1b67e0cc52 Fix core dump in duration logging for a V3-protocol Execute message
when what's being executed is a COMMIT or ROLLBACK.  Per report from
Sergey Koposov.  Backpatch to 8.1; 8.0 and before don't have the bug
due to lack of any logging at all here.
2006-08-13 22:18:08 +00:00
Tom Lane
b475d25f6c Cause psql to report both the returned data and the command status tag
for INSERT/UPDATE/DELETE RETURNING.  Per discussion.
2006-08-13 21:10:04 +00:00
Tom Lane
fbc7f59bfe If test postmaster fails to start within 60 seconds, try to kill -9 it
so that it won't interfere with later trials.  Per recent buildfarm
experience.  Anyone know how to do this on Windows?
2006-08-13 20:39:07 +00:00
Tom Lane
a1dad99c63 Extend 'guc' regression test to check manipulations of datestyle as
well as vacuum_cost_delay.  Since datestyle is a string variable,
this exercises memory allocation issues that might not appear when
modifying an integer GUC variable.  Also, we can observe the side
effects of changing datestyle to check that assign hooks are called
at the right times.
2006-08-13 19:31:06 +00:00
Tom Lane
d2ccc707af Original coding of 'returning' regression test inadvertently chose a
nonunique join value, leading to plan-choice-dependent results ... and
it seems some platforms will choose a different plan.  Tweak the test
so that it has well-defined results.  Per report from Olivier Prenant.
2006-08-13 17:58:49 +00:00
Bruce Momjian
12cf0fdf19 Back out plperl OUT hash/array parameter patch, again. 2006-08-13 17:31:10 +00:00
Bruce Momjian
e0d6630bd8 Fix recent guc comment-to-default patch for custom variables. 2006-08-13 15:37:02 +00:00
Michael Meskes
ab6aa40b64 Applied patch for VPATH builds by Alvaro Herrera <alvherre@commandprompt.com>
Merged dyntest.pgc and dyntest2.pgc.
Hopefully fixed the last Coverity reports (finally)
2006-08-13 10:18:31 +00:00
Bruce Momjian
b5633943cb Re-apply plperl patch that allows OUT parameters to be placed into Perl
hash and array variables.  (regression output updated)
2006-08-13 02:37:11 +00:00
Bruce Momjian
f09fb71af9 Recommit patch to allow commented GUC variables to return to their
default values.
2006-08-13 02:22:24 +00:00
Bruce Momjian
e7da38bf31 Re-apply guc cleanup patch, with memory allocation bugs fixed. 2006-08-13 01:30:17 +00:00
Tom Lane
3f8db37c2f Tweak SPI_cursor_open to allow INSERT/UPDATE/DELETE RETURNING; this was
merely a matter of fixing the error check, since the underlying Portal
infrastructure already handles it.  This in turn allows these statements
to be used in some existing plpgsql and plperl contexts, such as a
plpgsql FOR loop.  Also, do some marginal code cleanup in places that
were being sloppy about distinguishing SELECT from SELECT INTO.
2006-08-12 20:05:56 +00:00
Tom Lane
883f4b42d7 Remove ancient, obsolete comment. 2006-08-12 18:58:54 +00:00
Bruce Momjian
4178de3d43 Back out patch for plperl to handle OUT paramaters into arrays and
hashes.  Was causing regression failures.
2006-08-12 04:16:45 +00:00
Bruce Momjian
fb55af227e Back out patch to reorganize guc processing. Was causing regression
failures.
2006-08-12 04:12:41 +00:00
Bruce Momjian
2d2eec6ef2 Back out patch that allowed commented guc variables to return to their
default values.  Was causing regression failures.
2006-08-12 04:11:50 +00:00
Bruce Momjian
510aad39d0 Done:
< 	o Allow INSERT/UPDATE ... RETURNING new.col or old.col
<
< 	  This is useful for returning the auto-generated key for an INSERT.
< 	  One complication is how to handle rules that run as part of
< 	  the insert.
< 	  http://archives.postgresql.org/pgsql-patches/2005-07/msg00568.php
> 	o -Allow INSERT/UPDATE ... RETURNING new.col or old.col
2006-08-12 03:50:27 +00:00
Bruce Momjian
aeb056f610 Fix wording, per Neil. 2006-08-12 03:48:32 +00:00
Tom Lane
7a3e30e608 Add INSERT/UPDATE/DELETE RETURNING, with basic docs and regression tests.
plpgsql support to come later.  Along the way, convert execMain's
SELECT INTO support into a DestReceiver, in order to eliminate some ugly
special cases.

Jonah Harris and Tom Lane
2006-08-12 02:52:06 +00:00
Bruce Momjian
5c9e9c0c42 Set Win32 server-size socket buffer to 32k, for performance reasons.
Yoshiyuki Asaba
2006-08-11 20:44:20 +00:00
Bruce Momjian
99c2b8b8e3 Done:
< 	o %Allow commenting of variables in postgresql.conf to restore them
> 	o -Allow commenting of variables in postgresql.conf to restore them
2006-08-11 20:17:26 +00:00
Bruce Momjian
12e4660574 Revert undesired FAQ_DEV change. 2006-08-11 20:16:50 +00:00
Bruce Momjian
262a7bc14c Allow commenting of variables in postgresql.conf to restore them to
defaults.

Zdenek Kotala
2006-08-11 20:15:16 +00:00
Bruce Momjian
f91ddb768b Refactor GUC set_config_option function:
The main reason for refactoring was that set_config_option() was too
overloaded function and its behavior did not consistent. Old version of
set_config_function hides some messages. For example if you type:

tcp_port = 5432.1

then old implementation ignore this error without any message to log
file in the signal context (configuration reload). Main problem was that
semantic analysis of postgresql.conf is not perform in the
ProcessConfigFile function, but in the set_config_options *after*
context check. This skipped check for variables with PG_POSTMASTER
context. There was request from Joachim Wieland to add more messages
about ignored changes in the config file as well.

Zdenek Kotala
2006-08-11 20:08:28 +00:00
Bruce Momjian
c07fbcf577 plperl:
Allow conversion from perl to postgresql array in OUT parameters. Second,
allow hash form output from procedures with one OUT argument.

Pavel Stehule
2006-08-11 19:42:35 +00:00
Bruce Momjian
33bf73a79a Make the psql line counter 64-bit so it can handle files > 4gig lines.
David Fetter
2006-08-11 19:20:59 +00:00
Bruce Momjian
6932048b9b Add Neil's presentation to FAQ_DEV. 2006-08-11 19:18:59 +00:00
Alvaro Herrera
5c83b510be Fix typo. 2006-08-11 18:51:50 +00:00
Bruce Momjian
0d5877ab0c Update for company URL.
Ian Barwick
2006-08-11 18:47:57 +00:00
Bruce Momjian
3638eff501 Add URLs
< * Allow encoding on a per-column basis
> * Allow encoding on a per-column basis optionally using the ICU library:
>   http://archives.postgresql.org/pgsql-patches/2005-08/msg00309.php
>   http://archives.postgresql.org/pgsql-patches/2006-03/msg00233.php
2006-08-11 15:53:39 +00:00
Tom Lane
0ee26100b6 Fix UNION/INTERSECT/EXCEPT so that when two inputs being merged have
same data type and same typmod, we show that typmod as the output
typmod, rather than generic -1.  This responds to several complaints
over the past few years about UNIONs unexpectedly dropping length or
precision info.
2006-08-10 02:36:29 +00:00
Bruce Momjian
e860e746e1 Return inline to win32.h because code was OK, but keep additional
comment.  8.1.X is not affected by this commit.
2006-08-10 01:41:29 +00:00
Bruce Momjian
3929b6e9f6 Move "#define inline __inline" from port/win32.h to c.h because Win32
interface builds like libpq need it.

Backpatch addition to 8.1.X.
2006-08-10 01:35:21 +00:00
Bruce Momjian
a4f14fd109 Fix display of log duration so it is milliseconds.microseconds "ms".
Greg Sabino Mullane
2006-08-10 00:44:01 +00:00
Tom Lane
0bf9d3a59e Fix inadequate makefile-fu in ecpg regression tests. I think this
will fix current platypus build failure.
2006-08-09 22:48:17 +00:00
Bruce Momjian
6a7d3d093e Round microseconds on setitimer upwards. 2006-08-09 21:18:13 +00:00
Bruce Momjian
0553a0507c On Win32, make minimum setitimer() sleep be 1ms, so sleeps < 1ms aren't
rounded down to zero.

Backpatch to 8.1.X.
2006-08-09 20:40:56 +00:00
Bruce Momjian
64214a2f01 Add URL for typmod:
>   http://archives.postgresql.org/pgsql-hackers/2006-08/msg00149.php
2006-08-09 18:10:34 +00:00