Skip site navigation (1) Skip section navigation (2)

== PostgreSQL Weekly News - October 16 2011 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - October 16 2011 ==
Date: 2011-10-17 06:35:50
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-announce
== PostgreSQL Weekly News - October 16 2011 ==

== PostgreSQL Product News ==

/Devart's PgDAC 3.00 and dbExpress Driver for PostgreSQL 2.0 released.

MyJSQLView 3.31, a GUI tool that can be used with PostgreSQL, released.

pgpoolAdmin 3.1.0, an administration tool for pgpool-II, released.

Postgres-XC 0.9.6, a multi-master system based on PostgreSQL, released.

== PostgreSQL Jobs for October ==

== PostgreSQL Local ==

PostgreSQL Conference Europe 2011 will be held on October 18-21 in

PG-Day Denver 2011 will be held on Friday, October 21st, 2011 at
the Auraria Campus near downtown Denver, Colorado.

pgbr will be in Sao Paulo, Brazil November 3-4, 2011.

PGConf.DE 2011, the German-speaking PostgreSQL Conference, will
take place on November 11th in the Rheinisches Industriemuseum in
Oberhausen, Germany.  The schedule is now available, and registration
is open.

The fifth edition of the Italian PostgreSQL Day (PGDay.IT 2011) will
be held on November 25, 2011 in Prato, Italy.

The Call for Papers for is open for FLOSS UK, which will be held in
Edinburgh from the 20th to the 22nd March 2012.  The deadline for
proposals is the 18th November 2011 and selected speakers will be
notified by the 25th November 2011.  Proposals should be submitted to
postgresql2012 AT flossuk DOT org.  More information at:

== PostgreSQL in the News ==

Planet PostgreSQL:

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 david(at)fetter(dot)org, German language
to pwn(at)pgug(dot)de, Italian language to pwn(at)itpug(dot)org(dot)  Spanish language
to pwn(at)arpug(dot)com(dot)ar(dot)

== Reviews ==

== Applied Patches ==

Bruce Momjian pushed:

- In pg_upgrade, add -o/-O options to pass parameters to the servers,
  and document its use for config-only directory installs.

- Mark GUC external_pid_file's default as '' in postgresql.conf,
  rather than '(none)'.

- Document that not backing up and postmaster.opts
  might help prevent pg_ctl from getting confused.  Backpatch to 9.1.

- Improve entab's Makefile install entry.  Andrew Dunstan

- Add Up/Home link to the top of the HTML doc output.  Backpatch to
  9.0.X and 9.1.X.

- Modify up/home macro to match standard parameter list;  fixes doc

- Modify pgindent to use a renamed pg_bsd_indent binary.  New features
  include the ability to supply a typedef file, rather than list them
  on the command line.  Also improve the README.

- Modify RelationGetBufferForTuple() to use a typedef, rather than a
  struct, to help pgindent.

- Clarify wording of foreign key documentation to mention null entries
  as not matching the primary key.  Report from Grzegorz Szpetkowski.

- Document how to accent Alvaro Herrera in the release notes.

- Remove tab in sgml file.

- Document who can drop a table (owner and user with permissions).

- Have pg_ctl return an exit status of 3 if the server is not running,
  to match the Linux Standard Base Core Specification 3.1.  Aaron W.

- Update documentation about ts_rank().

- Remove all "traces" of trace_userlocks, because userlocks were
  removed in PG 8.2.

- Document actual string that has to be returned by the client for MD5
  authentication.  Report and pseudo code by Cyan Ogilvie

- Allow a major PG version psql .psqlrc file to be used if a minor
  matching version file does not exist.  This avoids needing to rename
  .psqlrc files after minor version upgrades.

- Improve doc wording of drop table permission.

- Document that is the psql version number, not the server version
  number, that controls .psqlrc.

Robert Haas pushed:

- Attempt to reduce locale dependencies in regression tests.  This
  appears to be another case where the relative sort order of letters
  vs. numbers can throw things off.  Pavel Stehule

- Some minor wordsmithing for the cascading replication documentation.
  Per report from Thom Brown.

