== PostgreSQL Weekly News – August 26 2012 ==
== PostgreSQL Weekly News – August 26 2012 ==
== PostgreSQL Product News ==
DataArchitect 4.3, a database architecture and modeling tool, released.
PostgreSQL PHP Generator 12.8, a GUI CRUD web application generator for PostgreSQL, released.
psqlODBC 09.01.0200 released.
Postgres Plus xDB Replication Server BETA with Multi-Master support is available.
== PostgreSQL Jobs for August ==
== PostgreSQL Local ==
PostgreSQL Session will be held on October 4th, 2012, in Paris,
France. More information at:
PostgreSQL Conference Europe 2012 will be in Prague, Czech Republic
on October 23-26.
PostgreSQL Day Argentina 2012 will be held on November 13th in Bernal,
Buenos Aires, at the National University of Quilmes. It will cover
topics for PostgreSQL users, developers and contributors, as well as
decision and policy makers. For more information about the
conference, please see the website at
== PostgreSQL in the News ==
Planet PostgreSQL: http://planet.postgresql.org/
PostgreSQL Weekly News is brought to you this week by David Fetter
Submit news and announcements by Sunday at 3:00pm Pacific time.
Please send English language ones to firstname.lastname@example.org, German language
to email@example.com, Italian language to firstname.lastname@example.org. Spanish language
== Applied Patches ==
Heikki Linnakangas pushed:
- Don’t get confused if a WAL partial record header has xl_tot_len ==
0. If a WAL record header was split across pages, but xl_tot_len
was 0, we would get confused and conclude that we had already read
the whole record, and proceed to CRC check it. That can lead to a
crash in RecordIsValid(), which isn’t careful to not read beyond
end-of-record, as defined by xl_tot_len. Add an explicit sanity
check for xl_tot_len <= SizeOfXlogRecord. Also, make
RecordIsValid() more robust by checking in each step that it doesn’t
try to access memory beyond end of record, even if a length field in
the record’s or a backup block’s header is bogus. Per report and
analysis by Tom Lane.
- Fix typo in example.
Tom Lane pushed:
- Fix bugs in contrib/pg_trgm’s LIKE pattern analysis code.
Extraction of trigrams did not process LIKE escape sequences
properly, leading to possible misidentification of trigrams near
escapes, resulting in incorrect index search results. Fujii Masao
- Fix dumping of security_barrier views with circular dependencies.
If a view has circular dependencies, pg_dump splits it into a CREATE
TABLE and a CREATE RULE command to break the dependency loop.
However, if the view has reloptions, those options cannot be applied
in the CREATE TABLE command, because views and tables have different
allowed reloptions so CREATE TABLE would reject them. Instead apply
the reloptions after the CREATE RULE, using ALTER VIEW SET.
- Avoid somewhat-theoretical overflow risks in RecordIsValid(). This
improves on commit 51fed14d73ed3acd2282b531fb1396877e44e86a by
eliminating the assumption that we can form <some pointer value> +
<some offset> without overflow. The entire point of those tests is
that we don’t trust the offset value, so coding them in a way that
could wrap around if the buffer happens to be near the top of memory
doesn’t seem sound. Instead, track the remaining space as a size_t
variable and compare offsets against that. Also, improve comment
about why we need the extra early check on xl_tot_len.
- Update 9.2 release notes to reflect commits to date. I was unable
to entirely resist the temptation to copy-edit related entries, but
will save most of that for a separate pass.
- Fix erroneous documentation of synchronous_commit = remote_write.
The docs claimed that this mode only waits for the standby to
receive WAL data, but actually it waits for the data to be written
out to the standby’s OS; which is a pretty significant difference
because it removes the risk of crash of the walreceiver process.
- Make an editorial pass over the 9.2 release notes. A very large
number of small improvements …
- Make a cut at a major-features list for 9.2. This is open to debate
of course, but it’s past time we had *something* here.
- Remove overly-pessimistic statement about constraint exclusion. As
of 9.2, constraint exclusion should work okay with prepared
statements: the planner will try custom plans with actual values of
the parameters, and observe that they are a lot cheaper than the
generic plan, and thus never fall back to using the generic plan.
Noted by Tatsuhito Kasahara.
- Fix cascading privilege revoke to notice when privileges are still
held. If we revoke a grant option from some role X, but X still
holds the option via another grant, we should not recursively revoke
the privilege from role(s) Y that X had granted it to. This was
supposedly fixed as one aspect of commit
4b2dafcc0b1a579ef5daaa2728223006d1ff98e9, but I must not have tested
it, because in fact that code never worked: it forgot to shift the
grant-option bits back over when masking the bits being revoked.
Per bug #6728 from Daniel German. Back-patch to all active
branches, since this has been wrong since 8.0.
- Fix issues with checks for unsupported transaction states in Hot
Standby. The GUC check hooks for transaction_read_only and
transaction_isolation tried to check RecoveryInProgress(), so as to
disallow setting read/write mode or serializable isolation level
(respectively) in hot standby sessions. However, GUC check hooks
can be called in many situations where we’re not connected to shared
memory at all, resulting in a crash in RecoveryInProgress(). Among
other cases, this results in EXEC_BACKEND builds crashing during
child process start if default_transaction_isolation is
serializable, as reported by Heikki Linnakangas. Protect those
calls by silently allowing any setting when not inside a
transaction; which is okay anyway since these GUCs are always reset
at start of transaction. Also, add a check to
GetSerializableTransactionSnapshot() to complain if we are in hot
standby. We need that check despite the one in check_XactIsoLevel()
because default_transaction_isolation could be serializable. We
don’t want to complain any sooner than this in such cases, since
that would prevent running transactions at all in such a state; but
a transaction can be run, if SET TRANSACTION ISOLATION is done
before setting a snapshot. Per report some months ago from Robert
Haas. Back-patch to 9.1, since these problems were introduced by
the SSI patch. Kevin Grittner and Tom Lane, with ideas from Heikki
- Fix up planner infrastructure to support LATERAL properly. This
patch takes care of a number of problems having to do with failure
to choose valid join orders and incorrect handling of lateral
references pulled up from subqueries. Notable changes: 1. Add a
LateralJoinInfo data structure similar to SpecialJoinInfo, to
represent join ordering constraints created by lateral references.
(I first considered extending the SpecialJoinInfo structure, but the
semantics are different enough that a separate data structure seems
better.) Extend join_is_legal() and related functions to prevent
trying to form unworkable joins, and to ensure that we will consider
joins that satisfy lateral references even if the joins would be
clauseless. 2. Fill in the infrastructure needed for the last few
types of relation scan paths to support parameterization. We’d have
wanted this eventually anyway, but it is necessary now because a
relation that gets pulled up out of a UNION ALL subquery may acquire
a reltargetlist containing lateral references, meaning that its
paths *have* to be parameterized whether or not we have any code
that can push join quals down into the scan. 3. Compute data about
lateral references early in query_planner(), and save in RelOptInfo
nodes, to avoid repetitive calculations later. 4. Assorted
corner-case bug fixes. There’s probably still some bugs left, but
this is a lot closer to being real than it was before.
Robert Haas pushed:
- Tab complete “TABLE whatever DROP CONSTRAINT” with a constraint
name. Jeff Janes
- Improved tab completion for CLUSTER VERBOSE. Jeff Janes
- Add a note to the MVCC chapter that some things aren’t
transactional. Craig Ringer, slightly edited by me.
- Improve C comments in GetSnapshotData. Move discussion of why our
algorithm for taking snapshots in recovery to a more appropriate
location in the function, and delete incorrect mention of taking a
Peter Eisentraut pushed:
- Remove external PID file on postmaster exit
- Teach compiler that ereport(>=ERROR) does not return. When elevel
>= ERROR, we add an abort() call to the ereport() macro to give the
compiler a hint that the ereport() expansion will not return, but
the abort() isn’t actually reached because the longjmp happens in
errfinish(). Because the effect of ereport() varies with the
elevel, we cannot use standard compiler attributes such as noreturn
- Mark DateTimeParseError() noreturn. This avoids a warning from
clang 3.2 about an uninitialized variable ‘dtype’ in date_in().
- Fix install-strip on Mac OS X. There was a hack put into install-sh
to call strip with the correct options on Mac OS X. But that never
worked, because configure disabled stripping on that platform
altogether. So remove that dead code, and while we’re at it, update
install-sh to the latest upstream source (from Automake). Instead,
set up the right strip options in programs.m4, so this now actually
works the way it was originally intended.
- Add instructions for setting up documentation tool chain on Mac OS X
- pg_upgrade: Run the created scripts in the test suite. Just to
check that they actually work.
- libpq: Fix memory leak in URI parser. When an invalid query
parameter is reported, some memory leaks. found by Coverity
- Put options on man page and in help output in slightly better order
- Normalize some British spellings
- Some spelling adjustments in release notes
- pg_basebackup: Correct error message. It still thought that the
–xlog-method option argument could be empty, as in a previous
version of this feature.
Bruce Momjian pushed:
- Document that pg_reload_conf() is also an easy way to reload the
- Fix typo.
- Allow text timezone designations, e.g. “America/Chicago”, when using
the ISO “T” timestamptz format.
- Document clearly that psql ! parameter interpretation limitations
are the same as copy.
- Use psql_error() for most psql error calls, per request from Magnus
- Clarify documentation that primary key and unique constraints are
copied for CREATE TABLE LIKE … INCLUDING INDEXES. Per report from
david <DOT> sahagian <AT> emc <DOT> com
- Update FreeBSD kernel configuration documentation. Brad Davis
http://git.postgresql.org/pg/commitdiff/7a42dff47e37e7cd7ba03a2ed6531f2d9a206e74== Rejected Patches (for now) ==
No one was disappointed this week
== Pending Patches ==
Pavel Stehule sent in another revision of the patch to enhance error
fields in PL/pgsql.
Alexander Korotkov sent in a patch to fix an issue in gistchoose.
Andrew Dunstan sent in two revisions of a patch implementing ALTER
enum … ADD VALUE IF NOT EXISTS.
Zoltan Boszormenyi sent in another revision of the patches to create a
lock timeout framework and use same to implement lock timeouts.
Qi Huang sent in a patch implementing TABLESAMPLE.
Amit Kapila sent in two more revisions of a patch intended to improve
performance by reducing WALs written during updates.
Michael Paquier sent in a patch to clean up some of the functions in
the PostgreSQL FDW.
Alvaro Herrera sent in another revision of the foreign key locks
KaiGai Kohei sent in a WIP patch to enable writes to FDWs.
Amit Kapila sent in a patch to fix an issue in pg_ctl on Windows.
Alvaro Herrera sent in two revisions of a patch to improve
pg_upgrade’s exec_prog() coding.
Heikki Linnakangas sent in another revision of the patch to improve
estimates and selectivity estimates for ranges.
Tomas Vondra sent in a patch to add support for aggregation of info
written into the log.
Tomas Vondra sent in a patch to optimize dropping multiple tables in a
Tomas Vondra sent in two revisions of a patch to allow random sampling
of transaction written into the log.
Bruce Momjian sent in a patch to show timing overhead.
Bruce Momjian sent in a patch to detect empty lock files.
Comments are closed.