Subject: == PostgreSQL Weekly News - June 08 2008 ==

From: David Fetter <[email-masked]>
Date: Sun, 8 Jun 2008 20:17:58 -0700

== PostgreSQL Weekly News - June 01 2008 ==

Core has announced the goal of including easy-to-use WAL-based
replication in PostgreSQL.

== PostgreSQL Product News ==

Database .NET 2.1.3071 released.
http://s630417.myweb.hinet.net/

Navicat ver. 7.1.1 released.
http://pgsql.navicat.com/

pgDesigner 1.2.7 Released
http://pgdesigner.sourceforge.net/

pg_proboscis 1.0 released.
http://pgfoundry.org/projects/python/

pgsnap 0.3.3 released.
http://pgfoundry.org/projects/pgsnap/

== PostgreSQL Local ==

The Call for Papers for PgCon.BR is open.  The deadline is May 31, so
get those proposals in.
http://pgcon.postgresql.org.br/chamadas.en.html

PGDay will be in Portland the day before OSCON.
http://pugs.postgresql.org/taxonomy/term/53

Utah Open Source Conference 2008's CfP is open through June 1.
This 2nd annual conference is August 28-30, 2008 in Salt Lake City, UT
http://2008.utosc.com/

PGCon Brazil 2008 will be on September 26-27 at Unicamp in Campinas.
http://pgcon.postgresql.org.br/index.en.html

PGDay.IT 2008 will be October 17 and 18 in Prato.
http://www.pgday.org/it/

== PostgreSQL in the News ==

Planet PostgreSQL: http://www.planetpostgresql.org/

General Bits, Archives and occasional new articles:
http://www.varlena.com/GeneralBits/

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 [email-masked], German language
to [email-masked], Italian language to [email-masked].

== Applied Patches ==

Tom Lane committed:

- In pgsql/src/backend/utils/misc/guc.c, fix an old corner-case bug in
  set_config_option: push_old_value has to be called before, not
  after, calling the assign_hook if any.  This is because
  push_old_value might fail (due to palloc out-of-memory), and in that
  case there would be no stack entry to tell transaction abort to undo
  the GUC assignment.  Of course the actual assignment to the GUC
  variable hasn't happened yet --- but the assign_hook might have
  altered subsidiary state.  Without a stack entry we won't call it
  again to make it undo such actions.  So this is necessary to make
  the world safe for assign_hooks with side effects.  Per a discussion
  a couple weeks ago with Magnus.  Back-patch to 8.0.  7.x did not
  have the problem because it did not have allocatable stacks of GUC
  values.