- Document DELETE/UPDATE command tag behavior when triggers are
  involved.  Marti Raudsepp

- Add doc index entry for pg_resetxlog.  Fujii Masao

- Fix typo in docs for libpq keepalives_count option.  Shigehiro Honda

- Improve documentation of how to fiddle with SCSI drives on FreeBSD.
  Per suggestions from Achilleas Mantzios and Greg Smith.

- Make the reference to "CREATE USER" in the CREATE ROLE page a link.
  This might help to avoid confusion between the CREATE USER command,
  and the deprecated CREATEUSER option to CREATE ROLE, as per a recent
  complaint from Ron Adams.  At any rate, having a cross-link here
  seems like a good idea; two commands that are so similar should
  reference each other.

- Repair breakage in VirtualXactLock.  I broke this in commit
  84e37126770dd6de903dad88ce150a49b63b5ef9.  Report and fix by Fujii

- Replace hardcoded switch in object_exists() with a lookup table.
  There's no particular advantage to this change on its face; indeed,
  it's possible that this might be slightly slower than the old way.
  But it makes this information more easily accessible to other
  functions, and therefore paves the way for future code
  consolidation.  Performance isn't critical here, so there's no need
  to be smart about how we do the search.  This is a heavily cut-down
  version of a patch from KaiGai Kohei, with several fixes by me.
  Additional review from Dimitri Fontaine.

- Avoid potential relcache leak in objectaddress.c.  Nobody using the
  missing_ok flag yet, but let's speculate that this will be a better
  interface for future callers.  KaiGai Kohei, with some adjustments
  by me.

- Dump all roles first, then all config settings on roles.  This way,
  if a role's config setting uses the name of another role, the
  validity of the dump isn't dependent on the order in which those two
  roles are dumped.  Code by Phil Sorber, comment by me.

Tom Lane pushed:

- Rearrange the implementation of index-only scans.  This commit
  changes index-only scans so that data is read directly from the
  index tuple without first generating a faux heap tuple.  The only
  immediate benefit is that indexes on system columns (such as OID)
  can be used in index-only scans, but this is necessary
  infrastructure if we are ever to support index-only scans on
  expression indexes.  The executor is now ready for that, though the
  planner still needs substantial work to recognize the possibility.
  To do this, Vars in index-only plan nodes have to refer to index
  columns not heap columns.  I introduced a new special varno,
  INDEX_VAR, to mark such Vars to avoid confusion.  (In passing, this
  commit renames the two existing special varnos to OUTER_VAR and
  INNER_VAR.)  This allows ruleutils.c to handle them with logic
  similar to what we use for subplan reference Vars.  Since index-only
  scans are now fundamentally different from regular indexscans so far
  as their expression subtrees are concerned, I also chose to change
  them to have their own plan node type (and hence, their own executor
  source file).

- Consider index-only scans even when there is no matching qual or
  ORDER BY.  By popular demand.

- Generate index-only scan tuple descriptor from the plan node's
  indextlist.  Dept. of second thoughts: as long as we've got that
  tlist hanging around anyway, we can apply ExecTypeFromTL to it to
  get a suitable descriptor for the ScanTupleSlot.  This is a nicer
  solution than the previous one because it eliminates some hard-wired
  knowledge about btree name_ops, and because it avoids the somewhat
  shaky assumption that we needn't set up the scan tuple descriptor in
  EXPLAIN_ONLY mode.  It doesn't change what actually happens at
  run-time though, and I'm still a bit nervous about that.

- Add comment on why pulling data from a "name" index column can't
  crash.  It's been bothering me for several days that pretending that
  the cstring data stored in a btree name_ops column is really a
  "name" Datum could lead to reading past the end of memory.  However,
  given the current memory layout used for index-only scans in the
  btree code, a crash is in fact not possible.  Document that so we
  don't break it.  I have not thought of any other solutions that
  aren't fairly ugly too, and most of them lose the functionality of
  index-only scans on name columns altogether, so this seems like the
  way to go.

- Improve documentation of psql's \q command.  The documentation
  neglected to explain its behavior in a script file (it only ends
  execution of the script, not psql as a whole), and failed to mention
  the long form \quit either.

