--- /dev/null
+<!-- BEGIN page_title_block -->
+Weekly News - July 19 2009
+<!-- END page_title_block -->
+
+<h1>PostgreSQL Weekly News - July 19 2009</h1>
+
+<p>
+The first Commitfest of the 8.5 development cycle has begun!
+<a href="http://commitfest.postgresql.org/">http://commitfest.postgresql.org/</a>
+</p>
+
+<p>
+The Italian PostgreSQL Users Group has joined the PostgreSQL
+Translation Project. A working group of 9 people has begun the
+journey to make the Italian section of babel.postgresql.org greener.
+More information in Italian at:
+<a href="http://traduzioni.itpug.org/">http://traduzioni.itpug.org/</a>
+</p>
+
+<h2>PostgreSQL Product News</h2>
+<p>
+Archiveopteryx 3.1.2, a PostgreSQL-based email handler, released.
+<a href="http://www.archiveopteryx.org/3.1.2">http://www.archiveopteryx.org/3.1.2</a>
+</p>
+
+<p>
+Benetl 2.9, an ETL tool for files using PostgreSQL, released.
+<a href="http://www.benetl.net">http://www.benetl.net</a>
+</p>
+
+<p>
+Npgsql2 2.0.6, a .NET data provider for PostgreSQL, released.
+<a href="http://www.npgsql.org">http://www.npgsql.org</a>
+</p>
+
+<p>
+PostgreDAC ver. 2.5.2 released.
+<a href="http://microolap.com/products/connectivity/postgresdac/download/">http://microolap.com/products/connectivity/postgresdac/download/</a>
+</p>
+
+<h2>PostgreSQL Jobs for July</h2>
+<p>
+<a href="http://archives.postgresql.org/pgsql-jobs/2009-07/threads.php">http://archives.postgresql.org/pgsql-jobs/2009-07/threads.php</a>
+</p>
+
+<h2>PostgreSQL Local</h2>
+<p>
+OpenSQL Camp will take place August 22-23, 2009 in St. Augustin,
+Germany, close to Bonn and Cologne. Deadline for the CfP is July 19,
+2009. Get your proposals in!
+<a href="http://opensqlcamp.org/Events/2009/Call_for_Participation">http://opensqlcamp.org/Events/2009/Call_for_Participation</a>
+</p>
+
+<p>
+The German PostgreSQL User Group will have a dev-room at FrOSCon on
+Sunday, August 23, 2009. The Call for Papers is open:
+<a href="http://andreas.scherbaum.la/blog/archives/573-Call-for-Papers-fuer-den-PostgreSQL-Devroom-auf-der-FrOSCon-2009.html">http://andreas.scherbaum.la/blog/archives/573-Call-for-Papers-fuer-den-PostgreSQL-Devroom-auf-der-FrOSCon-2009.html</a>
+</p>
+
+<p>
+The CfP for PyCon Argentina is open until June 29th, 2009 23:59 ART.
+The conference itself will be in Beunos Aires on September 4-5 2009.
+<a href="http://ar.pycon.org/2009/rfp/">http://ar.pycon.org/2009/rfp/</a>
+</p>
+
+<p>
+Andreas (ads) Scherbaum will be teaching a "PostgreSQL for Corporate
+Use" course at the adult education center in Magdeburg, Germany on
+September 7-11, 2009. Details below:
+<a href="http://andreas.scherbaum.la/blog/archives/574-PostgreSQL-als-Bildungsurlaub.html">http://andreas.scherbaum.la/blog/archives/574-PostgreSQL-als-Bildungsurlaub.html</a>
+</p>
+
+<p>
+There will be a conference in Athens, Georgia, USA on September 19,
+2009. The CfP is open.
+<a href="http://www.postgresqlconference.org/2009/pgday/athens">http://www.postgresqlconference.org/2009/pgday/athens</a>
+</p>
+
+<p>
+There will be a conference in Seattle, Washington, USA October 16-18,
+2009. The CfP is open.
+<a href="http://www.postgresqlconference.org/2009/west">http://www.postgresqlconference.org/2009/west</a>
+</p>
+
+<p>
+PGCon Brazil will be take place October 23-24 2009 at Unicamp in
+Campinas, Sao Paulo state. The CfP is open!
+<a href="http://pgcon.postgresql.org.br/2009/chamadas.en.php">http://pgcon.postgresql.org.br/2009/chamadas.en.php</a>
+</p>
+
+<p>
+PGDay.EU 2009 will be at Telecom ParisTech in Paris, France on
+November 6-7, 2009. The CfP is out. Submit!
+<a href="http://www.pgday.eu/">http://www.pgday.eu/</a>
+</p>
+
+<p>
+JPUG 10th Anniversary Conference has started its Request for
+Proposals. The conference is November 20-21, 2009 in Tokyo, Japan.
+<a href="http://archives.postgresql.org/pgsql-announce/2009-05/msg00018.php">http://archives.postgresql.org/pgsql-announce/2009-05/msg00018.php</a>
+</p>
+
+<h2>PostgreSQL in the News</h2>
+<p>
+Planet PostgreSQL: <a href="http://planet.postgresql.org/">http://planet.postgresql.org/</a>
+</p>
+
+<p>
+PostgreSQL Weekly News is brought to you this week by David Fetter and
+Josh Berkus.
+</p>
+
+<p>
+Submit news and announcements by Sunday at 3:00pm Pacific time.
+Please send English language ones to david@fetter.org, German language
+to pwn@pgug.de, Italian language to pwn@itpug.org.
+</p>
+
+<h2>Applied Patches</h2>
+<p>
+Peter Eisentraut committed:
+</p>
+
+<p>
+- Update information schema to SQL:2008: Add yes_or_no domain for
+ "boolean" data. Add new columns for VIEWS view. Slight section
+ renumbering.
+</p>
+
+<p>
+- Rearrangement of the HTML docs build rules. Set up proper makefile
+ dependencies in the documentation build rules, especially around the
+ HTML/index build. The problem we've had with all previous solutions
+ is that we have used the same file name, such as HTML.index or
+ bookindex.sgml, to mean different things at different stages of the
+ build, and make can't distinguish that. The solution here is that
+ the first jade run produces HTML.index, but does not require
+ bookindex.sgml at all, and produces no other html output (the latter
+ an idea from Alvaro). The second jade run includes bookindex.sgml,
+ but does not recreate HTML.index. That way, when you change an sgml
+ file, jade is run twice and at the end all dependencies are
+ satisfied. Omitting the html output in the first stage also makes
+ the full build a lot faster. When you run one of the print format
+ targets, only the first jade run is run, then the print
+ target-specific commands. If an HTML build has completed
+ previously, the first jade run is skipped because the dependencies
+ have already been satisfied. The draft and check targets for quick
+ builds and syntax verification are still there.
+</p>
+
+<p>
+- Make backend header files C++ safe. This alters various incidental
+ uses of C++ key words to use other similar identifiers, so that a
+ C++ compiler won't choke outright. You still (probably) need extern
+ "C" { }; around the inclusion of backend headers. Based on a patch
+ by Kurt Harriman. Also add a script cpluspluscheck to check for C++
+ compatibility in the future. As of right now, this passes without
+ error for me.
+</p>
+
+<p>
+Bruce Momjian committed:
+</p>
+
+<p>
+- In pgsql/contrib/vacuumlo/vacuumlo.c, vacuumlo query cleanups. No
+ need for VACUUM ANAYZE of newly created/populated temp table, just
+ use analyze. No need to apologize for using subquery in DELETE
+ anymore.
+</p>
+
+<p>
+Tom Lane committed:
+</p>
+
+<p>
+- In pgsql/src/backend/utils/cache/plancache.c, do a conditional
+ SPI_push/SPI_pop when replanning a query in RevalidateCachedPlan.
+ This is to avoid a "SPI_ERROR_CONNECT" failure when the planner
+ calls a SPI-using function and we are already inside one. The
+ alternative fix is to expect callers of RevalidateCachedPlan to do
+ this, which seems likely to result in additional hard-to-detect bugs
+ of omission. Per reports from Frank van Vugt and Marek Lewczuk.
+ Back-patch to 8.3. It's much harder to trigger the bug in 8.3, due
+ to a smaller set of cases in which plans can be invalidated, but it
+ could happen. (I think perhaps only a SI reset event could make 8.3
+ fail here, but that's certainly within the realm of possibility.)
+</p>
+
+<p>
+- Tweak the core scanner so that it can be used by plpgsql too.
+ Changes: Pass in the keyword lookup array instead of having it be
+ hardwired. (This incidentally allows elimination of some duplicate
+ coding in ecpg.) Re-order the token declarations in gram.y so that
+ non-keyword tokens have numbers that won't change when keywords are
+ added or removed. Add ".." and ":=" to the set of tokens recognized
+ by scan.l. (Since these combinations are nowhere legal in core SQL,
+ this does not change anything except the precise wording of the
+ error you get when you write this.)
+</p>
+
+<p>
+- In pgsql/src/interfaces/ecpg/preproc/ecpg.tokens, remove duplicate
+ definition of TYPECAST token. (Apparently, some but not all
+ versions of Bison will warn about this.)
+</p>
+
+<p>
+- Add erand48() to the set of functions supported by our src/port/
+ library, and extend configure to test for it properly instead of
+ hard-wiring an assumption that everybody but Windows has the rand48
+ functions. (We do cheat to the extent of assuming that probing for
+ erand48 will do for the entire rand48 family.) erand48() is unused
+ as of this commit, but a followon patch will cause GEQO to depend on
+ it. Andres Freund, additional hacking by Tom Lane.
+</p>
+
+<p>
+- Make GEQO's planning deterministic by having it start from a
+ predictable random number seed each time. This is how it used to
+ work years ago, but we got rid of the seed reset because it was
+ resetting the main random() sequence and thus having undesirable
+ effects on the rest of the system. To fix, establish a private
+ random number state for each execution of geqo(), and initialize the
+ state using the new GUC variable geqo_seed. People who want to
+ experiment with different random searches can do so by changing
+ geqo_seed, but you'll always get the same plan for the same value of
+ geqo_seed (if holding all other planner inputs constant, of course).
+ The new state is kept in PlannerInfo by adding a "void *" field
+ reserved for use by join_search hooks. Most of the rather bulky
+ code changes in this commit are just arranging to pass PlannerInfo
+ around to all the GEQO functions (many of which formerly didn't
+ receive it). Andres Freund, with some editorialization by Tom Lane.
+</p>
+
+<p>
+- Repair bug #4926 "too few pathkeys for mergeclauses". This example
+ shows that the sanity checking I added to create_mergejoin_plan() in
+ 8.3 was a few bricks shy of a load: the mergeclauses could reference
+ pathkeys in a noncanonical order such as x,y,x, not only cases like
+ x,x,y which is all that the code had allowed for. The odd cases
+ only turn up when using redundant clauses in an outer join
+ condition, which is why no one had noticed before.
+</p>
+
+<p>
+- Fix error cleanup failure caused by 8.4 changes in plpgsql to try to
+ avoid memory leakage in error recovery. We were calling
+ FreeExprContext, and therefore invoking ExprContextCallback
+ callbacks, in both normal and error exits from subtransactions.
+ However this isn't very safe, as shown in recent trouble report from
+ Frank van Vugt, in which releasing a tupledesc refcount failed.
+ It's also unnecessary, since the resources that callbacks might wish
+ to release should be cleaned up by other error recovery mechanisms
+ (ie the resource owners). We only really want FreeExprContext to
+ release memory attached to the exprcontext in the error-exit case.
+ So, add a bool parameter to FreeExprContext to tell it not to call
+ the callbacks. A more general solution would be to pass the
+ isCommit bool parameter on to the callbacks, so they could do only
+ safe things during error exit. But that would make the patch
+ significantly more invasive and possibly break third-party code that
+ registers ExprContextCallback callbacks. We might want to do that
+ later in HEAD, but for now I'll just do what seems reasonable to
+ back-patch.
+</p>
+
+<p>
+- Fix a thinko in join_is_legal: when we decide we can implement a
+ semijoin by unique-ifying the RHS and then inner-joining to some
+ other relation, that is not grounds for violating the RHS of some
+ other outer join. Noticed while regression-testing new GEQO code,
+ which will blindly follow any path that join_is_legal says is legal,
+ and then complain later if that leads to a dead end. I'm not
+ certain that this can result in any visible failure in 8.4: the
+ mistake may always be masked by the fact that subsequent attempts to
+ join the rest of the RHS of the other join will fail. But I'm not
+ certain it can't, either, and it's definitely not operating as
+ intended. So back-patch. The added regression test depends on the
+ new no-failures-allowed logic that I'm about to commit in GEQO, so
+ no point back-patching that.
+</p>
+
+<p>
+- Rewrite GEQO's gimme_tree function so that it always finds a legal
+ join sequence, even when the input "tour" doesn't lead directly to
+ such a sequence. The stack logic that was added in 2004 only
+ supported cases where relations that had to be joined to each other
+ (due to join order restrictions) were adjacent in the tour.
+ However, relying on a random search to figure that out is
+ tremendously inefficient in large join problems, and could even fail
+ completely (leading to "failed to make a valid plan" errors) if
+ random_init_pool ran out of patience. It seems better to make the
+ tour-to-plan transformation a little bit fuzzier so that every tour
+ can form a legal plan, even though this means that apparently
+ different tours will sometimes yield the same plan. In the same
+ vein, get rid of the logic that knew that tours (a,b,c,d,...) are
+ the same as tours (b,a,c,d,...), and therefore insisted the latter
+ are invalid. The chance of generating two tours that differ only in
+ this way isn't that high, and throwing out 50% of possible tours to
+ avoid such duplication seems more likely to waste valuable genetic-
+ refinement generations than to do anything useful. This leaves us
+ with no cases in which geqo_eval will deem a tour invalid, so get
+ rid of assorted kluges that tried to deal with such cases, in
+ particular the undocumented assumption that DBL_MAX is an impossible
+ plan cost. This is all per testing of Robert Haas'
+ lets-remove-the-collapse-limits patch. That idea has crashed and
+ burned, at least for now, but we still got something useful out of
+ it. It's possible we should back-patch this change, since the
+ "failed to make a valid plan" error can happen in existing releases;
+ but I'd rather not until it has gotten more testing.
+</p>
+
+<p>
+- Teach simplify_boolean_equality to simplify the forms foo <> true
+ and foo <> false, along with its previous duties of simplifying foo
+ = true and foo = false. (All of these are equivalent to just foo or
+ NOT foo as the case may be.) It's not clear how often this is
+ really useful; but it costs almost nothing to do, and it seems some
+ people think we should be smart about such cases. Per recent bug
+ report.
+</p>
+
+<p>
+- In pgsql/src/bin/psql/describe.c, remove unnecessary and
+ version-sensitive dependence on the exact set of column names to be
+ found in a sequence. Per gripe from Bruce Momjian.
+</p>
+
+<p>
+Heikki Linnakangas committed:
+</p>
+
+<p>
+- In pgsql/contrib/pg_standby/Makefile, pg_standby doesn't need to be
+ linked with libpq. Fujii Masao.
+</p>
+
+<p>
+Andrew Dunstan committed:
+</p>
+
+<p>
+- DROP IF EXISTS for columns and constraints. Andres Freund.
+</p>
+
+<h2>Rejected Patches (for now)</h2>
+<p>
+No one was disappointed this week :-)
+</p>
+
+<h2>Pending Patches</h2>
+<p>
+Heikki Linnakangas sent in two revisions of a patch which helps set up
+index-only scans.
+</p>
+
+<p>
+Robert Haas sent in an updated patch for Hot Standby.
+</p>
+
+<p>
+Petr (PJMODOS) Jelinek sent in three revisions of a patch to add
+DefaultACLs
+<a href="http://wiki.postgresql.org/wiki/DefaultACL">http://wiki.postgresql.org/wiki/DefaultACL</a>
+</p>
+
+<p>
+ITAGAKI Takahiro sent in two revisions of a patch to add FORCE QUOTE
+to COPY...CSV.
+</p>
+
+<p>
+KaiGai Kohei sent in three more revisions of his SE-PostgreSQL patch.
+</p>
+
+<p>
+Jeff Davis sent in another revision of his patch to make more
+generalized constraints.
+</p>
+
+<p>
+Andres Freund sent in a patch to refactor *_collapse_limit and
+geqo_threshold.
+</p>
+
+<p>
+Jaime Casanova sent in a revision of Taro (higepon) Minowa's patch to
+allow pg_dump* to dump comments on commposite-type and index columns.
+</p>
+
+<p>
+ITAGAKI Takahiro sent in an update for the sampling profiler patch.
+</p>
+
+<p>
+Tsutomu Yamada sent in two revisions of a patch to fix the ""could not
+reattach to shared memory" bug on Windows.
+</p>
+
+<p>
+Fujii Masao sent in two more revisions of the Synchronous Replication
+patch.
+</p>
+
+<p>
+Oleg Bartunov sent in a patch which adds prefix support for synonym
+dictionaries in full-text search.
+</p>
+
+<p>
+Oleg Bartunov sent in a patch to add filtering dictionaries and a new
+contrib module, unaccent, which removes accents, using same.
+</p>
+
+<p>
+Sergey V. Karpov sent in a patch which extends the functionality of
+dict_xsyn extended synonym dictionary.
+</p>
+
+<p>
+Fernando Ike de Oliveira sent in two revisions of a patch to add \dL
+for PL languages to psql.
+</p>
+
+<p>
+Zoltan Boszormenyi sent in another revision of his patch set to
+improve ECPG's Informix compatibility layer.
+</p>
+
+<p>
+Tom Lane sent in a WIP patch to make PL/pgsql use the core lexer.
+</p>
+
+<p>
+Caleb Welton sent in another revision of his patch to add bytea to
+PL/PythonU.
+</p>
+
+<p>
+Andrew (RhodiumToad) Gierth sent in another revision of the hstore
+patch with fixes and new tests for some edge case bugs.
+</p>
+
+<p>
+Kevin Grittner sent in a patch to revise parallel pg_restore's
+scheduling heuristic.
+</p>
+
+<p>
+Steve Prentice sent in another revision of the patch to make PL/pgsql
+treat any word following AS as a label.
+</p>
+
+<p>
+Petr (PJMODOS) Jelinek sent in two revisions of a patch to implement
+GRANT ON ALL IN schema.
+</p>
+
+<p>
+Richard Huxton sent in a patch to create a navigation menu for the
+documentation.
+</p>
+
+<p>
+Fujii Masao sent in another revision of the patch to multiplex
+SIGUSR1, which is infrastructure for the Synchronous Replication
+feature.
+</p>
+
+<p>
+Zoltan Boszormenyi sent in a patch to add struct support for SELECT
+INTO to ECPG.
+</p>
+
+<p>
+Peter Eisentraut sent in a patch to make PL/Python use errcontext()
+instead of passing the function names around to use in error messages.
+</p>
+
+<p>
+Alan Li sent in a patch to optimize MIN and MAX queries on partitioned
+tables.
+</p>
+
+<p>
+Andreas Wenk sent in a patch to include the \du+ option in \? output
+in psql.
+</p>
+
+<p>
+Bernd Helmle sent in a revision of Pavel Stehule's patch to allow
+mixed and named notation support for PL/pgsql functions.
+</p>
+
+<p>
+Dean Rasheed sent in another revision of the deferrable UNIQUE
+constraints patch.
+</p>
+
+<p>
+Jeremy Kerr sent in another revision of the patch to avoid manual
+shift-and-test logic in AllocSetFreeIndex.
+</p>
+
+<p>
+Andreas Freund sent in another revision of his patch to allow
+machine-readable EXPLAIN output.
+</p>
+
+<p>
+Andreas Freund sent in two more revisions of his generic EXPLAIN
+options patch.
+
+</p>
+