- Alter the xxx_pattern_ops opclasses to use the regular equality
  operator of the associated datatype as their equality member.  This
  means that these opclasses can now support plain equality
  comparisons along with LIKE tests, thus avoiding the need for an
  extra index in some applications.  This optimization was not
  possible when the pattern opclasses were first introduced, because
  we didn't insist that text equality meant bitwise equality; but we
  do now, so there is no semantic difference between regular and
  pattern equality operators.  I removed the name_pattern_ops opclass
  altogether, since it's really useless: name's regular comparisons
  are just strcmp() and are unlikely to become something different.
  Instead teach indxpath.c that btree name_ops can be used for LIKE
  whether or not the locale is C.  This might lead to a useful speedup
  in LIKE queries on the system catalogs in non-C locales.  The ~=~
  and ~<>~ operators are gone altogether.  (It would have been nice to
  keep them for backward compatibility's sake, but since the pg_amop
  structure doesn't allow multiple equality operators per opclass,
  there's no way.) A not-immediately-obvious incompatibility is that
  the sort order within bpchar_pattern_ops indexes changes --- it had
  been identical to plain strcmp, but is now trailing-blank-insensitive.
  This will impact in-place upgrades, if those ever happen.  Per
  discussions a couple months ago.

- In pgsql/doc/src/sgml/ref/create_type.sgml, clarify description of
  typmod input function, per Jeff Davis.

- Back-patch the 8.3 fix that prohibits TRUNCATE, CLUSTER, and REINDEX
  when the current transaction has any open references to the target
  relation or index (implying it has an active query using the
  relation).  Also back-patch the 8.2 fix that prohibits TRUNCATE and
  CLUSTER when there are pending AFTER-trigger events.  Per suggestion
  from Heikki Linnakangas.

- Require bind_textdomain_codeset() not just gettext() to enable NLS
  support.  GNU gettext before 0.10.36 does not have that function,
  and is generally too incomplete to be usable.

- In pgsql/doc/src/sgml/ref/grant.sgml, improve GRANT documentation to
  point out that UPDATE and DELETE typically require SELECT privilege
  as well, since you normally need to read existing column values
  within such commands.  This behavior is according to spec, but we'd
  never documented it before.  Per gripe from Volkan Yazici.

- In pgsql/src/backend/utils/adt/pg_lzcompress.c, backpatch Zdenek
  Kotala's fix to prevent pglz_decompress from stomping on memory if
  the compressed data is corrupt.  Backpatch as far as 8.2.  The issue
  exists in older branches too, but given the lack of field reports,
  it's not clear it's worth any additional effort to adapt the patch
  to the slightly different code in older branches.

- In pgsql/contrib/cube/cube.c, fix some bugs introduced by the
  8.2-era conversion of cube functions to V1 calling convention.
  cube_inter and cube_distance could attempt to pfree their input
  arguments, and cube_dim returned a value from a struct it might have
  just pfree'd (which would only really cause a problem in a debug
  build, but it's still wrong).  Per bug #4208 and additional code
  reading.  In HEAD and 8.3, I also made a batch of cosmetic changes
  to bring these functions into line with the preferred coding style
  for V1 functions, ie declare and fetch all the arguments at the top
  so readers can easily see what they are.

- Make 8.3.x psql print tab characters as an appropriate number of
  spaces, rather than "\x09".  Before 8.3 we just printed tabs as-is,
  leading to poor formatting of subsequent columns, but consensus is
  that "\x09" is not an improvement over that.  Back-patch of fix
  that's already in HEAD.

- Tweak libpq to avoid crashing due to incorrect buffer size
  calculation when we are on a 64-bit machine (ie, size_t is wider
  than int) and someone passes in a query string that approaches or
  exceeds INT_MAX bytes.  Also, just for paranoia's sake, guard
  against similar overflows in sizing the input buffer.  The backend
  will not in the foreseeable future be prepared to send or receive
  strings exceeding 1GB, so I didn't take the more invasive step of
  switching all the buffer index variables from int to size_t; though
  someday we might want to do that.  I have a suspicion that this is
  not the only such bug in libpq, but this fix is enough to take care
  of the crash reported by Francisco Reyes.

- In pgsql/src/include/catalog/pg_proc.h, improve the documentation
  comment for replace().  Robert Treat

- Copy refint.so and autoinc.so into the src/test/regress directory
  during "make all", and then reference them there during the actual
  tests.  This makes the handling of these files more parallel to that
  of regress.so, and in particular simplifies use of the regression
  tests outside the original build tree.  The PGDG and Red Hat RPMs
  have been doing this via patches for a very long time.  Inclusion of
  the change in core was requested by J?rgen Austvik of Sun, and I
  can't see any reason not to.  I attempted to fix the MSVC scripts
  for this too, but they may need further tweaking ...

- Marginal improvements to the documentation for PGOPTIONS.

- In  pgsql/src/backend/executor/spi.c, refactor
  SPI_cursor_open/SPI_cursor_open_with_args so that the latter sets
  the PARAM_FLAG_CONST flag on the parameters that are passed into the
  portal, while the former's behavior is unchanged.  This should only
  affect the case where the portal is executing an EXPLAIN; it will
  cause the generated plan to look more like what would be generated
  if the portal were actually executing the command being explained.
  Per gripe from Pavel.

- Update time zone data files to tzdata release 2008c (DST law changes
  in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba,
  Argentina/San_Luis).

Magnus Hagander committed:

- In pgsql/src/backend/utils/mb/mbutils.c, explicitly bind gettext()
  to the  UTF8 locale when in use.  This is required on Windows due to
  the special locale handling for UTF8 that doesn't change the full
  environment.  Fixes crash with translated error messages per bugs
  4180 and 4196.  Tom Lane.

- Add a field to guc enums to allow hiding of values from display
  while still accepting them as input, used to allow alternate syntax
  for the same setting.  Alex Hunsaker

- In pgsql/src/backend/access/transam/xlog.c, set hidden field for guc
  enum missed in previous commit.

Bruce Momjian committed:

- Add URL for TODO: "Add deferred trigger queue file."

- In pgsql/doc/src/sgml/external-projects.sgml, update URL for ODBC.

- Add description to TODO: "Add deferred trigger queue file."

Andrew Dunstan committed:

- Mark TODO as done: "Remove psql newline patch when we find out why
  mingw outputs an extra newline."

== Rejected Patches (for now) ==

Jeff Davis's patch to reset scan state at the end of a synchronized
scan.

Davy Durham's patch to allow filtering tables in pg_dump.

== Pending Patches ==

Teodor Sigaev sent patches to extend GIN to include multi-column
indexes and faster INSERTs into GIN-indexed tables.

Zdenek Kotala sent in a patch to clean up some headers in the source
code.

Joe Conway sent in two revisions of a patch to fix a dblink regression
fix in CVS TIP.

---

From: Kevin Hunter <[email-masked]>
Date: Mon, 09 Jun 2008 09:30:38 -0400

> http://pgcon.postgresql.org.br/chamadas.en.html

The PWN looked familiar this week, and then these two bits caught my
attention.  I compared the Weekly news online and it appears that I got
last week's content with this week's subject line.

Just me?

Kevin

---

From: David Fetter <[email-masked]>
Date: Mon, 9 Jun 2008 06:33:08 -0700

> == PostgreSQL Weekly News - June 01 2008 ==

Let's try that again.  Sorry, folks.

== PostgreSQL Weekly News - June 08 2008 ==

PostgreSQL 8.3.3, et al. will be out soon.  Get ready to upgrade!

pgAdmin III 1.8.4 released.
http://www.pgadmin.org/

pgEdit 1.4 released.
http://pgedit.com/

pgloader 2.3.1 released.
http://pgfoundry.org/projects/pgloader/

PL/Proxy 2.0.5 released.
http://pgfoundry.org/projects/plproxy/

SkyTools 2.1.7 released
http://pgfoundry.org/projects/skytools/

== PostgreSQL Jobs for June ==

http://archives.postgresql.org/pgsql-jobs/2008-06/threads.php

== PostgreSQL Local ==

June's LAPUG meeting will be held at California Institute of
Technology. Jaun Jose' Natera will be delivering a presentation on how
PL-Perl can be used in PostgreSQL.
http://pugs.postgresql.org/node/403

The Oklahoma PUG will hold it's first meeting on June 23 from 7:00 to
9:00 pm at Coach's in Norman, OK.
http://pugs.postgresql.org/node/408

PDXPUG Meeting 6/19/08: The Relational Model
http://pugs.postgresql.org/node/399

SFPUG June: Parsers & pgCon
http://pugs.postgresql.org/node/403

== Applied Patches ==

Tom Lane committed:

- In pgsql/src/bin/initdb/initdb.c, fix initdb to reject a relative
  path for -X (--xlogdir) argument.  This doesn't work, and the real
  reason why not is it's unclear where the path is relative to
  (initdb's CWD, or the data directory?).  We could make an arbitrary
  decision, but it seems best to make the user be unambiguous.  Per
  gripe from Devrim.

- In pgsql/src/interfaces/ecpg/ecpglib/prepare.c, remove unused
  variable (was already done in HEAD).

- In pgsql/doc/src/sgml/release.sgml, draft release notes for upcoming
  back-branch updates.

- In pgsql/src/backend/utils/adt/ruleutils.c, fix pg_get_ruledef() so
  that negative numeric constants are parenthesized.  This is needed
  because :: casting binds more tightly than minus, so for example
  -1::integer is not the same as (-1)::integer, and there are cases
  where the difference is important.  In particular this caused a
  failure in SELECT DISTINCT ... ORDER BY ... where expressions that
  should have matched were seen as different by the parser; but I
  suspect that there could be other cases where failure to
  parenthesize leads to subtler semantic differences in reloaded
  rules.  Per report from Alexandr Popov.

- In pgsql/doc/src/sgml/release.sgml, update release notes for 8.3.3
  et al.

Michael Meskes committed:

- In ecpg, added lost sysmbol SQL_SQL to list of allowed variable
  names.

- In ecpg, added symbol SQL to list of allowed variables.

Alvaro Herrera committed:

- Change xlog.h to xlogdefs.h in bufpage.h, and fix fallout.

No one was disappointed this week :-)

== Pending Patches ==

Joe Conway sent in another revision of his patch to fix dblink
performance regression.

Davy Durham sent in another revision of his patch to allow pg_dump to
add WHERE clauses to -t/--table arguments.

Heikki Linnakangas sent in another revision of his map forks patch.

Jan Urbanski sent in another revision of his patch, which extends
VacAttrStats to allow typanalyze functions to store statistic values
as a type different from that of the underlying column.

Pavel Stehule sent in another version of his patch which adds RETURNS
TABLE functionality per SQL:2003.

Teodor Sigaev sent in another revision of his patch to speed up write
operations on GIN indexes.

Pavel Stehule sent in a patch implementing an array_fill() function to
initialize arrays with data.

Tom Lane sent in a patch which fixes DROP recursion and makes it
faster at the cost of some memory.
-- 
David Fetter <[email-masked]> http://fetter.org/
Phone: +1 415 235 3778  AIM: dfetter666  Yahoo!: dfetter
Skype: davidfetter      XMPP: [email-masked]

Remember to vote!
Consider donating to Postgres: http://www.postgresql.org/about/donate

---

From: David Fetter <[email-masked]>
Date: Mon, 9 Jun 2008 06:34:55 -0700

> last week's content with this week's subject line.

Not just you.  Thanks for the heads-up :)

Cheers,
David.

Remember to vote!