Nouvelles hebdomadaires de PostgreSQL - 2 janvier 2011
La version de test PostgreSQL 9.1alpha3 a été publiée ! Retrouvez-la ici :
http://developer.postgresql.org/pgdocs/postgres/release-9-1-alpha.html
Et voici un guide de test :
http://wiki.postgresql.org/wiki/HowToBetaTest
Les nouveautés des produits dérivés
PostgreSQL Local
PostgreSQL dans les média
PostgreSQL Weekly News / les nouvelles hebdomadaires vous sont offertes cette semaine par David Fetter. Traduction par l'équipe PostgreSQLFr sous licence CC BY-NC-SA.
Proposez vos articles ou annonces avant dimanche 15:00 (heure du Pacifique). Merci de les envoyer en anglais à david (a) fetter.org, en allemand à pwn (a) pgug.de, en italien à pwn (a) itpug.org et en espagnol à pwn (a) arpug.com.ar.
(lien vers l'article original)
Revues de code
Correctifs appliqués
Alvaro Herrera a poussé :
Tom Lane a poussé :
- Fix ill-chosen use of "private" as an argument and struct field name. "private" is a keyword in C++, so this breaks the poorly-enforced policy that header files should be include-able in C++ code. Per report from Craig Ringer and some investigation with cpluspluscheck.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=275411912d96c160547a219cb3223efa3737f90d
- Tweak cpluspluscheck to avoid directly #include'ing gram.h. gram.h has ordering dependencies, which are satisfied when it's included from gramparse.h, but might not be if it's pulled in directly.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=a977db6f1c3f399e5eaeb2514c72f38bdb8319e8
- Fix failure of executor/hashjoin.h to compile standalone. Noted while experimenting with cpluspluscheck.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=37b61a69f30e0aefcb49a4ad64d6884cd96fe397
- Rearrange cpluspluscheck to check just one .h file at a time. This is slower than the original coding but avoids the problem of including files in an unpredictable order. Aside from being more trustworthy, we can get rid of some exclusions that were formerly made for what turn out to be ordering or re-inclusion problems. I also modified it to include libpq's exported files in the check. ecpg should be included as well, but I'm unclear on which ecpg .h files are meant to be included by clients.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=8c61f81b3196fe9757901e90e3fc1b30283d3995
- Rename the C functions bitand(), bitor() to bit_and(), bit_or(). This is to avoid use of the C++ keywords "bitand" and "bitor" in the header file utils/varbit.h. Note the functions' SQL-level names are not changed, only their C-level names. In passing, make some comments in varbit.c conform to project-standard layout.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=84fc571395f6986d912cda6c09826cb10caee7f0
- Remove -fno-operator-names switch from cpluspluscheck. No longer needed now that bitand() and bitor() have been renamed.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=f79136439f250f3eab6792870353a83ad993e71f
- Fix ill-advised placement of PGRES_COPY_BOTH enum value. It must be added at the end of the ExecStatusType enum to avoid ABI breakage compared to previous libpq versions. Noted by Magnus Hagander.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=81a530a65eb867a366828daa7a8757727214ecad
- Reclassify DEFAULT as a column_constraint item in the CREATE TABLE syntax. This is how it was documented originally, but several years ago somebody decided that DEFAULT isn't a type of constraint. Well, the grammar thinks it is. The documentation was wrong in two ways: it alleged that DEFAULT had to appear before any other kind of constraint, and it alleged that you can't prefix a DEFAULT clause with a "CONSTRAINT name" clause, when in fact you can. (The latter behavior probably isn't SQL-standard, but our grammar has always allowed it.) This patch responds to Fujii Masao's observation that the ALTER TABLE documentation mistakenly implied that you couldn't include DEFAULT in ALTER TABLE ADD COLUMN; though this isn't the way he proposed fixing it.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=31d2efaef507f280f4df895e1730a9ec8c31aa12
- Ooops, no DATE_IS_NOBEGIN/DATE_IS_NOEND in 8.3 or 8.2 ... I heard the siren call of git cherry-pick, but should have lashed myself to the mast.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=5f588805c882883fdb26f43ddb10ac5088517e72
- Avoid unexpected conversion overflow in planner for distant date values. The "date" type supports a wider range of dates than int64 timestamps do. However, there is pre-int64-timestamp code in the planner that assumes that all date values can be converted to timestamp with impunity. Fortunately, what we really need out of the conversion is always a double (float8) value; so even when the date is out of timestamp's range it's possible to produce a sane answer. All we need is a code path that doesn't try to force the result into int64. Per trouble report from David Rericha. Back-patch to all supported versions. Although this is surely a corner case, there's not much point in advertising a date range wider than timestamp's if we will choke on such values in unexpected places.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=f2ba1e994c4d17dc3d4b8d48d3933c96d09127e1
- Improve pg_upgrade's checks for required executables. Don't insist on pg_dumpall and psql being present in the old cluster, since they are not needed. Do insist on pg_resetxlog being present (in both old and new), since we need it. Also check for pg_config, but only in the new cluster. Remove the useless attempt to call pg_config in the old cluster; we don't need to know the old value of --pkglibdir. (In the case of a stripped-down migration installation there might be nothing there to look at anyway, so any future change that might reintroduce that need would have to be considered carefully.) Per my attempts to build a minimal previous-version installation to support pg_upgrade.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=88c803457a53d2f83168519f0651e6dc258003b5
- Support RIGHT and FULL OUTER JOIN in hash joins. This is advantageous first because it allows us to hash the smaller table regardless of the outer-join type, and second because hash join can be more flexible than merge join in dealing with arbitrary join quals in a FULL join. For merge join all the join quals have to be mergejoinable, but hash join will work so long as there's at least one hashjoinable qual --- the others can be any condition. (This is true essentially because we don't keep per-inner-tuple match flags in merge join, while hash join can do so.) To do this, we need a has-it-been-matched flag for each tuple in the hashtable, not just one for the current outer tuple. The key idea that makes this practical is that we can store the match flag in the tuple's infomask, since there are lots of bits there that are of no interest for a MinimalTuple. So we aren't increasing the size of the hashtable at all for the feature. To write this without turning the hash code into even more of a pile of spaghetti than it already was, I rewrote ExecHashJoin in a state-machine style, similar to ExecMergeJoin. Other than that decision, it was pretty straightforward.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=f4e4b3274317d9ce30de7e7e5b04dece7c4e1791
- Move symbols for ExecMergeJoin's state machine into nodeMergejoin.c. There's no reason for these values to be known anywhere else. After doing this, executor/execdefs.h is vestigial and can be removed.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=7b464015577e6e7544a7aacf19ca55b271e740ac
- Invert and rename flag variable to improve code readability. No change in functionality. Per discussion with Robert Haas.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=39c8dd66204ebfea9c1c6a7a9ca38b7419dbe8a1
Bruce Momjian a poussé :
Magnus Hagander a poussé :
Peter Eisentraut a poussé :
Robert Haas a poussé :
- Support unlogged tables. The contents of an unlogged table aren't WAL-logged; thus, they are not available on standby servers and are truncated whenever the database system enters recovery. Indexes on unlogged tables are also unlogged. Unlogged GiST indexes are not currently supported.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=53dbc27c62d8e1b6c5253feba04a5094cb8fe046
- Bump XLOG_PAGE_MAGIC. The unlogged tables patch (commit 53dbc27c62d8e1b6c5253feba04a5094cb8fe046, 2010-12-29) should have done this, since it changes the format of an XLOG_SMGR_CREATE record.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=d2bc1c9907115f5773927febf823c8d7ae92155b
- Minor wordsmithing. As suggested by Tom Lane, in response to a gripe from Leslie S Satenstein.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=6600d5e91c754789002ed794c18cb856c190f58f
- Fix pg_dump support for security labels on columns. Along the way, correct an erroneous comment.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=d7acf6cc4a1ae53fcd5b4a8a702c43a267f33ba3
- Basic foreign table support. Foreign tables are a core component of SQL/MED. This commit does not provide a working SQL/MED infrastructure, because foreign tables cannot yet be queried. Support for foreign table scans will need to be added in a future patch. However, this patch creates the necessary system catalog structure, syntax support, and support for ancillary operations such as COMMENT and SECURITY LABEL. Shigeru Hanada, heavily revised by Robert Haas.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=0d692a0dc9f0e532c67c577187fe5d7d323cb95b
- Fix typo. Noted by Magnus Hagander.
http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=e657b55e661577cf664949bce78068e2922f594f
Correctifs rejetés (à ce jour)
- Pas de déception cette semaine :-)
Correctifs en attente
- Simon Riggs sent in a WIP patch to reduce the lock levels for ADD and DROP COLUMN.
- Robert Haas sent in another patch implementing core SQL/MED functionality.
- Magnus Hagander sent another revision of the patch to monitor recovery conflict.
- Robert Haas sent in two revisions of a patch to rationalize the error reporting for unsupported operations on various types of database object.
- Peter Geoghegan sent in a patch to change the canonical name of CTEs to CTE rather than "WITH queries."
- Teodor Sigaev sent in a patch which reworks btree_gist to have a new API.
- Jan Urbanski sent some Perl programs to generate error codes and documentation for same from a single source.
- Karl Lehenbauer sent in three revisions of a patch to add table function support to PL/Tcl.
- Joel Jacobson sent in three revisions of a patch to add a --split option to pg_dump.
- Mark Kirkwood sent in two revisions of a patch intended to fix some infelicities in cmd_standby.
- Robert Haas sent in another revision of the patch to future-proof relkind tests.
- Jan Urbanski sent in a patch which prevents PL/PythonU from removing a function's arguments from its globals dict after calling it.
- Dimitri Fontaine sent in a patch to implement extension upgrades and a follow-on patch to fix some infelicities in it.
- Kevin Grittner sent in a patch to make use the SLRU infrastructure in SSI. SSI is how truly SERIALIZABLE isolation will be implemented.
- Tatsuo Ishii sent in two more revisions of a patch to fix pg_terminate_backend().
- Jan Urbanski sent in another flock of patches to refactor PL/PythonU.
- Hannu Valtonen sent in a patch to support negative index values when fetching arrays.