aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* 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.
* Assorted spelling corrections.Tom Lane2012-04-12
| | | | Thom Brown
* Fix cost estimation for indexscan filter conditions.Tom Lane2012-04-11
| | | | | | | | | | | | | | | | | | | cost_index's method for estimating per-tuple costs of evaluating filter conditions (a/k/a qpquals) was completely wrong in the presence of derived indexable conditions, such as range conditions derived from a LIKE clause. This was largely masked in common cases as a result of all simple operator clauses having about the same costs, but it could show up in a big way when dealing with functional indexes containing expensive functions, as seen for example in bug #6579 from Istvan Endredy. Rejigger the calculation to give sane answers when the indexquals aren't a subset of the baserestrictinfo list. As a side benefit, we now do the calculation properly for cases involving join clauses (ie, parameterized indexscans), which we always overestimated before. There are still cases where this is an oversimplification, such as clauses that can be dropped because they are implied by a partial index's predicate. But we've never accounted for that in cost estimates before, and I'm not convinced it's worth the cycles to try to do so.
* Silently ignore any nonexistent schemas that are listed in search_path.Tom Lane2012-04-11
| | | | | | | | | | | | | | | | | | | | | | Previously we attempted to throw an error or at least warning for missing schemas, but this was done inconsistently because of implementation restrictions (in many cases, GUC settings are applied outside transactions so that we can't do system catalog lookups). Furthermore, there were exceptions to the rule even in the beginning, and we'd been poking more and more holes in it as time went on, because it turns out that there are lots of use-cases for having some irrelevant items in a common search_path value. It seems better to just adopt a philosophy similar to what's always been done with Unix PATH settings, wherein nonexistent or unreadable directories are silently ignored. This commit also fixes the documentation to point out that schemas for which the user lacks USAGE privilege are silently ignored. That's always been true but was previously not documented. This is mostly in response to Robert Haas' complaint that 9.1 started to throw errors or warnings for missing schemas in cases where prior releases had not. We won't adopt such a significant behavioral change in a back branch, so something different will be needed in 9.1.
* Accept postgres:// URIs in libpq connection functionsAlvaro Herrera2012-04-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | postgres:// URIs are an attempt to "stop the bleeding" in this general area that has been said to occur due to external projects adopting their own syntaxes. The syntaxes supported by this patch: postgres://[user[:pwd]@][unix-socket][:port[/dbname]][?param1=value1&...] postgres://[user[:pwd]@][net-location][:port][/dbname][?param1=value1&...] should be enough to cover most interesting cases without having to resort to "param=value" pairs, but those are provided for the cases that need them regardless. libpq documentation has been shuffled around a bit, to avoid stuffing all the format details into the PQconnectdbParams description, which was already a bit overwhelming. The list of keywords has moved to its own subsection, and the details on the URI format live in another subsection. This includes a simple test program, as requested in discussion, to ensure that interesting corner cases continue to work appropriately in the future. Author: Alexander Shulgin Some tweaking by Álvaro Herrera, Greg Smith, Daniel Farina, Peter Eisentraut Reviewed by Robert Haas, Alexey Klyukin (offlist), Heikki Linnakangas, Marko Kreen, and others Oh, it also supports postgresql:// but that's probably just an accident.
* Make pg_tablespace_location(0) return the database's default tablespace.Tom Lane2012-04-10
| | | | | | | This definition is convenient when applying the function to the reltablespace column of pg_class, since that's what zero means there; and it doesn't interfere with any other plausible use of the function. Per gripe from Bruce Momjian.
* Fix pg_upgrade to properly upgrade a table that is stored in the clusterBruce Momjian2012-04-10
| | | | | | | | | default tablespace, but part of a database that is in a user-defined tablespace. Caused "file not found" error during upgrade. Per bug report from Ants Aasma. Backpatch to 9.1 and 9.0.
* NLS: Initialize Project-Id-Version field by xgettextPeter Eisentraut2012-04-10
| | | | | Since xgettext provides options to do this now, we might as well use them.
* psql: Improve tab completion of WITHPeter Eisentraut2012-04-10
| | | | | | | Only match when WITH is the first word, as WITH may appear in many other contexts. Josh Kupershmidt
* Measure epoch of timestamp-without-time-zone from local not UTC midnight.Tom Lane2012-04-10
| | | | | | | | | | | | | | | | | This patch reverts commit 191ef2b407f065544ceed5700e42400857d9270f and thereby restores the pre-7.3 behavior of EXTRACT(EPOCH FROM timestamp-without-tz). Per discussion, the more recent behavior was misguided on a couple of grounds: it makes it hard to get a non-timezone-aware epoch value for a timestamp, and it makes this one case dependent on the value of the timezone GUC, which is incompatible with having timestamp_part() labeled as immutable. The other behavior is still available (in all releases) by explicitly casting the timestamp to timestamp with time zone before applying EXTRACT. This will need to be called out as an incompatible change in the 9.2 release notes. Although having mutable behavior in a function marked immutable is clearly a bug, we're not going to back-patch such a change.
* Point the URL to PL/py directly to the page about the procedural language.Heikki Linnakangas2012-04-10
| | | | | It used to point to a top-level page that contains client-side tools as well. It was hard to find the procedural language there.
* Fix typos in docs, some words were doubled.Heikki Linnakangas2012-04-10
| | | | Thom Brown
* Adjust various references to GEQO being non-deterministic.Tom Lane2012-04-09
| | | | | | | It's still non-deterministic in some sense ... but given fixed settings and identical planning problems, it will now always choose the same plan, so we probably shouldn't tar it with that brush. Per bug #6565 from Guillaume Cottenceau. Back-patch to 9.0 where the behavior was fixed.
* Re-add documentation recommendation to use gzip/gunzip for archive fileBruce Momjian2012-04-09
| | | | storage.
* Update documentation to more clearly label the streaming replication option.Bruce Momjian2012-04-09
|
* Remove documentation mention of pglesslog, which was added in 2009Bruce Momjian2012-04-09
| | | | because there was only a beta for 9.0 and it does not compile on 9.1.
* Fix an Assert that turns out to be reachable after all.Tom Lane2012-04-09
| | | | | | | | | estimate_num_groups() gets unhappy with create table empty(); select * from empty except select * from empty e2; I can't see any actual use-case for such a query (and the table is illegal per SQL spec), but it seems like a good idea that it not cause an assert failure.
* Don't bother copying empty support arrays in a zero-column MergeJoin.Tom Lane2012-04-09
| | | | | | | | The case could not arise when this code was originally written, but it can now (since we made zero-column MergeJoins work for the benefit of FULL JOIN ON TRUE). I don't think there is any actual bug here, but we might as well treat it consistently with other uses of COPY_POINTER_FIELD(). Per comment from Ashutosh Bapat.
* Save a few cycles while creating "sticky" entries in pg_stat_statements.Tom Lane2012-04-09
| | | | | | | | | There's no need to sit there and increment the stats when we know all the increments would be zero anyway. The actual additions might not be very expensive, but skipping acquisition of the spinlock seems like a good thing. Pushing the logic about initialization of the usage count down into entry_alloc() allows us to do that while making the code actually simpler, not more complex. Expansion on a suggestion by Peter Geoghegan.
* Remove link to ODBCng project from the docs.Heikki Linnakangas2012-04-09
| | | | | Thom Browne pointed out that the URL was out of date, and Devrim GÜNDÜZ pointed out that the project isn't maintained anymore.
* Teach SLRU code to avoid replacing I/O-busy pages.Robert Haas2012-04-08
| | | | Patch by me; review by Tom Lane and others.
* Improve management of "sticky" entries in contrib/pg_stat_statements.Tom Lane2012-04-08
| | | | | | | | | | | | | This patch addresses a deficiency in the previous pg_stat_statements patch. We want to give sticky entries an initial "usage" factor high enough that they probably will stick around until their query is completed. However, if the query never completes (eg it gets an error during execution), the entry shouldn't persist indefinitely. Manage this by starting out with a usage setting equal to the (approximate) median usage value within the whole hashtable, but decaying the value much more aggressively than we do for normal entries. Peter Geoghegan
* set_stack_base() no longer needs to be called in PostgresMain.Heikki Linnakangas2012-04-08
| | | | | | This was a thinko in previous commit. Now that stack base pointer is now set in PostmasterMain and SubPostmasterMain, it doesn't need to be set in PostgresMain anymore.
* Do stack-depth checking in all postmaster children.Heikki Linnakangas2012-04-08
| | | | | | | | | | | | | | | | | | | We used to only initialize the stack base pointer when starting up a regular backend, not in other processes. In particular, autovacuum workers can run arbitrary user code, and without stack-depth checking, infinite recursion in e.g an index expression will bring down the whole cluster. The comment about PL/Java using set_stack_base() is not yet true. As the code stands, PL/java still modifies the stack_base_ptr variable directly. However, it's been discussed in the PL/Java mailing list that it should be changed to use the function, because PL/Java is currently oblivious to the register stack used on Itanium. There's another issues with PL/Java, namely that the stack base pointer it sets is not really the base of the stack, it could be something close to the bottom of the stack. That's a separate issue that might need some further changes to this code, but that's a different story. Backpatch to all supported releases.
* Fix incorrect make maintainer-clean rule.Tom Lane2012-04-07
|
* Further adjustment of comment about qsort_tuple.Tom Lane2012-04-07
|
* Remove useless variable to suppress compiler warning.Tom Lane2012-04-07
|
* Stamp libraries versions for 9.2 (better late than never).Bruce Momjian2012-04-07
|
* Update URL for pgtclng project.Tom Lane2012-04-06
| | | | Thom Brown
* Fix misleading output from gin_desc().Tom Lane2012-04-06
| | | | | | | | | | | XLOG_GIN_UPDATE_META_PAGE and XLOG_GIN_DELETE_LISTPAGE records were printed with a list link field labeled as "blkno", which was confusing, especially when the link was empty (InvalidBlockNumber). Print the metapage block number instead, since that's what's actually being updated. We could include the link values too as a separate field, but not clear it's worth the trouble. Back-patch to 8.4 where the dubious code was added.
* Fix broken comparetup_datum code.Tom Lane2012-04-06
| | | | | | | | Commit 337b6f5ecf05b21b5e997986884d097d60e4e3d0 contained the entirely fanciful assumption that it had made comparetup_datum unreachable. Reported and patched by Takashi Yamamoto. Fix up some not terribly accurate/useful comments from that commit, too.
* Fix some typos in the documentationPeter Eisentraut2012-04-06
| | | | Thom Brown
* Correct various system catalog/view definitions in the documentationPeter Eisentraut2012-04-06
| | | | Thom Brown
* Dept of second thoughts: improve the API for AnalyzeForeignTable.Tom Lane2012-04-06
| | | | | | | If we make the initially-called function return the table physical-size estimate, acquire_inherited_sample_rows will be able to use that to allocate numbers of samples among child tables, when the day comes that we want to support foreign tables in inheritance trees.