aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Modify up/home macro to match standard parameter list; fixes doc build.Bruce Momjian2011-10-12
|
* Improve documentation of psql's \q command.Tom Lane2011-10-12
| | | | | | The documentation neglected to explain its behavior in a script file (it only ends execution of the script, not psql as a whole), and failed to mention the long form \quit either.
* Add Up/Home link to the top of the HTML doc output.Bruce Momjian2011-10-12
| | | | Backpatch to 9.0.X and 9.1.X.
* Add comment on why pulling data from a "name" index column can't crash.Tom Lane2011-10-11
| | | | | | | | | | | It's been bothering me for several days that pretending that the cstring data stored in a btree name_ops column is really a "name" Datum could lead to reading past the end of memory. However, given the current memory layout used for index-only scans in the btree code, a crash is in fact not possible. Document that so we don't break it. I have not thought of any other solutions that aren't fairly ugly too, and most of them lose the functionality of index-only scans on name columns altogether, so this seems like the way to go.
* Generate index-only scan tuple descriptor from the plan node's indextlist.Tom Lane2011-10-11
| | | | | | | | | | Dept. of second thoughts: as long as we've got that tlist hanging around anyway, we can apply ExecTypeFromTL to it to get a suitable descriptor for the ScanTupleSlot. This is a nicer solution than the previous one because it eliminates some hard-wired knowledge about btree name_ops, and because it avoids the somewhat shaky assumption that we needn't set up the scan tuple descriptor in EXPLAIN_ONLY mode. It doesn't change what actually happens at run-time though, and I'm still a bit nervous about that.
* Improve entab's Makefile install entry.Bruce Momjian2011-10-11
| | | | Andrew Dunstan
* Document that not backing up postmaster.pid and postmaster.opts mightBruce Momjian2011-10-11
| | | | | | help prevent pg_ctl from getting confused. Backpatch to 9.1.
* Consider index-only scans even when there is no matching qual or ORDER BY.Tom Lane2011-10-11
| | | | By popular demand.
* Rearrange the implementation of index-only scans.Tom Lane2011-10-11
| | | | | | | | | | | | | | | | | | | | | | This commit changes index-only scans so that data is read directly from the index tuple without first generating a faux heap tuple. The only immediate benefit is that indexes on system columns (such as OID) can be used in index-only scans, but this is necessary infrastructure if we are ever to support index-only scans on expression indexes. The executor is now ready for that, though the planner still needs substantial work to recognize the possibility. To do this, Vars in index-only plan nodes have to refer to index columns not heap columns. I introduced a new special varno, INDEX_VAR, to mark such Vars to avoid confusion. (In passing, this commit renames the two existing special varnos to OUTER_VAR and INNER_VAR.) This allows ruleutils.c to handle them with logic similar to what we use for subplan reference Vars. Since index-only scans are now fundamentally different from regular indexscans so far as their expression subtrees are concerned, I also chose to change them to have their own plan node type (and hence, their own executor source file).
* Replace hardcoded switch in object_exists() with a lookup table.Robert Haas2011-10-11
| | | | | | | | | | | | There's no particular advantage to this change on its face; indeed, it's possible that this might be slightly slower than the old way. But it makes this information more easily accessible to other functions, and therefore paves the way for future code consolidation. Performance isn't critical here, so there's no need to be smart about how we do the search. This is a heavily cut-down version of a patch from KaiGai Kohei, with several fixes by me. Additional review from Dimitri Fontaine.
* Repair breakage in VirtualXactLock.Robert Haas2011-10-11
| | | | | I broke this in commit 84e37126770dd6de903dad88ce150a49b63b5ef9. Report and fix by Fujii Masao.
* Make the reference to "CREATE USER" in the CREATE ROLE page a link.Robert Haas2011-10-10
| | | | | | | | This might help to avoid confusion between the CREATE USER command, and the deprecated CREATEUSER option to CREATE ROLE, as per a recent complaint from Ron Adams. At any rate, having a cross-link here seems like a good idea; two commands that are so similar should reference each other.
* Improve documentation of how to fiddle with SCSI drives on FreeBSD.Robert Haas2011-10-10
| | | | Per suggestions from Achilleas Mantzios and Greg Smith.
* Fix typo in docs for libpq keepalives_count option.Robert Haas2011-10-10
| | | | Shigehiro Honda
* Add doc index entry for pg_resetxlog.Robert Haas2011-10-10
| | | | Fujii Masao
* Document DELETE/UPDATE command tag behavior when triggers are involved.Robert Haas2011-10-10
| | | | Marti Raudsepp
* Some minor wordsmithing for the cascading replication documentation.Robert Haas2011-10-10
| | | | Per report from Thom Brown.
* Mark GUC external_pid_file's default as '' in postgresql.conf, ratherBruce Momjian2011-10-10
| | | | than '(none)'.
* Attempt to reduce local dependencies in regression tests.Robert Haas2011-10-10
| | | | | | | This appears to be another case where the relative sort order of letters vs. numbers can throw things off. Pavel Stehule
* In pg_upgrade, add -o/-O options to pass parameters to the servers, andBruce Momjian2011-10-10
| | | | document its use for config-only directory installs.
* Fix ALTER TABLE ONLY .. DROP CONSTRAINT.Robert Haas2011-10-09
| | | | | | | | | | | | | | | | | | When I consolidated two copies of the HOT-chain search logic in commit 4da99ea4231e3d8bbf28b666748c1028e7b7d665, I introduced a behavior change: the old code wouldn't necessarily traverse the entire chain, if the most recently returned tuple were updated while the HOT chain traversal is in progress. The new behavior seems more correct, but unfortunately, the code here relies on a scan with SnapshotNow failing to see its own updates. That seems pretty shaky even with the old HOT chain traversal behavior, since there's no guarantee that these updates will always be HOT, but it's trivial to broke a failure with the new HOT search logic. Fix by updating just the first matching pg_constraint tuple, rather than all of them, since there should be only one anyway. But since nobody has reproduced this failure on older versions, no back-patch for now. Report and test case by Alex Hunsaker; tablecmds.c changes by me.
* Revert accidental change to pg_config_manual.h.Robert Haas2011-10-09
| | | | | | | | | This was broken in commit 53dbc27c62d8e1b6c5253feba04a5094cb8fe046, which introduced unlogged tables. Fortunately, as debugging tools go, this one is pretty cheap, which is probably why it took nine months for someone to notice, but it's not intended to be enabled by default, so revert. Noted by Fujii Masao.
* Clean up a couple of box gist helper functions.Heikki Linnakangas2011-10-09
| | | | | | | | | | The original idea of this patch was to make box picksplit run faster, by eliminating unnecessary palloc() overhead, but that was obsoleted by the new double-sorting split algorithm that doesn't call these functions so heavily anymore. Nevertheless, the code looks better this way. Original patch by me, reviewed and tidied up after the double-sorting patch by Kevin Grittner.
* Improve index-only scans to avoid repeated access to the index page.Tom Lane2011-10-09
| | | | | | | | | | | | We copy all the matched tuples off the page during _bt_readpage, instead of expensively re-locking the page during each subsequent tuple fetch. This costs a bit more local storage, but not more than 2*BLCKSZ worth, and the reduction in LWLock traffic is certainly worth that. What's more, this lets us get rid of the API wart in the original patch that said an index AM could randomly decline to supply an index tuple despite having asserted pg_am.amcanreturn. That will be important for future improvements in the index-only-scan feature, since the executor will now be able to rely on having the index data available.
* Prevent index-only scans in stats regression test.Tom Lane2011-10-08
| | | | | | | | | This bollixes the test because it's expecting to see the idx_tup_fetch counter increase, which won't happen if heap fetches were avoided by use of an index-only scan. Per buildfarm results. While at it, let's just make sure that enable_seqscan and enable_indexscan are ON for this test ...
* Note that index-only scans can affect idx_tup_fetch.Tom Lane2011-10-08
| | | | | An index-only scan that avoids heap fetches will increment idx_tup_read but not idx_tup_fetch.
* Fix brain fade in cost estimation for index-only scans.Tom Lane2011-10-08
| | | | | visibility_fraction should not be applied to regular indexscans. Noted by Cédric Villemain.
* Don't let transform_null_equals=on affect CASE foo WHEN NULL ... constructs.Heikki Linnakangas2011-10-08
| | | | | | | | | transform_null_equals is only supposed to affect "foo = NULL" expressions given directly by the user, not the internal "foo = NULL" expression generated from CASE-WHEN. This fixes bug #6242, reported by Sergey. Backpatch to all supported branches.
* Fix typo.Heikki Linnakangas2011-10-08
|
* Add missing space.Robert Haas2011-10-07
| | | | Dickson S. Guedes
* Try to fix memory barriers on x86_64.Robert Haas2011-10-07
| | | | %esp is no good; must use %rsp there.
* Support index-only scans using the visibility map to avoid heap fetches.Tom Lane2011-10-07
| | | | | | | | | | | | | When a btree index contains all columns required by the query, and the visibility map shows that all tuples on a target heap page are visible-to-all, we don't need to fetch that heap page. This patch depends on the previous patches that made the visibility map reliable. There's a fair amount left to do here, notably trying to figure out a less chintzy way of estimating the cost of an index-only scan, but the core functionality seems ready to commit. Robert Haas and Ibrar Ahmed, with some previous work by Heikki Linnakangas.
* In pg_upgrade, use the new postmaster -C option to get the real dataBruce Momjian2011-10-07
| | | | | directory, for config-only directory installs. Only works for PG 9.2+ servers.
* In pg_upgrade, improve popen() failure detection by checking for fgets()Bruce Momjian2011-10-06
| | | | failures.
* Move pg_upgrade doc mention of the port numbers to the same place.Bruce Momjian2011-10-06
|
* Ensure walsenders can be SIGTERMed while in non-walsender codeMagnus Hagander2011-10-06
| | | | | | | In oder to exit on SIGTERM when in non-walsender code, such as do_pg_stop_backup(), we need to set the interrupt variables that are used there, and not just the walsender local ones.
* Make pgstatindex respond to cancel interrupts.Robert Haas2011-10-06
| | | | | | | | | A similar problem for pgstattuple() was fixed in April of 2010 by commit 33065ef8bc52253ae855bc959576e52d8a28ba06, but pgstatindex() seems to have been overlooked. Back-patch all the way, as with that commit, though not to 7.4 through 8.1, since those are now EOL.
* Simplify new pg_ctl newline termination code.Bruce Momjian2011-10-06
|
* Add postmaster -C option to query configuration parameters, and haveBruce Momjian2011-10-06
| | | | | | pg_ctl use that to query the data directory for config-only installs. This fixes awkward or impossible pg_ctl operation for config-only installs.
* Replace the "New Linear" GiST split algorithm for boxes and points with aHeikki Linnakangas2011-10-06
| | | | | | | new double-sorting algorithm. The new algorithm produces better quality trees, making searches faster. Alexander Korotkov
* Improve and simplify CREATE EXTENSION's management of GUC variables.Tom Lane2011-10-05
| | | | | | | | | | | | | | | | | | | | | CREATE EXTENSION needs to transiently set search_path, as well as client_min_messages and log_min_messages. We were doing this by the expedient of saving the current string value of each variable, doing a SET LOCAL, and then doing another SET LOCAL with the previous value at the end of the command. This is a bit expensive though, and it also fails badly if there is anything funny about the existing search_path value, as seen in a recent report from Roger Niederland. Fortunately, there's a much better way, which is to piggyback on the GUC infrastructure previously developed for functions with SET options. We just open a new GUC nesting level, do our assignments with GUC_ACTION_SAVE, and then close the nesting level when done. This automatically restores the prior settings without a re-parsing pass, so (in principle anyway) there can't be an error. And guc.c still takes care of cleanup in event of an error abort. The CREATE EXTENSION code for this was modeled on some much older code in ri_triggers.c, which I also changed to use the better method, even though there wasn't really much risk of failure there. Also improve the comments in guc.c to reflect this additional usage.
* Change wording for COALESCE docs to use "otherwise".Bruce Momjian2011-10-04
| | | | Per Tom
* Explain COALESCE example in the docs.Bruce Momjian2011-10-04
|
* Improve define_custom_variable's handling of pre-existing settings.Tom Lane2011-10-04
| | | | | | | | | | | | | | | | Arrange for any problems with pre-existing settings to be reported as WARNING not ERROR, so that we don't undesirably abort the loading of the incoming add-on module. The bad setting is just discarded, as though it had never been applied at all. (This requires a change in the API of set_config_option. After some thought I decided the most potentially useful addition was to allow callers to just pass in a desired elevel.) Arrange to restore the complete stacked state of the variable, rather than cheesily reinstalling only the active value. This ensures that custom GUCs will behave unsurprisingly even when the module loading operation occurs within nested subtransactions that have changed the active value. Since a module load could occur as a result of, eg, a PL function call, this is not an unlikely scenario.
* Fix uninitialized-variable bug.Tom Lane2011-10-04
|
* Add sourcefile/sourceline data to EXEC_BACKEND GUC transmission files.Tom Lane2011-10-04
| | | | | | | | | | This oversight meant that on Windows, the pg_settings view would not display source file or line number information for values coming from postgresql.conf, unless the backend had received a SIGHUP since starting. In passing, also make the error detection in read_nondefault_variables a tad more thorough, and fix it to not lose precision on float GUCs (these changes are already in HEAD as of my previous commit).
* Remember the source GucContext for each GUC parameter.Tom Lane2011-10-04
| | | | | | | | | | | | We used to just remember the GucSource, but saving GucContext too provides a little more information --- notably, whether a SET was done by a superuser or regular user. This allows us to rip out the fairly dodgy code that define_custom_variable used to use to try to infer the context to re-install a pre-existing setting with. In particular, it now works for a superuser to SET a extension's SUSET custom variable before loading the associated extension, because GUC can remember whether the SET was done as a superuser or not. The plperl regression tests contain an example where this is useful.
* Use callbacks in SlruScanDirectory for the actual actionAlvaro Herrera2011-10-04
| | | | | | | | | | | | Previously, the code assumed that the only possible action to take was to delete files behind a certain cutoff point. The async notify code was already a crock: it used a different "pagePrecedes" function for truncation than for regular operation. By allowing it to pass a callback to SlruScanDirectory it can do cleanly exactly what it needs to do. The clog.c code also had its own use for SlruScanDirectory, which is made a bit simpler with this.
* Remove the custom_variable_classes parameter.Tom Lane2011-10-04
| | | | | | | | | | | | | | | | | This variable provides only marginal error-prevention capability (since it can only check the prefix of a qualified GUC name), and the consensus is that that isn't worth the amount of hassle that maintaining the setting creates for DBAs. So, let's just remove it. With this commit, the system will silently accept a value for any qualified GUC name at all, whether it has anything to do with any known extension or not. (Unqualified names still have to match known built-in settings, though; and you will get a WARNING at extension load time if there's an unrecognized setting with that extension's prefix.) There's still some discussion ongoing about whether to tighten that up and if so how; but if we do come up with a solution, it's not likely to look anything like custom_variable_classes.
* ProcedureCreate neglected to record dependencies on default expressions.Tom Lane2011-10-03
| | | | | | | Thus, an object referenced in a default expression could be dropped while the function remained present. This was unaccountably missed in the original patch to add default parameters for functions. Reported by Pavel Stehule.