Proofreading adjustments for first two parts of documentation (Tutorial and SQL).

In pgsql/src/bin/scripts/vacuumdb.c, in VACUUM, FREEZE must be before ANALYZE; fix this in vacuumdb. Docs are already correct.

Blank line Makefile cleanups.

Heikki Linnakangas a commité :

In pgsql/src/backend/parser/gram.y, move SERVER to the right place in the alphabetically sorted keyword list.

Add pgsql/src/tools/check_keywords.pl script to perform some basic sanity checks to the keyword lists in gram.y and kwlist.h. It checks that all lists are in alphabetical order, and that all keywords present in gram.y are listed in kwlist.h in the right category, and that all keywords in kwlist.h are also in gram.y. What's still missing is to check that all keywords defined with "%token <keyword>" in gram.y are present in one of the keyword lists in gram.y.

In pgsql/src/tools/check_keywords.pl, clean up check_keywords.pl script, making it 'strict' and removing a few leftover unused variables. Laurent Laborde.

Tom Lane a commité :

Improve pull_up_subqueries logic so that it doesn't insert unnecessary PlaceHolderVar nodes in join quals appearing in or below the lowest outer join that could null the subquery being pulled up. This improves the planner's ability to recognize constant join quals, and probably helps with detection of common sort keys (equivalence classes) as well.

In pgsql/src/backend/utils/adt/datetime.c, when checking for datetime field overflow, we should allow a fractional-second part that rounds up to exactly 1.0 second. The previous coding rejected input like "00:12:57.9999999999999999999999999999", with the exact number of nines needed to cause failure varying depending on float-timestamp option and possibly on platform. Obviously this should round up to the next integral second, if we don't have enough precision to distinguish the value from that. Per bug #4789 from Robert Kruus. In passing, fix a missed check for fractional seconds in one copy of the "is it greater than 24:00:00" code. Broken all the way back, so patch all the way back.

In pgsql/src/pl/plpgsql/src/gram.y, fix a couple of cases where the plpgsql grammar looked for T_WORD and failed to consider the possibility that it would get T_SCALAR, T_RECORD, or T_ROW instead because the word happens to match a plpgsql variable name. In particular, give "duplicate declaration" rather than generic "syntax error" if the same identifier is declared twice in the same block, as per my recent complaint. Also behave more sanely when decl_aliasitem or proc_condition or opt_lblname is coincidentally not T_WORD. Refactor the related productions a bit to reduce duplication. This is a longstanding bug, but it doesn't seem critical enough to back-patch.

Fix plpgsql's EXIT so that an EXIT without a label only matches a loop, never a BEGIN block. This is required for Oracle compatibility and is also plainly stated to be the behavior by our original documentation (up until 8.1, in which the docs were adjusted to match the code's behavior; but actually the old docs said the correct thing and the code was wrong). Not back-patched because this introduces an incompatibility that could break working applications. Requires release note.

Split the release notes into a separate file for each (active) major branch, as per my recent proposal. release.sgml itself is now just a stub that should change rarely; ideally, only once per major release to add a new include line. Most editing work will occur in the release-N.N.sgml files. To update a back branch for a minor release, just copy the appropriate release-N.N.sgml file(s) into the back branch. This commit doesn't change the end-product documentation at all, only the source layout. However, it makes it easy to start omitting ancient information from newer branches' documentation, should we ever decide to do that.

We don't need major_release_split any more.

Install some simple defenses in postmaster startup to help ensure a useful error message if the installation directory layout is messed up (or at least, something more useful than the behavior exhibited in bug #4787). During postmaster startup, check that get_pkglib_path resolves as a readable directory; and if ParseTzFile() fails to open the expected timezone abbreviation file, check the possibility that the directory is missing rather than just the specified file. In case of either failure, issue a hint suggesting that the installation is broken. These two checks cover the lib/ and share/ trees of a full installation, which should take care of most scenarios where a sysadmin decides to get cute.

In pgsql/src/backend/postmaster/postmaster.c, avoid a memory allocation in the backend startup code, to avoid having to check whether it failed. Modelled after catcache.c's usage of DlList, per suggestion from Tom Lane.

Correctifs rejetés (à ce jour)

No one was disappointed this week :-)

Correctifs en attente

Alvaro Herrera sent in a doc patch for autovacuum about when ANALYZE is recommended.

Robert Haas sent in another revision of the ALTER COLUMN...SET DISTINCT patch.

Robert Haas sent in a patch to replace a couple of references to files that no longer exist in the source tree with references to the appropriate URLs.