aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
* Add a hack so that get_type_io_data() can work from bootstrap.c'sTom Lane2006-08-15
| | | | | | internal TypInfo table in bootstrap mode. This allows array_in and array_out to be used during early bootstrap, which eliminates the former obstacle to giving OUT parameters to built-in functions.
* Add server support for "plugin" libraries that can be used for add-on tasksTom Lane2006-08-15
| | | | | | | | | | | | | | | | | | 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.
* Cause '*' and 'foo.*' notations to mark the referenced RTE(s) asTom Lane2006-08-14
| | | | | | | | | 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.
* Fix oversight in initial implementation of PORTAL_ONE_RETURNING mode: weTom Lane2006-08-14
| | | | | | | | | | 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.
* When executing a list of queries derived from rule expansion,Tom Lane2006-08-14
| | | | | | | | | _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.
* Remove hash_destroy calls in hash_create's failure paths. As noted byTom Lane2006-08-14
| | | | | | | 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.
* Revert (again) GUC patch to return commented fields to their defaultBruce Momjian2006-08-14
| | | | values, due to concern about the patch.
* Fix core dump in duration logging for a V3-protocol Execute messageTom Lane2006-08-13
| | | | | | 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.
* Fix recent guc comment-to-default patch for custom variables.Bruce Momjian2006-08-13
|
* Recommit patch to allow commented GUC variables to return to theirBruce Momjian2006-08-13
| | | | default values.
* Re-apply guc cleanup patch, with memory allocation bugs fixed.Bruce Momjian2006-08-13
|
* Tweak SPI_cursor_open to allow INSERT/UPDATE/DELETE RETURNING; this wasTom Lane2006-08-12
| | | | | | | | 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.
* Remove ancient, obsolete comment.Tom Lane2006-08-12
|
* Back out patch to reorganize guc processing. Was causing regressionBruce Momjian2006-08-12
| | | | failures.
* Back out patch that allowed commented guc variables to return to theirBruce Momjian2006-08-12
| | | | default values. Was causing regression failures.
* Add INSERT/UPDATE/DELETE RETURNING, with basic docs and regression tests.Tom Lane2006-08-12
| | | | | | | | 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
* Set Win32 server-size socket buffer to 32k, for performance reasons.Bruce Momjian2006-08-11
| | | | Yoshiyuki Asaba
* Allow commenting of variables in postgresql.conf to restore them toBruce Momjian2006-08-11
| | | | | | defaults. Zdenek Kotala
* Refactor GUC set_config_option function:Bruce Momjian2006-08-11
| | | | | | | | | | | | | | | | | | 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
* Fix UNION/INTERSECT/EXCEPT so that when two inputs being merged haveTom Lane2006-08-10
| | | | | | | 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.
* Fix display of log duration so it is milliseconds.microseconds "ms".Bruce Momjian2006-08-10
| | | | Greg Sabino Mullane
* Round microseconds on setitimer upwards.Bruce Momjian2006-08-09
|
* On Win32, make minimum setitimer() sleep be 1ms, so sleeps < 1ms aren'tBruce Momjian2006-08-09
| | | | | | rounded down to zero. Backpatch to 8.1.X.
* Fix statement_timeout on Win32 so that it properly treats micro-secondsBruce Momjian2006-08-09
| | | | | | | | as micro-seconds, rather than as 100 microseconds, as it does now. This actually fixes all setitimer calls on Win32, but statement_timeout is the most visible fix. Backpatch to 8.1.X. 8.0 works as documented.
* Formatting improvement.Bruce Momjian2006-08-09
|
* Add a feature for automatic initialization and finalization of dynamicallyTom Lane2006-08-08
| | | | | | | | | loaded libraries: call functions _PG_init() and _PG_fini() if the library defines such symbols. Hence we no longer need to specify an initialization function in preload_libraries: we can assume that the library used the _PG_init() convention, instead. This removes one source of pilot error in use of preloaded libraries. Original patch by Ralf Engelschall, preload_libraries changes by me.
* For protocol-level prepare/bind/execute:Bruce Momjian2006-08-08
| | | | | | | | o print user name for all o print portal name if defined for all o print query for all o reduce log_statement header to single keyword o print bind parameters as DETAIL if text mode
* Put back another improperly-removed #include.Tom Lane2006-08-07
|
* On some platforms, pg_usleep isn't interruptible by signals; fixTom Lane2006-08-07
| | | | | archiver to behave per original coder's expectation on these machines. We already know this everywhere else AFAICT.
* Make recovery from WAL be restartable, by executing a checkpoint-likeTom Lane2006-08-07
| | | | | | | | | | operation every so often. This improves the usefulness of PITR log shipping for hot standby: formerly, if the standby server crashed, it was necessary to restart it from the last base backup and replay all the WAL since then. Now it will only need to reread about the same amount of WAL as the master server would. The behavior might also come in handy during a long PITR replay sequence. Simon Riggs, with some editorialization by Tom Lane.
* Add support for forcing a switch to a new xlog file; cause such a switchTom Lane2006-08-06
| | | | | | | to happen automatically during pg_stop_backup(). Add some functions for interrogating the current xlog insertion point and for easily extracting WAL filenames from the hex WAL locations displayed by pg_stop_backup and friends. Simon Riggs with some editorialization by Tom Lane.
* Use better named loop variable for large loop, rather than 'i'.Bruce Momjian2006-08-06
|
* Fix inheritance_planner() to delete dummy subplans from its Append planTom Lane2006-08-05
| | | | | | | list, when some of the child rels have been excluded by constraint exclusion. This doesn't save a huge amount of time but it'll save some, and it makes the EXPLAIN output look saner. We already did the equivalent thing in set_append_rel_pathlist(), but not here.
* Extend relation_excluded_by_constraints() to check for mutuallyTom Lane2006-08-05
| | | | | | | contradictory WHERE-clauses applied to a relation. This makes the GUC variable constraint_exclusion rather inappropriately named, but I've refrained for the moment from renaming it. Per example from Martin Lesser.
* Teach predicate_refuted_by() how to do proofs involving NOT-clauses.Tom Lane2006-08-05
| | | | | | This doesn't matter too much for ordinary NOTs, since prepqual.c does its best to get rid of those, but it helps with IS NOT TRUE clauses which the rule rewriter likes to insert. Per example from Martin Lesser.
* Fix domain_in() bug exhibited by Darcy Buskermolen. The idea of an EStateTom Lane2006-08-04
| | | | | | | | | | | | | that's shorter-lived than the expression state being evaluated in it really doesn't work :-( --- we end up with fn_extra caches getting deleted while still in use. Rather than abandon the notion of caching expression state across domain_in calls altogether, I chose to make domain_in a bit cozier with ExprContext. All we really need for evaluating variable-free expressions is an ExprContext, not an EState, so I invented the notion of a "standalone" ExprContext. domain_in can prevent resource leakages by doing a ReScanExprContext on this rather than having to free it entirely; so we can make the ExprContext have the same lifespan (and particularly the same per_query memory context) as the expression state structs.
* Improve logging of protocol-level prepared statements.Bruce Momjian2006-08-04
|
* Fix missing 'static' keywords --- some compilers gripe about this.Tom Lane2006-08-04
|
* Teach eval_const_expressions to simplify BooleanTest nodes that haveTom Lane2006-08-04
| | | | | constant input. Seems worth doing because rule rewriter inserts IS NOT TRUE tests into WHERE clauses.
* Cause ALTER TABLE to perform ALTER COLUMN DROP DEFAULT operations duringTom Lane2006-08-03
| | | | | | | | | the DROP pass rather than the ADD_CONSTR pass. On examining the code I think this was just an oversight rather than intentional, and it seems to satisfy the principle of least surprise better than the alternative solution that was discussed. Add an example to the ref page showing how to do ALTER TYPE and update the default in one command. Per gripe from Markus Bertheau that that wasn't possible.
* Fix AfterTriggerExecute() to pass tg_trigtuple and tg_newtuple as NULLsTom Lane2006-08-03
| | | | | rather than pointers to garbage, when calling AFTER STATEMENT triggers. Michael Fuhr
* Add missing pgstat_count_index_scan(), per Andreas Seltenreich.Tom Lane2006-08-03
|
* Move 'ddl' right after 'none' in postgresql.conf. It used to be betweenBruce Momjian2006-08-02
| | | | | 'mod' and 'all', which is not the right order. SGML documentation order was correct. Report from Chander Ganesan.
* Arrange for ValuesScan to keep per-sublist expression eval state in aTom Lane2006-08-02
| | | | | | | temporary context that can be reset when advancing to the next sublist. This is faster and more thorough at recovering space than the previous method; moreover it will do the right thing if something in the sublist tries to register an expression context callback.
* Wups, got the test for contain_vars_of_level-not-needed wrong inTom Lane2006-08-02
| | | | transformInsertStmt: the target table is already in p_rtable at that point.
* Add a HINT per suggestion from Michael Glaesemann. Also, tweak OLD/NEWTom Lane2006-08-02
| | | | | test to avoid expensive contain_vars_of_level() scan in the normal case where we're not inside a rule.
* Add support for multi-row VALUES clauses as part of INSERT statementsJoe Conway2006-08-02
| | | | | | (e.g. "INSERT ... VALUES (...), (...), ...") and elsewhere as allowed by the spec. (e.g. similar to a FROM clause subselect). initdb required. Joe Conway and Tom Lane.
* Add support for loadable modules to allocated shared memory andBruce Momjian2006-08-01
| | | | | | lightweight locks. Marc Munro
* Change the relation_open protocol so that we obtain lock on a relationTom Lane2006-07-31
| | | | | | | | | | | | (table or index) before trying to open its relcache entry. This fixes race conditions in which someone else commits a change to the relation's catalog entries while we are in process of doing relcache load. Problems of that ilk have been reported sporadically for years, but it was not really practical to fix until recently --- for instance, the recent addition of WAL-log support for in-place updates helped. Along the way, remove pg_am.amconcurrent: all AMs are now expected to support concurrent update.
* Change the bootstrap sequence so that toast tables for system catalogs areTom Lane2006-07-31
| | | | | | | | | | created in the bootstrap phase proper, rather than added after-the-fact by initdb. This is cleaner than before because it allows us to retire the undocumented ALTER TABLE ... CREATE TOAST TABLE command, but the real reason I'm doing it is so that toast tables of shared catalogs will now have predetermined OIDs. This will allow a reasonably clean solution to the problem of locking tables before we load their relcache entries, to appear in a forthcoming patch.