aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Fix edge-case behavior of pg_next_dst_boundary().Tom Lane2012-04-25
| | | | | | | | | | | | | | | | | | | Due to rather sloppy thinking (on my part, I'm afraid) about the appropriate behavior for boundary conditions, pg_next_dst_boundary() gave undefined, platform-dependent results when the input time is exactly the last recorded DST transition time for the specified time zone, as a result of fetching values one past the end of its data arrays. Change its specification to be that it always finds the next DST boundary *after* the input time, and adjust code to match that. The sole existing caller, DetermineTimeZoneOffset, doesn't actually care about this distinction, since it always uses a probe time earlier than the instant that it does care about. So it seemed best to me to change the API to make the result=1 and result=0 cases more consistent, specifically to ensure that the "before" outputs always describe the state at the given time, rather than hacking the code to obey the previous API comment exactly. Per bug #6605 from Sergey Burladyan. Back-patch to all supported versions.
* Remove prototype for nonexistent function.Robert Haas2012-04-25
|
* Another trivial comment-typo fix.Tom Lane2012-04-25
|
* PL/Python: Improve error messagesPeter Eisentraut2012-04-25
|
* Standardize indentation of XSL filesPeter Eisentraut2012-04-24
| | | | Predominant standard is two spaces, so adjust outliers to that.
* entab: Improve makefilePeter Eisentraut2012-04-24
| | | | | A few simplifications and stylistic improvements, found while grepping around for makefile problems elsewhere.
* Fix minor stylistic issuePeter Eisentraut2012-04-24
|
* Casts to or from a domain type are ignored; warn and document.Robert Haas2012-04-24
| | | | | | | | Prohibiting this outright would break dumps taken from older versions that contain such casts, which would create far more pain than is justified here. Per report by Jaime Casanova and subsequent discussion.
* Another typographical correction.Robert Haas2012-04-24
| | | | Noted by Guillaume Smet.
* Lots of doc corrections.Robert Haas2012-04-23
| | | | Josh Kupershmidt
* Rearrange lazy_scan_heap to avoid visibility map race conditions.Robert Haas2012-04-23
| | | | | | | | | | | | | | | | | | | We must set the visibility map bit before releasing our exclusive lock on the heap page; otherwise, someone might clear the heap page bit before we set the visibility map bit, leading to a situation where the visibility map thinks the page is all-visible but it's really not. This problem has existed since 8.4, but it wasn't critical before we had index-only scans, since the worst case scenario was that the page wouldn't get vacuumed until the next scan_all vacuum. Along the way, a couple of minor, related improvements: (1) if we pause the heap scan to do an index vac cycle, release any visibility map page we're holding, since really long-running pins are not good for a variety of reasons; and (2) warn if we see a page that's marked all-visible in the visibility map but not on the page level, since that should never happen any more (it was allowed in previous releases, but not in 9.2).
* Reduce hash size for compute_array_stats, compute_tsvector_stats.Robert Haas2012-04-23
| | | | | | | The size is only a hint, but a big hint chews up a lot of memory without apparently improving performance much. Analysis and patch by Noah Misch.
* Minor improvements for CHECK NO INHERIT documentation.Robert Haas2012-04-23
| | | | | Fix typo spotted by Thom Brown, and improve wording in another area where Thom spotted a typo.
* Fix some typosPeter Eisentraut2012-04-22
| | | | Josh Kupershmidt
* Use fuzzy not exact cost comparison for the final tie-breaker in add_path.Tom Lane2012-04-21
| | | | | | | | Instead of an exact cost comparison, use a fuzzy comparison with 1e-10 delta after all other path metrics have proved equal. This is to avoid having platform-specific roundoff behaviors determine the choice when two paths are really the same to our cost estimators. Adjust the recently-added test case that made it obvious we had a problem here.
* Recast "ONLY" column CHECK constraints as NO INHERITAlvaro Herrera2012-04-20
| | | | | | | | | | | | | | | | | The original syntax wasn't universally loved, and it didn't allow its usage in CREATE TABLE, only ALTER TABLE. It now works everywhere, and it also allows using ALTER TABLE ONLY to add an uninherited CHECK constraint, per discussion. The pg_constraint column has accordingly been renamed connoinherit. This commit partly reverts some of the changes in 61d81bd28dbec65a6b144e0cd3d0bfe25913c3ac, particularly some pg_dump and psql bits, because now pg_get_constraintdef includes the necessary NO INHERIT within the constraint definition. Author: Nikhil Sontakke Some tweaks by me
* Adjust join_search_one_level's handling of clauseless joins.Tom Lane2012-04-20
| | | | | | | | | | | | | | For an initial relation that lacks any join clauses (that is, it has to be cartesian-product-joined to the rest of the query), we considered only cartesian joins with initial rels appearing later in the initial-relations list. This creates an undesirable dependency on FROM-list order. We would never fail to find a plan, but perhaps we might not find the best available plan. Noted while discussing the logic with Amit Kapila. Improve the comments a bit in this area, too. Arguably this is a bug fix, but given the lack of complaints from the field I'll refrain from back-patching.
* Revise parameterized-path mechanism to fix assorted issues.Tom Lane2012-04-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adjusts the treatment of parameterized paths so that all paths with the same parameterization (same set of required outer rels) for the same relation will have the same rowcount estimate. We cache the rowcount estimates to ensure that property, and hopefully save a few cycles too. Doing this makes it practical for add_path_precheck to operate without a rowcount estimate: it need only assume that paths with different parameterizations never dominate each other, which is close enough to true anyway for coarse filtering, because normally a more-parameterized path should yield fewer rows thanks to having more join clauses to apply. In add_path, we do the full nine yards of comparing rowcount estimates along with everything else, so that we can discard parameterized paths that don't actually have an advantage. This fixes some issues I'd found with add_path rejecting parameterized paths on the grounds that they were more expensive than not-parameterized ones, even though they yielded many fewer rows and hence would be cheaper once subsequent joining was considered. To make the same-rowcounts assumption valid, we have to require that any parameterized path enforce *all* join clauses that could be obtained from the particular set of outer rels, even if not all of them are useful for indexing. This is required at both base scans and joins. It's a good thing anyway since the net impact is that join quals are checked at the lowest practical level in the join tree. Hence, discard the original rather ad-hoc mechanism for choosing parameterization joinquals, and build a better one that has a more principled rule for when clauses can be moved. The original rule was actually buggy anyway for lack of knowledge about which relations are part of an outer join's outer side; getting this right requires adding an outer_relids field to RestrictInfo.
* Untabify DSSSL and XSL files and add to check-tabs targetPeter Eisentraut2012-04-19
| | | | | Like with SGML files, using tabs in these files is confusing and unnecessary.
* Remove bogus comment from HeapTupleSatisfiesNow.Robert Haas2012-04-18
| | | | | | | | This has been wrong for a really long time. We don't use two-phase locking to protect against serialization anomalies. Per discussion on pgsql-hackers about 2011-03-07; original report by Dan Ports.
* Finish rename of FastPathStrongLocks to FastPathStrongRelationLocks.Robert Haas2012-04-18
| | | | | | | | Commit 8e5ac74c1249820ca55481223a95b9124b4a4f95 tried to do this renaming, but I relied on gcc to tell me where I needed to make changes, instead of grep. Noted by Jeff Davis.
* Tighten up error recovery for fast-path locking.Robert Haas2012-04-18
| | | | | | | | | The previous code could cause a backend crash after BEGIN; SAVEPOINT a; LOCK TABLE foo (interrupted by ^C or statement timeout); ROLLBACK TO SAVEPOINT a; LOCK TABLE foo, and might have leaked strong-lock counts in other situations. Report by Zoltán Böszörményi; patch review by Jeff Davis.
* Fix incorrect comment in SetBufferCommitInfoNeedsSave().Robert Haas2012-04-18
| | | | | Noah Misch spotted the fact that the old comment is in fact incorrect, due to memory ordering hazards.
* After PageSetAllVisible, use MarkBufferDirty.Robert Haas2012-04-18
| | | | | | | | | Previously, we used SetBufferCommitInfoNeedsSave, but that's really intended for dirty-marks we can theoretically afford to lose, such as hint bits. As for 9.2, the PD_ALL_VISIBLE mustn't be lost in this way, since we could then end up with a heap page that isn't all-visible and a visibility map page that is all visible, causing index-only scans to return wrong answers.
* Fix copyfuncs/equalfuncs support for ReassignOwnedStmt.Robert Haas2012-04-18
| | | | Noah Misch
* Fix various infelicities in node functions.Robert Haas2012-04-18
| | | | | | | | Mostly, this consists of adding support for fields which exist in the structure but aren't handled by copy/equal/outfuncs; but the create foreign table case can actually produce garbage output. Noah Misch
* Doc clarification for synchronous_commit.Robert Haas2012-04-18
| | | | Fujii Masao
* psql: Add tab completion for CREATE/ALTER ROLE name WITHPeter Eisentraut2012-04-18
| | | | | | Previously, the use of the optional key word WITH was not supported. Josh Kupershmidt
* Don't override arguments set via options with positional arguments.Andrew Dunstan2012-04-17
| | | | | | | | | A number of utility programs were rather careless about paremeters that can be set via both an option argument and a positional argument. This leads to results which can violate the Principal Of Least Astonishment. These changes refuse to use positional arguments to override settings that have been made via positional arguments. The changes are backpatched to all live branches.
* Don't wait for the commit record to be replicated if we wrote no WAL.Heikki Linnakangas2012-04-17
| | | | | | | | When using synchronous replication, we waited for the commit record to be replicated, but if we our transaction didn't write any other WAL records, that's not required because we don't even flush the WAL locally to disk in that case. This lead to long waits when committing a transaction that only modified a temporary table. Bug spotted by Thom Brown.
* Add compatibility information for prepared transaction commandsPeter Eisentraut2012-04-16
|
* Fix typoPeter Eisentraut2012-04-16
| | | | Kyotaro HORIGUCHI
* Install plpgsql.h to to include/server at "make install".Heikki Linnakangas2012-04-16
| | | | | | | The header file is needed by any module that wants to use the PL/pgSQL instrumentation plugin interface. Most notably, the pldebugger plugin needs this. With this patch, it can be built using pgxs, without having the full server source tree available.
* PL/Python: Improve documentation of nrows() methodPeter Eisentraut2012-04-16
| | | | | | Clarify that nrows() is the number of rows processed, versus the number of rows returned, which can be obtained using len. Also add tests about that.
* PL/Python: Fix crash when colnames() etc. called without result setPeter Eisentraut2012-04-15
| | | | | | | | The result object methods colnames() etc. would crash when called after a command that did not produce a result set. Now they throw an exception. discovery and initial patch by Jean-Baptiste Quenot
* Add missing descriptions about '--timeout' and '--mode' to helpTatsuo Ishii2012-04-15
| | | | | message. They are already implemented in the source code. Suggestions about the message formatting from Tom Lane.
* Rename synchronous_commit='write' to 'remote_write'.Robert Haas2012-04-14
| | | | Fujii Masao, per discussion on pgsql-hackers
* pg_size_pretty(numeric)Robert Haas2012-04-14
| | | | | | | | The output of the new pg_xlog_location_diff function is of type numeric, since it could theoretically overflow an int8 due to signedness; this provides a convenient way to format such values. Fujii Masao, with some beautification by me.
* Add description of long options for '-c', '-D', '-l' and '-s'. PerTatsuo Ishii2012-04-14
| | | | | discussion of hackers list on 2012/3/10 "missing description initdb manual".
* Update contrib/READMEPeter Eisentraut2012-04-14
| | | | | | | | Remove lots of outdated information that is duplicated by the better-maintained SGML documentation. In particular, remove the outdated listing of contrib modules. Update the installation instructions to mention CREATE EXTENSION, but don't go into too much detail.
* Document that VALUES can be used in WITHPeter Eisentraut2012-04-14
|
* Fix typoPeter Eisentraut2012-04-14
| | | | Etsuro Fujita
* Add Peter Geoghegan as additional author of pg_stat_statements.Robert Haas2012-04-13
|
* Remove the "last ditch" code path in join_search_one_level().Tom Lane2012-04-13
| | | | | | | | | | | | | | | | | | | | So far as I can tell, it is no longer possible for this heuristic to do anything useful, because the new weaker definition of have_relevant_joinclause means that any relation with a joinclause must be considered joinable to at least one other relation. It would still be possible for the code block to be entered, for example if there are join order restrictions that prevent any join of the current level from being formed; but in that case it's just a waste of cycles to attempt to form cartesian joins, since the restrictions will still apply. Furthermore, IMO the existence of this code path can mask bugs elsewhere; we would have noticed the problem with cartesian joins a lot sooner if this code hadn't compensated for it in the simplest case. Accordingly, let's remove it and see what happens. I'm committing this separately from the prerequisite changes in have_relevant_joinclause, just to make the question easier to revisit if there is some fault in my logic.
* Weaken the planner's tests for relevant joinclauses.Tom Lane2012-04-13
| | | | | | | | | | | | | | | | | | | | | | We should be willing to cross-join two small relations if that allows us to use an inner indexscan on a large relation (that is, the potential indexqual for the large table requires both smaller relations). This worked in simple cases but fell apart as soon as there was a join clause to a fourth relation, because the existence of any two-relation join clause caused the planner to not consider clauseless joins between other base relations. The added regression test shows an example case adapted from a recent complaint from Benoit Delbosc. Adjust have_relevant_joinclause, have_relevant_eclass_joinclause, and has_relevant_eclass_joinclause to consider that a join clause mentioning three or more relations is sufficient grounds for joining any subset of those relations, even if we have to do so via a cartesian join. Since such clauses are relatively uncommon, this shouldn't affect planning speed on typical queries; in fact it should help a bit, because the latter two functions in particular get significantly simpler. Although this is arguably a bug fix, I'm not going to risk back-patching it, since it might have currently-unforeseen consequences.
* Rename bytea_agg to string_agg and add delimiter argumentPeter Eisentraut2012-04-13
| | | | | | | | | | Per mailing list discussion, we would like to keep the bytea functions parallel to the text functions, so rename bytea_agg to string_agg, which already exists for text. Also, to satisfy the rule that we don't want aggregate functions of the same name with a different number of arguments, add a delimiter argument, just like string_agg for text already has.
* Consistently quote encoding and locale names in messagesPeter Eisentraut2012-04-13
|
* Grammar corrections.Robert Haas2012-04-13
| | | | Christoph Berg
* Fix typo in comment.Robert Haas2012-04-13
|
* Update lazy_scan_heap header comment.Robert Haas2012-04-13
| | | | | The previous comment described how things worked in PostgreSQL 8.2 and prior.