- Throw a useful error message if an extension script file is fed to
  psql.  We have seen one too many reports of people trying to use 9.1
  extension files in the old-fashioned way of sourcing them in psql.
  Not only does that usually not work (due to failure to substitute
  for MODULE_PATHNAME and/or @extschema@), but if it did work they'd
  get a collection of loose objects not an extension.  To prevent
  this, insert an \echo ...  \quit line that prints a suitable error
  message into each extension script file, and teach
  commands/extension.c to ignore lines starting with \echo.  That
  should not only prevent any adverse consequences of loading a script
  file the wrong way, but make it crystal clear to users that they
  need to do it differently now.  Tom Lane, following an idea of
  Andrew Dunstan's.  Back-patch into 9.1 ... there is not going to be
  much value in this if we wait till 9.2.

- Don't mark auto-generated types as extension members.  Relation
  rowtypes and automatically-generated array types do not need to have
  their own extension membership dependency entries.  If we create
  such then it becomes more difficult to remove items from an
  extension, and it's also harder for an extension upgrade script to
  make sure it duplicates the dependencies created by the extension's
  regular installation script.  I changed the code in such a way that
  this happened in commit 988cccc620dd8c16d77f88ede167b22056176324, I
  think because of worries about the shell-type-replacement case; but
  that cure was worse than the disease.  It would only matter if one
  extension created a shell type that was replaced with an
  auto-generated type in another extension, which seems pretty
  far-fetched.  Better to make this work unsurprisingly in normal
  cases.  Report and patch by Robert Haas, comment adjustments by me.

- Fix typo in dummy_seclabel documentation.  dummy_label ->
  dummy_seclabel.  Thom Brown

- Fix up Perl-to-Postgres datatype conversions in pl/perl.  This patch
  restores the pre-9.1 behavior that pl/perl functions returning VOID
  ignore the result value of their last Perl statement.  9.1.0
  unintentionally threw an error if the last statement returned a
  reference, as reported by Amit Khandekar.  Also, make sure it works
  to return a string value for a composite type, so long as the string
  meets the type's input format.  We already allowed the equivalent
  behavior for arrays, so it seems inconsistent to not allow it for
  composites.  In addition, ensure we throw errors for attempts to
  return arrays or hashes when the function's declared result type is
  not an array or composite type, respectively.  Pre-9.1 versions
  rather uselessly returned strings like ARRAY(0x221a9a0) or
  HASH(0x221aa90), while 9.1.0 threw an error for the hash case and
  returned a garbage value for the array case.  Also, clean up
  assorted grotty coding in Perl array conversion, including use of a
  session-lifespan memory context to accumulate the array value
  (resulting in session-lifespan memory leak on error), failure to
  apply the declared typmod if any, and failure to detect some cases
  of non-rectangular multi-dimensional arrays.  Alex Hunsaker and Tom

- Measure the number of all-visible pages for use in index-only scan
  costing.  Add a column pg_class.relallvisible to remember the number
  of pages that were all-visible according to the visibility map as of
  the last VACUUM (or ANALYZE, or some other operations that update
  pg_class.relpages).  Use relallvisible/relpages, instead of an
  arbitrary constant, to estimate how many heap page fetches can be
  avoided during an index-only scan.  This is pretty primitive and
  will no doubt see refinements once we've acquired more field
  experience with the index-only scan mechanism, but it's way better
  than using a constant.  Note: I had to adjust an underspecified
  query in the window.sql regression test, because it was changing
  answers when the plan changed to use an index-only scan.  Some of
  the adjacent tests perhaps should be adjusted as well, but I didn't
  do that here.

- Measure the number of all-visible pages for use in index-only scan
  costing.  Add a column pg_class.relallvisible to remember the number
  of pages that were all-visible according to the visibility map as of
  the last VACUUM (or ANALYZE, or some other operations that update
  pg_class.relpages).  Use relallvisible/relpages, instead of an
  arbitrary constant, to estimate how many heap page fetches can be
  avoided during an index-only scan.  This is pretty primitive and
  will no doubt see refinements once we've acquired more field
  experience with the index-only scan mechanism, but it's way better
  than using a constant.  Note: I had to adjust an underspecified
  query in the window.sql regression test, because it was changing
  answers when the plan changed to use an index-only scan.  Some of
  the adjacent tests perhaps should be adjusted as well, but I didn't
  do that here.

