aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
...
* Rework parsing of ConstraintAttributeSpec to improve NOT VALID handling.Tom Lane2011-06-15
| | | | | | | | | | | The initial commit of the ALTER TABLE ADD FOREIGN KEY NOT VALID feature failed to support labeling such constraints as deferrable. The best fix for this seems to be to fold NOT VALID into ConstraintAttributeSpec. That's a bit more general than the documented syntax, but it allows better-targeted syntax error messages. In addition, do some mostly-but-not-entirely-cosmetic code review for the whole NOT VALID patch.
* Fix failure to account for memory used by tuplestore_putvalues().Tom Lane2011-06-15
| | | | | | | | | | | | | | | | | | | This oversight could result in a tuplestore using much more than the intended amount of memory. It would only happen in a code path that loaded a tuplestore via tuplestore_putvalues(), and many of those won't emit huge amounts of data; but cases such as holdable cursors and plpgsql's RETURN NEXT command could have the problem. The fix ensures that the tuplestore will switch to write-to-disk mode when it overruns work_mem. The potential overrun was finite, because we would still count the space used by the tuple pointer array, so the tuplestore code would eventually flip into write-to-disk mode anyway. When storing wide tuples we would go far past the expected work_mem usage before that happened; but this may account for the lack of prior reports. Back-patch to 8.4, where tuplestore_putvalues was introduced. Per bug #6061 from Yann Delorme.
* Fix oversights in pg_basebackup's -z (compression) option.Tom Lane2011-06-15
| | | | | | | | | | The short-form -z switch didn't work, for lack of telling getopt_long about it; and even if specified long-form, it failed to do anything, because the various tests elsewhere in the file would take Z_DEFAULT_COMPRESSION (which is -1) as meaning "don't compress". Per bug #6060 from Shigehiro Honda, though I editorialized on his patch a bit.
* The rolled-back flag on serializable xacts was pointless and redundant withHeikki Linnakangas2011-06-15
| | | | | | | | the marked-for-death flag. It was only set for a fleeting moment while a transaction was being cleaned up at rollback. All the places that checked for the rolled-back flag should also check the marked-for-death flag, as both flags mean that the transaction will roll back. I also renamed the marked-for-death into "doomed", which is a lot shorter name.
* Make non-MVCC snapshots exempt from predicate locking. Scans with non-MVCCHeikki Linnakangas2011-06-15
| | | | | | | | snapshots, like in REINDEX, are basically non-transactional operations. The DDL operation itself might participate in SSI, but there's separate functions for that. Kevin Grittner and Dan Ports, with some changes by me.
* Allow psql \d tab completion to complete all relation kindsPeter Eisentraut2011-06-14
| | | | This matches what \d actually accepts.
* Fix assorted issues with build and install paths containing spaces.Tom Lane2011-06-14
| | | | | | Apparently there is no buildfarm critter exercising this case after all, because it fails in several places. With this patch, build, install, check-world, and installcheck-world pass for me on OS X.
* Remove unused variablePeter Eisentraut2011-06-14
| | | | | | The variable became obsolete in commit 68739ba856c52e6721d6cffec21f1bf0327a9a7b, but only gcc 4.6 shows the warning.
* Add comment that attributes.is_nullable was removed from SQL standardPeter Eisentraut2011-06-14
| | | | | | We don't have to remove the column if no one is bothered, but it's useful to comment on it in case someone looks for it in newer standards versions.
* Oops, forgot to change the order of entries in 2PC callback arrays when IHeikki Linnakangas2011-06-14
| | | | renumbered the resource managers. This should fix the buildfarm..
* Renumber 2PC resource managers so that compared to 9.0, predicate lock rmgrHeikki Linnakangas2011-06-14
| | | | | | | | | is added to the end, and existing resource managers keep their old ids. We're not going to guarantee on-disk compatibility for 2PC state files over major releases, but it seems better to avoid changing the ids them anyway. It will help anyone who might want to write external tools to inspect the state files to work with files from different versions, if nothing else. Per complaint from Tom Lane.
* Move parse2.pl to parse.plPeter Eisentraut2011-06-14
| | | | We have a SCM, so we don't need to keep old versions of files around.
* Fix aboriginal copy-paste mistake in error messageAlvaro Herrera2011-06-13
| | | | Spotted by Jaime Casanova
* Remove now-unnecessary casts.Heikki Linnakangas2011-06-12
| | | | Kevin Grittner
* Code cleanup for InitProcGlobal.Robert Haas2011-06-12
| | | | | | | | | The old code creates three separate arrays when only one is needed, using two different shmem allocation functions for no obvious reason. It also strangely splits up the initialization of AuxilaryProcs between the top and bottom of the function to no evident purpose. Review by Tom Lane.
* Tab completion improvements for COMMENT.Robert Haas2011-06-11
| | | | | | These pertain to object types introduced in PostgreSQL 9.1, so back-patch. Josh Kupershmidt, with some kibitzing by me.
* Stamp HEAD as 9.2devel.Tom Lane2011-06-11
|
* Add C comment mentioning pg_stat_activity.procpid should have beenBruce Momjian2011-06-11
| | | | called 'pid'.
* Work around gcc 4.6.0 bug that breaks WAL replay.Tom Lane2011-06-10
| | | | | | | | | | | | | ReadRecord's habit of using both direct references to tmpRecPtr and references to *RecPtr (which is pointing at tmpRecPtr) triggers an optimization bug in gcc 4.6.0, which apparently has forgotten about aliasing rules. Avoid the compiler bug, and make the code more readable to boot, by getting rid of the direct references. Improve the comments while at it. Back-patch to all supported versions, in case they get built with 4.6.0. Tom Lane, with some cosmetic suggestions from Alex Hunsaker
* Fix locking while setting flags in MySerializableXact.Heikki Linnakangas2011-06-10
| | | | | | | | | | | | | | | | | Even if a flag is modified only by the backend owning the transaction, it's not safe to modify it without a lock. Another backend might be setting or clearing a different flag in the flags field concurrently, and that operation might be lost because setting or clearing a bit in a word is not atomic. Make did-write flag a simple backend-private boolean variable, because it was only set or tested in the owning backend (except when committing a prepared transaction, but it's not worthwhile to optimize for the case of a read-only prepared transaction). This also eliminates the need to add locking where that flag is set. Also, set the did-write flag when doing DDL operations like DROP TABLE or TRUNCATE -- that was missed earlier.
* Add comment about pg_ctl stopAlvaro Herrera2011-06-10
|
* Use "transient" files for blind writes, take 2Alvaro Herrera2011-06-10
| | | | | | | | | | | | | | | | | | | | | "Blind writes" are a mechanism to push buffers down to disk when evicting them; since they may belong to different databases than the one a backend is connected to, the backend does not necessarily have a relation to link them to, and thus no way to blow them away. We were keeping those files open indefinitely, which would cause a problem if the underlying table was deleted, because the operating system would not be able to reclaim the disk space used by those files. To fix, have bufmgr mark such files as transient to smgr; the lower layer is allowed to close the file descriptor when the current transaction ends. We must be careful to have any other access of the file to remove the transient markings, to prevent unnecessary expensive system calls when evicting buffers belonging to our own database (which files we're likely to require again soon.) This commit fixes a bug in the previous one, which neglected to cleanly handle the LRU ring that fd.c uses to manage open files, and caused an unacceptable failure just before beta2 and was thus reverted.
* Use a constant sprintf format to silence compiler warningAlvaro Herrera2011-06-10
|
* Small comment fixes and enhancements.Heikki Linnakangas2011-06-10
|
* Mention "pg_ctl stop" in pgindent README instructions.Bruce Momjian2011-06-09
|
* Tag 9.1beta2.REL9_1_BETA2Tom Lane2011-06-09
|
* Revert "Use "transient" files for blind writes"Alvaro Herrera2011-06-09
| | | | | | This reverts commit 54d9e8c6c19cbefa8fb42ed3442a0a5327590ed3, which caused a failure on the buildfarm. Not a good thing to have just before a beta release.
* Use "transient" files for blind writesAlvaro Herrera2011-06-09
| | | | | | | | | | | | | | | | | "Blind writes" are a mechanism to push buffers down to disk when evicting them; since they may belong to different databases than the one a backend is connected to, the backend does not necessarily have a relation to link them to, and thus no way to blow them away. We were keeping those files open indefinitely, which would cause a problem if the underlying table was deleted, because the operating system would not be able to reclaim the disk space used by those files. To fix, have bufmgr mark such files as transient to smgr; the lower layer is allowed to close the file descriptor when the current transaction ends. We must be careful to have any other access of the file to remove the transient markings, to prevent unnecessary expensive system calls when evicting buffers belonging to our own database (which files we're likely to require again soon.)
* Translation updates for 9.1beta2Peter Eisentraut2011-06-09
|
* Fix the truncation logic of the OldSerXid SLRU mechanism. We can't passHeikki Linnakangas2011-06-09
| | | | | | | | | | | | | | | SimpleLruTruncate() a page number that's "in the future", because it will issue a warning and refuse to truncate anything. Instead, we leave behind the latest segment. If the slru is not needed before XID wrap-around, the segment will appear as new again, and not be cleaned up until it gets old enough again. That's a bit unpleasant, but better than not cleaning up anything. Also, fix broken calculation to check and warn if the span of the OldSerXid SLRU is getting too large to fit in the 64k SLRU pages that we have available. It was not XID wraparound aware. Kevin Grittner and me.
* Pgindent run before 9.1 beta2.Bruce Momjian2011-06-09
|
* Update typedef list for upcoming pgindent run.Bruce Momjian2011-06-09
|
* Use the correct eventlog severity for errorMagnus Hagander2011-06-09
|
* Support silent mode for service registrations on win32Magnus Hagander2011-06-09
| | | | | | | | Using -s when registering a service will now suppress the application eventlog entries stating that the service is starting and started. MauMau
* Add gitignore for mingw/cygwin build outputsMagnus Hagander2011-06-09
| | | | Noted by Radosław Smogura
* Mark the SLRU page as dirty when setting an entry in pg_serial. In theHeikki Linnakangas2011-06-09
| | | | passing, fix an incorrect comment.
* Reorder pg_ctl promote after pg_ctl statusPeter Eisentraut2011-06-08
| | | | | | | | | | | | Since start/stop/restart/reload/status is a kind of standard command set, it seems odd to insert the special-purpose "promote" in between the closely related "restart" and "reload". So put it after "status" in code and documentation. Put the documentation of the -U option in some sensible place. Rewrite the synopsis sentence in help and documentation to make it less of a growing mouthful.
* Allow domains over arrays to match ANYARRAY parameters again.Tom Lane2011-06-08
| | | | | | | | | | | This use-case was broken in commit 529cb267a6843a6a8190c86b75d091771d99d6a9 of 2010-10-21, in which I commented "For the moment, we just forbid such matching. We might later wish to insert an automatic downcast to the underlying array type, but such a change should also change matching of domains to ANYELEMENT for consistency". We still lack consensus about what to do with ANYELEMENT; but not matching ANYARRAY is a clear loss of functionality compared to prior releases, so let's go ahead and make that happen. Per complaint from Regina Obe and extensive subsequent discussion.
* Make DDL operations play nicely with Serializable Snapshot Isolation.Heikki Linnakangas2011-06-08
| | | | | | | | | | | | | | Truncating or dropping a table is treated like deletion of all tuples, and check for conflicts accordingly. If a table is clustered or rewritten by ALTER TABLE, all predicate locks on the heap are promoted to relation-level locks, because the tuple or page ids of any existing tuples will change and won't be valid after rewriting the table. Arguably ALTER TABLE should be treated like a mass-UPDATE of every row, but if you e.g change the datatype of a column, you could also argue that it's just a change to the physical layout, not a logical change. Reindexing promotes all locks on the index to relation-level lock on the heap. Kevin Grittner, with a lot of cosmetic changes by me.
* Complain politely about access temp/unlogged tables during recovery.Robert Haas2011-06-07
| | | | | | | | | This has never been supported, but we previously let md.c issue the complaint for us at whatever point we tried to examine the backing file. Now we print a nicer error message. Per bug #6041, reported by Emanuel, and extensive discussion with Tom Lane over where to put the check.
* Revert psql bits to display NOT VALID for FKsAlvaro Herrera2011-06-07
| | | | | These are superseded by pg_get_constraintdef's ability to display the same when appropriate, which is a better place to do it anyway.
* Make ascii-art in comments pgindent-safe, and some other formatting changes.Heikki Linnakangas2011-06-07
| | | | Kevin Grittner
* Fix rewriter to cope (more or less) with CTEs in the query being rewritten.Tom Lane2011-06-07
| | | | | | | | | | | | | | | | | | | | | | | Since the original implementation of CTEs only allowed them in SELECT queries, the rule rewriter did not expect to find any CTEs in statements being rewritten by ON INSERT/UPDATE/DELETE rules. We had dealt with this to some extent but the code was still several bricks shy of a load, as illustrated in bug #6051 from Jehan-Guillaume de Rorthais. In particular, we have to be able to copy CTEs from the original query's cteList into that of a rule action, in case the rule action references the CTE (which it pretty much always will). This also implies we were doing things in the wrong order in RewriteQuery: we have to recursively rewrite the CTE queries before expanding the main query, so that we have the rewritten queries available to copy. There are unpleasant limitations yet to resolve here, but at least we now throw understandable FEATURE_NOT_SUPPORTED errors for them instead of just failing with bizarre implementation-dependent errors. In particular, we can't handle propagating the same CTE into multiple post-rewrite queries (because then the CTE would be evaluated multiple times), and we can't cope with conflicts between CTE names in the original query and in the rule actions.
* Reset reindex-in-progress state before reverifying an exclusion constraint.Tom Lane2011-06-05
| | | | | | | This avoids an Assert failure when we try to use ordinary index fetches while checking for exclusion conflicts. Per report from Noah Misch. No need for back-patch because the Assert wasn't there before 9.1.
* Allow building with perl 5.14.Andrew Dunstan2011-06-04
| | | | Patch from Alex Hunsaker.
* Expose the "*VALUES*" alias that we generate for a stand-alone VALUES list.Tom Lane2011-06-04
| | | | | | | | | | | | | | | | We were trying to make that strictly an internal implementation detail, but it turns out that it's exposed anyway when dumping a view defined like CREATE VIEW test_view AS VALUES (1), (2), (3) ORDER BY 1; This comes out as CREATE VIEW ... ORDER BY "*VALUES*".column1; which fails to parse when reloading the dump. Hacking ruleutils.c to suppress the column qualification looks like it'd be a risky business, so instead promote the RTE alias to full-fledged usability. Per bug #6049 from Dylan Adams. Back-patch to all supported branches.
* Fix pg_get_constraintdef to cope with NOT VALID constraintsAlvaro Herrera2011-06-03
| | | | | | | | | | This case was missed when NOT VALID constraints were first introduced in commit 722bf7017bbe796decc79c1fde03e7a83dae9ada by Simon Riggs on 2011-02-08. Among other things, it causes pg_dump to omit the NOT VALID flag when dumping such constraints, which may cause them to fail to load afterwards, if they contained values failing the constraint. Per report from Thom Brown.
* Fix failure to check whether a rowtype's component types are sortable.Tom Lane2011-06-03
| | | | | | | | | | | | | | | | | | | | | | | | | The existence of a btree opclass accepting composite types caused us to assume that every composite type is sortable. This isn't true of course; we need to check if the column types are all sortable. There was logic for this for the case of array comparison (ie, check that the element type is sortable), but we missed the point for rowtypes. Per Teodor's report of an ANALYZE failure for an unsortable composite type. Rather than just add some more ad-hoc logic for this, I moved knowledge of the issue into typcache.c. The typcache will now only report out array_eq, record_cmp, and friends as usable operators if the array or composite type will work with those functions. Unfortunately we don't have enough info to do this for anonymous RECORD types; in that case, just assume it will work, and take the runtime failure as before if it doesn't. This patch might be a candidate for back-patching at some point, but given the lack of complaints from the field, I'd rather just test it in HEAD for now. Note: most of the places touched in this patch will need further work when we get around to supporting hashing of record types.
* SSI comment fixes and enhancements. Notably, document that the conflict-outHeikki Linnakangas2011-06-03
| | | | | | | flag actually means that the transaction has a conflict out to a transaction that committed before the flagged transaction. Kevin Grittner
* Need to list getpeereid.c in .gitignore, too ...Tom Lane2011-06-02
|