Tom Lane [Wed, 7 Jan 2009 22:40:49 +0000 (22:40 +0000)]
Create a third option named "partition" for constraint_exclusion, and make it
the default. This setting enables constraint exclusion checks only for
appendrel members (ie, inheritance children and UNION ALL arms), which are
the cases in which constraint exclusion is most likely to be useful. Avoiding
the overhead for simple queries that are unlikely to benefit should bring
the cost down to the point where this is a reasonable default setting.
Per today's discussion.
Bruce Momjian [Wed, 7 Jan 2009 21:48:15 +0000 (21:48 +0000)]
Have current_query() use ActivePortal->sourceText rather than
debug_query_string; this allows current_query() to be more accurate;
docs updated; per idea from Tom
Tom Lane [Wed, 7 Jan 2009 20:38:56 +0000 (20:38 +0000)]
Insert conditional SPI_push/SPI_pop calls into InputFunctionCall,
OutputFunctionCall, and friends. This allows SPI-using functions to invoke
datatype I/O without concern for the possibility that a SPI-using function
will be called (which could be either the I/O function itself, or a function
used in a domain check constraint). It's a tad ugly, but not nearly as ugly
as what'd be needed to make this work via retail insertion of push/pop
operations in all the PLs.
This reverts my patch of 2007-01-30 that inserted some retail SPI_push/pop
calls into plpgsql; that approach only fixed plpgsql, and not any other PLs.
But the other PLs have the issue too, as illustrated by a recent gripe from
Christian Schröder.
Back-patch to 8.2, which is as far back as this solution will work. It's
also as far back as we need to worry about the domain-constraint case, since
earlier versions did not attempt to check domain constraints within datatype
input. I'm not aware of any old I/O functions that use SPI themselves, so
this should be sufficient for a back-patch.
Tom Lane [Wed, 7 Jan 2009 13:44:37 +0000 (13:44 +0000)]
Fix executor/spi.h to follow our usual conventions for include files, ie,
not include postgres.h nor anything else it doesn't directly need. Add
#includes to calling files as needed to compensate. Per my proposal of
yesterday.
This should be noted as a source code change in the 8.4 release notes,
since it's likely to require changes in add-on modules.
Magnus Hagander [Wed, 7 Jan 2009 13:09:21 +0000 (13:09 +0000)]
Add hba parameter include_realm to krb5, gss and sspi authentication, used
to pass the full username@realm string to the authentication instead of
just the username. This makes it possible to use pg_ident.conf to authenticate
users from multiple realms as different database users.
Magnus Hagander [Wed, 7 Jan 2009 12:38:11 +0000 (12:38 +0000)]
Allow krb_realm (krb5, gssapi and sspi) and krb_server_hostname (krb5 only)
authentication options to be set in pg_hba.conf on a per-line basis, to
override the defaults set in postgresql.conf.
Bruce Momjian [Wed, 7 Jan 2009 04:26:46 +0000 (04:26 +0000)]
Make the log output of 'vxid' between csvlog and stderr/syslog
consistent. Currently, in csvlog, vxid of an auxiliary process isn't
displayed. On the other hand, in stderr/syslog, invalid vxid (-1/0) of
that is displayed.
Tom Lane [Tue, 6 Jan 2009 17:27:06 +0000 (17:27 +0000)]
Remove references to pgsql-ports and pgsql-patches mailing lists from
various documentation, since those lists are now dead/deprecated.
Point to pgsql-bugs and/or pgsql-hackers as appropriate.
Tom Lane [Tue, 6 Jan 2009 16:39:52 +0000 (16:39 +0000)]
Change a couple of ill-advised uses of INFO elog level to WARNINGs; in
particular this allows EmitWarningsOnPlaceholders messages to show up in the
postmaster log by default. Update elog.h comment to make it clearer what INFO
is for, and fix one example in the SGML docs that was misusing it. Per my
gripe of yesterday.
Tom Lane [Tue, 6 Jan 2009 15:51:38 +0000 (15:51 +0000)]
Revert the default toast compression strategy to the former behavior
where there's no limit on the size of datum we'll try to compress.
Other 8.4 tweaks to the behavior remain in place. Per discussion.
Tom Lane [Tue, 6 Jan 2009 15:38:44 +0000 (15:38 +0000)]
Doesn't seem like a good idea to be doing AC_CHECK_SIZEOF(void *) so much
earlier than all the other sizeof checks, and it certainly fails to follow
the order suggested at the file head. Rearrange.
Fix logic in lazy vacuum to decide if it's worth trying to truncate the heap.
If the table was smaller than REL_TRUNCATE_FRACTION (= 16) pages, we always
tried to acquire AccessExclusiveLock on it even if there was no empty pages
at the end.
Report by Simon Riggs. Back-patch all the way to 7.4.
Tom Lane [Tue, 6 Jan 2009 01:23:21 +0000 (01:23 +0000)]
Fix an oversight in the function-default-arguments patch: after adding some
default expressions to a function call, eval_const_expressions must recurse on
those expressions. Else they don't get simplified, and in particular we fail
to insert additional default arguments if any functions needing defaults are
in there. Per report from Rushabh Lathia.
Alvaro Herrera [Mon, 5 Jan 2009 17:14:28 +0000 (17:14 +0000)]
Change the reloptions machinery to use a table-based parser, and provide
a more complete framework for writing custom option processing routines
by user-defined access methods.
Catalog version bumped due to the general API changes, which are going to
affect user-defined "amoptions" routines.
Tom Lane [Mon, 5 Jan 2009 16:54:37 +0000 (16:54 +0000)]
Add a --role option to pg_dump, pg_dumpall, and pg_restore. This allows
performing dumps and restores in accordance with a security policy that
forbids logging in directly as superuser, but instead specifies that you
should log into an admin account and then SET ROLE to the superuser.
In passing, clean up some ugly and mostly-broken code for quoting shell
arguments in pg_dumpall.
Fix for cross-compilation between mingw32 and something else. The choice
of pwd vs. pwd -W is correctly a function of the build system, not the
host system.
Tom Lane [Sun, 4 Jan 2009 18:37:36 +0000 (18:37 +0000)]
Add a pg_encoding_mbcliplen() function that is just like pg_mbcliplen()
except the caller can specify the encoding to work in; this will be needed
for pg_stat_statements. In passing, do some marginal efficiency hacking
and clean up some comments. Also, prevent the single-byte-encoding code
path from fetching one byte past the stated length of the string (this
last is a bug that might need to be back-patched at some point).
Fix embarrassing bug in recent smgr refactoring patch: WAL records should
be written for *non*-temp tables only. Report and test case by Mark
Kirkwood and Simon Riggs.
The actual plpython module appears to need significant updates to support
Python 3.0, though. This change just relieves interested developers from
having to deal with Autoconf.
Tom Lane [Sat, 3 Jan 2009 20:03:08 +0000 (20:03 +0000)]
Allow loadable modules to create PGC_POSTMASTER GUC variables, but only
when loaded via shared_preload_libraries. Needed for support of
pg_stat_statements, or pretty much anything else that wants a GUC to
control size of a shared memory allocation.
Tom Lane [Sat, 3 Jan 2009 17:08:39 +0000 (17:08 +0000)]
Create a "shmem_startup_hook" to be called at the end of shared memory
initialization, to give loadable modules a reasonable place to perform
creation of any shared memory areas they need. This is the logical conclusion
of our previous creation of RequestAddinShmemSpace() and RequestAddinLWLocks().
We don't need an explicit shmem_shutdown_hook, because the existing
on_shmem_exit and on_proc_exit mechanisms serve that need.
Also, adjust SubPostmasterMain so that libraries that got loaded into the
postmaster will be loaded into all child processes, not only regular backends.
This improves consistency with the non-EXEC_BACKEND behavior, and might be
necessary for functionality for some types of add-ons.
Tom Lane [Fri, 2 Jan 2009 20:42:00 +0000 (20:42 +0000)]
Include a pointer to the query's source text in QueryDesc structs. This is
practically free given prior 8.4 changes in plancache and portal management,
and it makes it a lot easier for ExecutorStart/Run/End hooks to get at the
query text. Extracted from Itagaki Takahiro's pg_stat_statements patch,
with minor editorialization.
Magnus Hagander [Fri, 2 Jan 2009 10:33:20 +0000 (10:33 +0000)]
Make it possible to change Kerberos/GSSAPI parameters without restarting
the postmaster. They are only used in backend processes, so it's just
a matter of re-labeling the GUCs.
Tom Lane [Fri, 2 Jan 2009 02:02:10 +0000 (02:02 +0000)]
write_nondefault_variables must take care to write custom_variable_classes
first; otherwise backends reading the file might reject values of custom
variables. Per experimentation with auto_explain.
Tom Lane [Fri, 2 Jan 2009 01:16:02 +0000 (01:16 +0000)]
Tweak guc.c to allow underscores in the names of custom variable classes,
and change auto_explain's custom GUC variables to be named auto_explain.xxx
not just explain.xxx. Per discussion in connection with the
pg_stat_statements patch, it seems like a good idea to have the convention
that custom variable classes are named the same as their defining module.
Committing separately since this should happen regardless of what happens
with pg_stat_statements itself.
Tom Lane [Thu, 1 Jan 2009 17:12:16 +0000 (17:12 +0000)]
Fix an oversight in my patch of a couple weeks ago that ensured a snapshot
is available during datatype input in Bind message processing. I put the
PopActiveSnapshot() or equivalent just before PortalDefineQuery, which is
an unsafe spot for it (in 8.3 and later) because we are carrying a plancache
refcount that hasn't yet been assigned to the portal. Any error thrown there
would result in leaking the refcount. It's not exactly likely that
PopActiveSnapshot would throw an elog, perhaps, but it could happen.
Reorder the code and add another comment warning not to do that.
Tom Lane [Wed, 31 Dec 2008 23:42:56 +0000 (23:42 +0000)]
Throw error if a <window definition> references a window that already has a
frame clause, as appears to be required by the fine print in the SQL spec.
Per discussion with Pavel, not doing so risks user confusion.
Tom Lane [Wed, 31 Dec 2008 02:25:06 +0000 (02:25 +0000)]
Add a WINDOW attribute to CREATE FUNCTION, and teach pg_dump about it,
so that user-defined window functions are possible. For the moment you'll
have to write them in C, for lack of any interface to the WindowObject API
in the available PLs, but it's better than no support at all.
There was some debate about the best syntax for this. I ended up choosing
the "it's an attribute" position --- the other approach will inevitably be
more work, and the likely market for user-defined window functions is
probably too small to justify it.
Tom Lane [Wed, 31 Dec 2008 00:08:39 +0000 (00:08 +0000)]
Add some basic support for window frame clauses to the window-functions
patch. This includes the ability to force the frame to cover the whole
partition, and the ability to make the frame end exactly on the current row
rather than its last ORDER BY peer. Supporting any more of the full SQL
frame-clause syntax will require nontrivial hacking on the window aggregate
code, so it'll have to wait for 8.5 or beyond.
Tom Lane [Tue, 30 Dec 2008 17:11:26 +0000 (17:11 +0000)]
Reduce the last group of parallel regression tests to 19 tests, per failure
on buildfarm member bear. Sync the test order in serial_schedule with that
in parallel_schedule.
Tom Lane [Tue, 30 Dec 2008 03:59:19 +0000 (03:59 +0000)]
Fix oversight in ALTER TABLE ENABLE/DISABLE RULE patch: the new enabled
field needs to be included in equalRuleLocks() comparisons, else updates
will fail to propagate into relcache entries when they have positive
reference count (ie someone is using the relcache entry).
Per report from Alex Hunsaker.
Tom Lane [Mon, 29 Dec 2008 02:58:11 +0000 (02:58 +0000)]
Tighten up a couple of regression test cases that can have platform-dependent
results due to underspecified ordering. Per report from buildfarm member
pika.
Tom Lane [Sat, 27 Dec 2008 17:39:00 +0000 (17:39 +0000)]
Make a couple of small changes to the tuplestore API, for the benefit of the
upcoming window-functions patch. First, tuplestore_trim is now an
exported function that must be explicitly invoked by callers at
appropriate times, rather than something that tuplestore tries to do
behind the scenes. Second, a read pointer that is marked as allowing
backward scan no longer prevents truncation. This means that a read pointer
marked as having BACKWARD but not REWIND capability can only safely read
backwards as far as the oldest other read pointer. (The expected use pattern
for this involves having another read pointer that serves as the truncation
fencepost.)
Don't use OidIsValid to check the return value of transformGenericOptions,
because transformGenericOptions returns an array, not an Oid. I'm not
sure if this fixes the crashes seen in buildfarm, but it should be fixed
anyway.
Tom Lane [Fri, 19 Dec 2008 18:25:20 +0000 (18:25 +0000)]
Add a new column proiswindow to pg_proc. It doesn't actually do anything
useful yet, but I'm tired of re-merging this aspect of the window functions
patch.
Peter Eisentraut [Fri, 19 Dec 2008 16:25:19 +0000 (16:25 +0000)]
SQL/MED catalog manipulation facilities
This doesn't do any remote or external things yet, but it gives modules
like plproxy and dblink a standardized and future-proof system for
managing their connection information.
Tom Lane [Fri, 19 Dec 2008 05:04:35 +0000 (05:04 +0000)]
When we added the ability to have zero-element ARRAY[] constructs by adding an
explicit cast to show the intended array type, we forgot to teach ruleutils.c
to print out such constructs properly. Found by noting bogus output from
recent changes in polymorphism regression test.
Tom Lane [Thu, 18 Dec 2008 19:38:22 +0000 (19:38 +0000)]
Fix oversight in my recent patch to allow ExecMakeFunctionResult to handle
materialize-mode set results. Since it now uses the ReturnSetInfo node
to hold internal state, we need to be sure to set up the node even when
the immediately called function doesn't return set (but does have a set-valued
argument). Per report from Anupama Aherrao.
Tom Lane [Thu, 18 Dec 2008 18:20:35 +0000 (18:20 +0000)]
Code review for function default parameters patch. Fix numerous problems as
per recent discussions. In passing this also fixes a couple of bugs in
the previous variadic-parameters patch.