- Fix bugs in information_schema.referential_constraints view.  This
  view was being insufficiently careful about matching the FK
  constraint to the depended-on primary or unique key constraint.
  That could result in failure to show an FK constraint at all, or
  showing it multiple times, or claiming that it depended on a
  different constraint than the one it really does.  Fix by joining
  via pg_depend to ensure that we find only the correct dependency.
  Back-patch, but don't bump catversion because we can't force initdb
  in back branches.  The next minor-version release notes should
  explain that if you need to fix this in an existing installation,
  you can drop the information_schema schema then re-create it by
  sourcing $SHAREDIR/information_schema.sql in each database (as a
  superuser of course).

- Marginal improvements to documentation of plpgsql's OPEN cursor
  statement.  Rearrange text to improve clarity, and add an example of
  implicit reference to a plpgsql variable in a bound cursor's query.
  Byproduct of some work I'd done on the "named cursor parameters"
  patch before giving up on it.

- Teach btree to handle ScalarArrayOpExpr quals natively.  This allows
  "indexedcol op ANY(ARRAY[...])" conditions to be used in plain
  indexscans, and particularly in index-only scans.

- Fix collate.linux.utf8 expected output for recent error message
  change.  Noted by Jeff Davis.

- Avoid assuming that index-only scan data matches the index's
  rowtype.  In general the data returned by an index-only scan should
  have the datatypes originally computed by FormIndexDatum.  If the
  index opclasses use "storage" datatypes different from their input
  datatypes, the scan tuple will not have the same rowtype attributed
  to the index; but we had a hard-wired assumption that that was true
  in nodeIndexonlyscan.c.  We'd already hacked around the issue for
  the one case where the types are different in btree indexes (btree
  name_ops), but this would definitely come back to bite us if we ever
  implement index-only scans in GiST.  To fix, require the index AM to
  explicitly provide the tupdesc for the tuple it is returning.  btree
  can just pass back the index's tupdesc, but GiST will have to work
  harder when and if it supports index-only scans.  I had previously
  proposed fixing this by allowing the index AM to fill the scan tuple
  slot directly; but on reflection that seemed like a module layering
  violation, since TupleTableSlots are creatures of the executor.  At
  least in the btree case, it would also be less efficient, since the
  tuple deconstruction work would occur even for rows later found to
  be invisible to the scan's snapshot.

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Fujii Masao sent in another revision of the patch to unite
recovery.conf and postgresql.conf.

Jun Ishiduka sent in four more revisions of the patch to allow taking
a base backup from a hot standby.

Kyotaro HORIGUCHI sent in another revision of the patch to fix the
issue where make_greater_string() does not return a string in some

KaiGai Kohei sent in another revision of the patch to rework DROP to
use a unified infrastructure.

Heikki Linnakangas and Jeff Davis traded new revisions of the patch to
add range types.

Fujii Masao sent in another revision of a patch to fix some conditions
wich can cause loss of transactions in streaming replication.

Willy-Bas Loos sent in a patch to make it possible to record
automatically the time a table is created.

Florian Pflug sent in a patch to fix an issue in walsender when
calling out to do_pg_stop_backup.

Alexander Korotkov sent in another revision of the patch to collect
frequency statistics for arrays.

Jan Urbanski sent in a patch implementing the usage of SPI cursors in

Kerem Kat sent in another revision of a patch adding CORRESPONDING set

pgsql-announce by date

Next:From: SQL Maestro GroupDate: 2011-10-17 13:41:25
Subject: PostgreSQL Data Sync released (new software)
Previous:From: Tatsuo IshiiDate: 2011-10-15 12:01:01
Subject: Re: pgpoolAdmin 3.1.0 released

Privacy Policy | About PostgreSQL
Copyright © 1996-2017 The PostgreSQL Global Development Group