aboutsummaryrefslogtreecommitdiff
path: root/src/backend
Commit message (Collapse)AuthorAge
...
* Add client_hostname field to pg_stat_activity.Robert Haas2011-02-17
| | | | Peter Eisentraut, reviewed by Steve Singer, Alvaro Herrera, and me.
* Prevent possible compiler warnings.Robert Haas2011-02-17
| | | | | Simon Riggs reports that rnode.dbNode and rnode.spcNode were generating unused variable warnings on gcc 4.4.3 with CFLAGS=-O1
* Add some words of caution to elog.c.Robert Haas2011-02-17
| | | | Stephen Frost, somewhat rewritten by me
* Fix blatantly uninitialized variable in recent commit.Tom Lane2011-02-16
| | | | Doesn't anybody around here pay attention to compiler warnings?
* Fix bogus test for hypothetical indexes in get_actual_variable_range().Tom Lane2011-02-16
| | | | | | | | | | | That function was supposing that indexoid == 0 for a hypothetical index, but that is not likely to be true in any non-toy implementation of an index adviser, since assigning a fake OID is the only way to know at EXPLAIN time which hypothetical index got selected. Fix by adding a flag to IndexOptInfo to mark hypothetical indexes. Back-patch to 9.0 where get_actual_variable_range() was added. Gurjeet Singh
* Add backwards-compatible declarations of some core GIN support functions.Tom Lane2011-02-16
| | | | | | | | | These are needed to support reloading dumps of 9.0 installations containing contrib/intarray or contrib/tsearch2. Since not only regular dump/reload but binary upgrade would fail, it seems worth the trouble to carry these stubs for awhile. Note that the contrib opclasses referencing these functions will still work fine, since GIN doesn't actually pay any attention to the declared signature of a support function.
* Hot Standby feedback for avoidance of cleanup conflicts on standby.Simon Riggs2011-02-16
| | | | | | | | | | | | | Standby optionally sends back information about oldestXmin of queries which is then checked and applied to the WALSender's proc->xmin. GetOldestXmin() is modified slightly to agree with GetSnapshotData(), so that all backends on primary include WALSender within their snapshots. Note this does nothing to change the snapshot xmin on either master or standby. Feedback piggybacks on the standby reply message. vacuum_defer_cleanup_age is no longer used on standby, though parameter still exists on primary, since some use cases still exist. Simon Riggs, review comments from Fujii Masao, Heikki Linnakangas, Robert Haas
* Make a no-op ALTER EXTENSION UPDATE give just a NOTICE, not ERROR.Tom Lane2011-02-16
| | | | This seems a bit more user-friendly.
* WAL receiver shouldn't try to send a reply when dying.Robert Haas2011-02-16
| | | | Per report from, and discussion with, Fujii Masao.
* Add FOREACH IN ARRAY looping to plpgsql.Tom Lane2011-02-16
| | | | | | | (I'm not entirely sure that we've finished bikeshedding the syntax details, but the functionality seems OK.) Pavel Stehule, reviewed by Stephen Frost and Tom Lane
* pg_ctl promoteRobert Haas2011-02-15
| | | | Fujii Masao, reviewed by Robert Haas, Stephen Frost, and Magnus Hagander.
* Export the external file reader used in COPY FROM as APIs.Itagaki Takahiro2011-02-16
| | | | | | | | They are expected to be used by extension modules like file_fdw. There are no user-visible changes. Itagaki Takahiro Reviewed and tested by Kevin Grittner and Noah Misch.
* Add CheckTableNotInUse calls in DROP TABLE and DROP INDEX.Tom Lane2011-02-15
| | | | | | | | | | | | | Recent releases had a check on rel->rd_refcnt in heap_drop_with_catalog, but failed to cover the possibility of pending trigger events at DROP time. (Before 8.4 we didn't even check the refcnt.) When the trigger events were eventually fired, you'd get "could not open relation with OID nnn" errors, as in recent report from strk. Better to throw a suitable error when the DROP is attempted. Also add a similar check in DROP INDEX. Back-patch to all supported branches.
* Assorted corrections to the patch to add WAL receiver replies.Robert Haas2011-02-15
| | | | Per reports from Fujii Masao.
* Rename max_predicate_locks_per_transaction.Robert Haas2011-02-15
| | | | | | The new name, max_pred_locks_per_transaction, is shorter. Kevin Grittner, per discussion.
* Avoid a few more SET DATA TYPE table rewrites.Robert Haas2011-02-14
| | | | | | | When the new type is an unconstrained domain over the old type, we don't need to rewrite the table. Noah Misch and Robert Haas
* Delete stray word from comment.Robert Haas2011-02-14
|
* PITR can stop at a named restore point when recovery target = timeSimon Riggs2011-02-15
| | | | | | | though must not update the last transaction timestamp. Plus comment and message cleanup for recent named restore point. Fujii Masao, minor changes by me
* Rearrange extension-related views as per recent discussion.Tom Lane2011-02-14
| | | | | | | | | | The original design of pg_available_extensions did not consider the possibility of version-specific control files. Split it into two views: pg_available_extensions shows information that is generic about an extension, while pg_available_extension_versions shows all available versions together with information that could be version-dependent. Also, add an SRF pg_extension_update_paths() to assist in checking that a collection of update scripts provide sane update path sequences.
* Support replacing MODULE_PATHNAME during extension script file execution.Tom Lane2011-02-13
| | | | | | This avoids the need to find a way to make PGXS' .sql.in-to-.sql rule insert the right thing. We'll just deprecate use of that hack for extensions.
* Change the naming convention for extension files to use double dashes.Tom Lane2011-02-13
| | | | | | | | | | This allows us to have an unambiguous rule for deconstructing the names of script files and secondary control files, without having to forbid extension and version names from containing any dashes. We do have to forbid them from containing double dashes or leading/trailing dashes, but neither restriction is likely to bother anyone in practice. Per discussion, this seems like a better solution overall than the original design.
* Refactor ALTER EXTENSION UPDATE to have cleaner multi-step semantics.Tom Lane2011-02-12
| | | | | | | | | | | | | | | | | | | | | | | This change causes a multi-step update sequence to behave exactly as if the updates had been commanded one at a time, including updating the "requires" dependencies afresh at each step. The initial implementation took the shortcut of examining only the final target version's "requires" and changing the catalog entry but once. But on reflection that's a bad idea, since it could lead to executing old update scripts under conditions different than they were designed/tested for. Better to expend a few extra cycles and avoid any surprises. In the same spirit, if a CREATE EXTENSION FROM operation involves applying a series of update files, it will act as though the CREATE had first been done using the initial script's target version and then the additional scripts were invoked with ALTER EXTENSION UPDATE. I also removed the restriction about not changing encoding in secondary control files. The new rule is that a script is assumed to be in whatever encoding the control file(s) specify for its target version. Since this reimplementation causes us to read each intermediate version's control file, there's no longer any uncertainty about which encoding setting would get applied.
* Properly handle Win32 paths of 'E:abc', which can be either absolute orBruce Momjian2011-02-12
| | | | | | relative, by creating a function path_is_relative_and_below_cwd() to check for specific requirements. It is unclear if this fixes a security problem or not but the new code is more robust.
* DDL support for collationsPeter Eisentraut2011-02-12
| | | | | | | | | | | | | - collowner field - CREATE COLLATION - ALTER COLLATION - DROP COLLATION - COMMENT ON COLLATION - integration with extensions - pg_dump support for the above - dependency management - psql tab completion - psql \dO command
* Teach ALTER TABLE .. SET DATA TYPE to avoid some table rewrites.Robert Haas2011-02-12
| | | | | | | | | | | | | | | | | | | | | | | When the old type is binary coercible to the new type and the using clause does not change the column contents, we can avoid a full table rewrite, though any indexes on the affected columns will still need to be rebuilt. This applies, for example, when changing a varchar column to be of type text. The prior coding assumed that the set of operations that force a rewrite is identical to the set of operations that must be propagated to tables making use of the affected table's rowtype. This is no longer true: even though the tuples in those tables wouldn't need to be modified, the data type change invalidate indexes built using those composite type columns. Indexes on the table we're actually modifying can be invalidated too, of course, but the existing machinery is sufficient to handle that case. Along the way, add some debugging messages that make it possible to understand what operations ALTER TABLE is actually performing in these cases. Noah Misch and Robert Haas
* Clean up installation directory choices for extensions.Tom Lane2011-02-11
| | | | | | | | | | | | | | Arrange for the control files to be in $SHAREDIR/extension not $SHAREDIR/contrib, since we're generally trying to deprecate the term "contrib" and this is a once-in-many-moons opportunity to get rid of it in install paths. Fix PGXS to install the $EXTENSION file into that directory no matter what MODULEDIR is set to; a nondefault MODULEDIR should only affect the script and secondary extension files. Fix the control file directory parameter to be interpreted relative to $SHAREDIR, to avoid a surprising disconnect between how you specify that and what you set MODULEDIR to. Per discussion with David Wheeler.
* Add support for multiple versions of an extension and ALTER EXTENSION UPDATE.Tom Lane2011-02-11
| | | | | | | | | | | This follows recent discussions, so it's quite a bit different from Dimitri's original. There will probably be more changes once we get a bit of experience with it, but let's get it in and start playing with it. This is still just core code. I'll start converting contrib modules shortly. Dimitri Fontaine and Tom Lane
* Fix comment recently obsoletedAlvaro Herrera2011-02-11
|
* Typo fixes. receivedUpto should be capitalized consistently.Robert Haas2011-02-11
|
* Tweak find_composite_type_dependencies API a bit more.Robert Haas2011-02-11
| | | | | | | | | | Per discussion with Noah Misch, the previous coding, introduced by my commit 65377e0b9c0e0397b1598b38b6a7fb8b6f740d39 on 2011-02-06, was really an abuse of RELKIND_COMPOSITE_TYPE, since the caller in typecmds.c is actually passing the name of a domain. So go back having a type name argument, but make the first argument a Relation rather than just a string so we can tell whether it's a table or a foreign table and emit the proper error message.
* Extend "ALTER EXTENSION ADD object" to permit "DROP object" as well.Tom Lane2011-02-10
| | | | | Per discussion, this is something we should have sooner rather than later, and it doesn't take much additional code to support it.
* Fix "variable not used" warnings when USE_WIDE_UPPER_LOWER is notBruce Momjian2011-02-10
| | | | defined.
* Update commentPeter Eisentraut2011-02-10
| | | | | It was still claiming that the keyword list is in keywords.c, when it is now in kwlist.h.
* Send status updates back from standby server to master, indicating how farHeikki Linnakangas2011-02-10
| | | | | | | | | | the standby has written, flushed, and applied the WAL. At the moment, this is for informational purposes only, the values are only shown in pg_stat_replication system view, but in the future they will also be needed for synchronous replication. Extracted from Simon riggs' synchronous replication patch by Robert Haas, with some tweaking by me.
* Track last time for statistics reset on databases and bgwriterMagnus Hagander2011-02-10
| | | | | | | | Tracks one counter for each database, which is reset whenever the statistics for any individual object inside the database is reset, and one counter for the background writer. Tomas Vondra, reviewed by Greg Smith
* Allocate all entries in the serializable xid hash up-front, so that you don'tHeikki Linnakangas2011-02-10
| | | | | | run out of shared memory when you try to assign an xid to a transaction. Kevin Grittner
* Fix improper matching of resjunk column names for FOR UPDATE in subselect.Tom Lane2011-02-09
| | | | | | | | | | | | | | | | Flattening of subquery range tables during setrefs.c could lead to the rangetable indexes in PlanRowMark nodes not matching up with the column names previously assigned to the corresponding resjunk ctid (resp. tableoid or wholerow) columns. Typical symptom would be either a "cannot extract system attribute from virtual tuple" error or an Assert failure. This wasn't a problem before 9.0 because we didn't support FOR UPDATE below the top query level, and so the final flattening could never renumber an RTE that was relevant to FOR UPDATE. Fix by using a plan-tree-wide unique number for each PlanRowMark to label the associated resjunk columns, so that the number need not change during flattening. Per report from David Johnston (though I'm darned if I can see how this got past initial testing of the relevant code). Back-patch to 9.0.
* Fix pg_upgrade to handle extensions.Tom Lane2011-02-09
| | | | | | | | | | | | | | | | | | | This follows my proposal of yesterday, namely that we try to recreate the previous state of the extension exactly, instead of allowing CREATE EXTENSION to run a SQL script that might create some entirely-incompatible on-disk state. In --binary-upgrade mode, pg_dump won't issue CREATE EXTENSION at all, but instead uses a kluge function provided by pg_upgrade_support to recreate the pg_extension row (and extension-level pg_depend entries) without creating any member objects. The member objects are then restored in the same way as if they weren't members, in particular using pg_upgrade's normal hacks to preserve OIDs that need to be preserved. Then, for each member object, ALTER EXTENSION ADD is issued to recreate the pg_depend entry that marks it as an extension member. In passing, fix breakage in pg_upgrade's enum-type support: somebody didn't fix it when the noise word VALUE got added to ALTER TYPE ADD. Also, rationalize parsetree representation of COMMENT ON DOMAIN and fix get_object_address() to allow OBJECT_DOMAIN.
* Information schema views for collation supportPeter Eisentraut2011-02-09
| | | | | Add the views character_sets, collations, and collation_character_set_applicability.
* Implement "ALTER EXTENSION ADD object".Tom Lane2011-02-09
| | | | | | | | | | | This is an essential component of making the extension feature usable; first because it's needed in the process of converting an existing installation containing "loose" objects of an old contrib module into the extension-based world, and second because we'll have to use it in pg_dump --binary-upgrade, as per recent discussion. Loosely based on part of Dimitri Fontaine's ALTER EXTENSION UPGRADE patch.
* Fix allocation of RW-conflict pool in the new predicate lock manager, andHeikki Linnakangas2011-02-09
| | | | | also take the RW-conflict pool into account in the PredicateLockShmemSize() estimate.
* Implement NOWAIT option for BASE_BACKUP commandMagnus Hagander2011-02-09
| | | | | | | | | | Specifying this option makes the server not wait for the xlog to be archived, or emit a warning that it can't, instead leaving the responsibility with the client. This is useful when the log is being streamed using the streaming protocol in parallel with the backup, without having log archiving enabled.
* Suppress some compiler warnings in recent commits.Tom Lane2011-02-08
| | | | | | | | | | | | | Older versions of gcc tend to throw "variable might be clobbered by `longjmp' or `vfork'" warnings whenever a variable is assigned in more than one place and then used after the end of a PG_TRY block. That's reasonably easy to work around in execute_extension_script, and the overhead of unconditionally saving/restoring the GUC variables seems unlikely to be a serious concern. Also clean up logic in ATExecValidateConstraint to make it easier to read and less likely to provoke "variable might be used uninitialized in this function" warnings.
* Core support for "extensions", which are packages of SQL objects.Tom Lane2011-02-08
| | | | | | | | | | | | | This patch adds the server infrastructure to support extensions. There is still one significant loose end, namely how to make it play nice with pg_upgrade, so I am not yet committing the changes that would make all the contrib modules depend on this feature. In passing, fix a disturbingly large amount of breakage in AlterObjectNamespace() and callers. Dimitri Fontaine, reviewed by Anssi Kääriäinen, Itagaki Takahiro, Tom Lane, and numerous others
* Per-column collation supportPeter Eisentraut2011-02-08
| | | | | | | | This adds collation support for columns and domains, a COLLATE clause to override it per expression, and B-tree index support. Peter Eisentraut reviewed by Pavel Stehule, Itagaki Takahiro, Robert Haas, Noah Misch
* Named restore points in recovery. Users can record named points, thenSimon Riggs2011-02-08
| | | | | | | new recovery.conf parameter recovery_target_name allows PITR to specify named points as recovery targets. Jaime Casanova, reviewed by Euler Taveira de Oliveira, plus minor edits
* Basic Recovery Control functions for use in Hot Standby. Pause, Resume,Simon Riggs2011-02-08
| | | | | | | Status check functions only. Also, new recovery.conf parameter to pause_at_recovery_target, default on. Simon Riggs, reviewed by Fujii Masao
* Remove rare corner case for data loss when triggering standby server.Simon Riggs2011-02-08
| | | | | | | | | | | If the standby was streaming when trigger file arrives, check also in the archive for additional WAL files. This is a corner case since it is unlikely that we would trigger a failover while the master is still available and sending data to standby, while at the same time running in archive mode and also while the streaming standby has fallen behind archive. Someone would eventually be unlucky; we must plug all gaps however small. Fujii Masao
* Extend ALTER TABLE to allow Foreign Keys to be added without initial validation.Simon Riggs2011-02-08
| | | | | | | | | FK constraints that are marked NOT VALID may later be VALIDATED, which uses an ShareUpdateExclusiveLock on constraint table and RowShareLock on referenced table. Significantly reduces lock strength and duration when adding FKs. New state visible from psql. Simon Riggs, with reviews from Marko Tiikkaja and Robert Haas
* Fix copy-pasto in description of pg_serial, and silence compiler warningHeikki Linnakangas2011-02-08
| | | | about uninitialized field you get on some compilers.