Skip to content

Wöchentlicher PostgreSQL Newsletter - 09. Oktober 2011

Der Originalartikel befindet sich unter:

== Wöchentlicher PostgreSQL Newsletter - 09. Oktober 2011 ==

Die PostgreSQL Konferenz Europa findet vom 18. bis 21. Oktober
in Amsterdam statt. Registrierung ist weiterhin möglich.

== PostgreSQL Produkt Neuigkeiten ==

devart dotConnect 5.50 für PostgreSQL, ein
ADO.NET Treiber, ist erschienen.

ODB 1.6.0, ein ORM für C++, unterstützt PostgreSQL.

pgwatch 1.0, ein Browserbasiertes Monitoring Werkzeug
für PostgreSQL, ist erschienen.

phpPgAdmin 5.0.3, ein webbasiertes Administrationstool für
PostgreSQL, ist erschienen.

== PostgreSQL Jobs im Oktober ==

== PostgreSQL Lokal ==

PostgreSQL Conference Europe 2011 findet vom 18. bis
21. Oktober in Amsterdam statt.

PG-Day Denver 2011 findet am Freitag, dem 21. Oktober 2011 auf dem
Auraria Campus in der Nähe von Downtown Denver, Colorado statt.

pgbr findet in Sao Paulo, Brazilien, am 3. und 4. November 2011 statt.

PGConf.DE 2011 ist die Deutschsprachige PostgreSQL Konferenz
und wird am 11. November 2011 im Rheinischen Industriemuseum
in Oberhausen, Deutschland, stattfinden. Der Call for Papers ist offen.

Die fünfte Edition des Italienischen PostgreSQL
Tags (PGDay.IT 2011) findet am 25. November in
Prato, Italien statt.

Der Call for Papers für die FLOSS UK ist offen, die Veranstaltung
findet in Edinburgh vom 20. bis 22. März 2012 statt. Der
Einsendeschluß für Einreichungen ist der 18. November 2011,
ausgewählte Sprecher werden bis zum 25. November benachrichtigt.
Einreichungen sollen an postgresql2012 AT flossuk DOT org gehen.
Mehr Informationen:

== PostgreSQL in den News ==

Planet PostgreSQL:

Dieser wöchentliche PostgreSQL Newsletter wurde erstellt von David Fetter.

Sende Neuigkeiten und Ankündigungen bis Sonntag, 15 Uhr Pazifischer
Zeit. Bitte sende englische Beiträge an, deutsche an, italienische an, spanische an

== Reviews ==

== Angewandte Patches ==

Tom Lane pushed:

- ProcedureCreate neglected to record dependencies on default
  expressions.  Thus, an object referenced in a default expression
  could be dropped while the function remained present.  This was
  unaccountably missed in the original patch to add default parameters
  for functions.  Reported by Pavel Stehule.

- Remove the custom_variable_classes parameter.  This variable
  provides only marginal error-prevention capability (since it can
  only check the prefix of a qualified GUC name), and the consensus is
  that that isn't worth the amount of hassle that maintaining the
  setting creates for DBAs.  So, let's just remove it.  With this
  commit, the system will silently accept a value for any qualified
  GUC name at all, whether it has anything to do with any known
  extension or not.  (Unqualified names still have to match known
  built-in settings, though; and you will get a WARNING at extension
  load time if there's an unrecognized setting with that extension's
  prefix.) There's still some discussion ongoing about whether to
  tighten that up and if so how; but if we do come up with a solution,
  it's not likely to look anything like custom_variable_classes.

- Remember the source GucContext for each GUC parameter.  We used to
  just remember the GucSource, but saving GucContext too provides a
  little more information --- notably, whether a SET was done by a
  superuser or regular user.  This allows us to rip out the fairly
  dodgy code that define_custom_variable used to use to try to infer
  the context to re-install a pre-existing setting with.  In
  particular, it now works for a superuser to SET a extension's SUSET
  custom variable before loading the associated extension, because GUC
  can remember whether the SET was done as a superuser or not.  The
  plperl regression tests contain an example where this is useful.

- Add sourcefile/sourceline data to EXEC_BACKEND GUC transmission
  files.  This oversight meant that on Windows, the pg_settings view
  would not display source file or line number information for values
  coming from postgresql.conf, unless the backend had received a
  SIGHUP since starting.  In passing, also make the error detection in
  read_nondefault_variables a tad more thorough, and fix it to not
  lose precision on float GUCs (these changes are already in HEAD as
  of my previous commit).

- Fix uninitialized-variable bug.

- Improve define_custom_variable's handling of pre-existing settings.
  Arrange for any problems with pre-existing settings to be reported
  as WARNING not ERROR, so that we don't undesirably abort the loading
  of the incoming add-on module.  The bad setting is just discarded,
  as though it had never been applied at all.  (This requires a change
  in the API of set_config_option.  After some thought I decided the
  most potentially useful addition was to allow callers to just pass
  in a desired elevel.) Arrange to restore the complete stacked state
  of the variable, rather than cheesily reinstalling only the active
  value.  This ensures that custom GUCs will behave unsurprisingly
  even when the module loading operation occurs within nested
  subtransactions that have changed the active value.  Since a module
  load could occur as a result of, eg, a PL function call, this is not
  an unlikely scenario.

- Improve and simplify CREATE EXTENSION's management of GUC variables.
  CREATE EXTENSION needs to transiently set search_path, as well as
  client_min_messages and log_min_messages.  We were doing this by the
  expedient of saving the current string value of each variable, doing
  a SET LOCAL, and then doing another SET LOCAL with the previous
  value at the end of the command.  This is a bit expensive though,
  and it also fails badly if there is anything funny about the
  existing search_path value, as seen in a recent report from Roger
  Niederland.  Fortunately, there's a much better way, which is to
  piggyback on the GUC infrastructure previously developed for
  functions with SET options.  We just open a new GUC nesting level,
  do our assignments with GUC_ACTION_SAVE, and then close the nesting
  level when done.  This automatically restores the prior settings
  without a re-parsing pass, so (in principle anyway) there can't be
  an error.  And guc.c still takes care of cleanup in event of an
  error abort.  The CREATE EXTENSION code for this was modeled on some
  much older code in ri_triggers.c, which I also changed to use the
  better method, even though there wasn't really much risk of failure
  there.  Also improve the comments in guc.c to reflect this
  additional usage.

- Support index-only scans using the visibility map to avoid heap
  fetches.  When a btree index contains all columns required by the
  query, and the visibility map shows that all tuples on a target heap
  page are visible-to-all, we don't need to fetch that heap page.
  This patch depends on the previous patches that made the visibility
  map reliable.  There's a fair amount left to do here, notably trying
  to figure out a less chintzy way of estimating the cost of an
  index-only scan, but the core functionality seems ready to commit.
  Robert Haas and Ibrar Ahmed, with some previous work by Heikki

- Fix brain fade in cost estimation for index-only scans.
  visibility_fraction should not be applied to regular indexscans.
  Noted by Cédric Villemain.

- Note that index-only scans can affect idx_tup_fetch.  An index-only
  scan that avoids heap fetches will increment idx_tup_read but not

- Prevent index-only scans in stats regression test.  This bollixes
  the test because it's expecting to see the idx_tup_fetch counter
  increase, which won't happen if heap fetches were avoided by use of
  an index-only scan.  Per buildfarm results.  While at it, let's just
  make sure that enable_seqscan and enable_indexscan are ON for this
  test ...

- Improve index-only scans to avoid repeated access to the index page.
  We copy all the matched tuples off the page during _bt_readpage,
  instead of expensively re-locking the page during each subsequent
  tuple fetch.  This costs a bit more local storage, but not more than
  2*BLCKSZ worth, and the reduction in LWLock traffic is certainly
  worth that.  What's more, this lets us get rid of the API wart in
  the original patch that said an index AM could randomly decline to
  supply an index tuple despite having asserted pg_am.amcanreturn.
  That will be important for future improvements in the
  index-only-scan feature, since the executor will now be able to rely
  on having the index data available.

Alvaro Herrera pushed:

- Use callbacks in SlruScanDirectory for the actual action.
  Previously, the code assumed that the only possible action to take
  was to delete files behind a certain cutoff point.  The async notify
  code was already a crock: it used a different "pagePrecedes"
  function for truncation than for regular operation.  By allowing it
  to pass a callback to SlruScanDirectory it can do cleanly exactly
  what it needs to do.  The clog.c code also had its own use for
  SlruScanDirectory, which is made a bit simpler with this.

Bruce Momjian pushed:

- Explain COALESCE example in the docs.

- Change wording for COALESCE docs to use "otherwise".  Per Tom Lane

- Add postmaster -C option to query configuration parameters, and have
  pg_ctl use that to query the data directory for config-only
  installs.  This fixes awkward or impossible pg_ctl operation for
  config-only installs.

- Simplify new pg_ctl newline termination code.

- Move pg_upgrade doc mention of the port numbers to the same place.

- In pg_upgrade, improve popen() failure detection by checking for
  fgets() failures.

- In pg_upgrade, use the new postmaster -C option to get the real data
  directory, for config-only directory installs.  Only works for PG
  9.2+ servers.

Heikki Linnakangas pushed:

- Replace the "New Linear" GiST split algorithm for boxes and points
  with a new double-sorting algorithm. The new algorithm produces
  better quality trees, making searches faster.  Alexander Korotkov

- Don't let transform_null_equals=on affect CASE foo WHEN NULL ...
  constructs.  transform_null_equals is only supposed to affect "foo =
  NULL" expressions given directly by the user, not the internal "foo
  = NULL" expression generated from CASE-WHEN.  This fixes bug #6242,
  reported by Sergey. Backpatch to all supported branches.

- Clean up a couple of box gist helper functions.  The original idea
  of this patch was to make box picksplit run faster, by eliminating
  unnecessary palloc() overhead, but that was obsoleted by the new
  double-sorting split algorithm that doesn't call these functions so
  heavily anymore. Nevertheless, the code looks better this way.
  Original patch by me, reviewed and tidied up after the
  double-sorting patch by Kevin Grittner.

Robert Haas pushed:

- Make pgstatindex respond to cancel interrupts.  A similar problem
  for pgstattuple() was fixed in April of 2010 by commit
  33065ef8bc52253ae855bc959576e52d8a28ba06, but pgstatindex() seems to
  have been overlooked.  Back-patch all the way, as with that commit,
  though not to 7.4 through 8.1, since those are now EOL.

- Try to fix memory barriers on x86_64.  %esp is no good; must use
  %rsp there.

- Add missing space.  Dickson S. Guedes

- Fix typo.

- Revert accidental change to pg_config_manual.h.  This was broken in
  commit 53dbc27c62d8e1b6c5253feba04a5094cb8fe046, which introduced
  unlogged tables.  Fortunately, as debugging tools go, this one is
  pretty cheap, which is probably why it took nine months for someone
  to notice, but it's not intended to be enabled by default, so
  revert.  Noted by Fujii Masao.

- Fix ALTER TABLE ONLY .. DROP CONSTRAINT.  When I consolidated two
  copies of the HOT-chain search logic in commit
  4da99ea4231e3d8bbf28b666748c1028e7b7d665, I introduced a behavior
  change: the old code wouldn't necessarily traverse the entire chain,
  if the most recently returned tuple were updated while the HOT chain
  traversal is in progress.  The new behavior seems more correct, but
  unfortunately, the code here relies on a scan with SnapshotNow
  failing to see its own updates.  That seems pretty shaky even with
  the old HOT chain traversal behavior, since there's no guarantee
  that these updates will always be HOT, but it's trivial to broke a
  failure with the new HOT search logic.  Fix by updating just the
  first matching pg_constraint tuple, rather than all of them, since
  there should be only one anyway.  But since nobody has reproduced
  this failure on older versions, no back-patch for now.  Report and
  test case by Alex Hunsaker; tablecmds.c changes by me.

Magnus Hagander pushed:

- Ensure walsenders can be SIGTERMed while in non-walsender code.  In
  order to exit on SIGTERM when in non-walsender code, such as
  do_pg_stop_backup(), we need to set the interrupt variables that are
  used there, and not just the walsender local ones.

== Abgelehnte Patches (bis jetzt) ==

No one was disappointed this week :-)

== Eingesandte Patches ==

Simon Riggs sent in two more revisions of the patch to separate
checkpointing and background writing into distinct components.

Royce Ausburn sent in two revisions of a patch to enable monitoring
unremovable tuples.

Heikki Linnakangas sent in another revision of a patch to fix some
socket issues on HP-UX.

Fujii Masao sent in another revision of a patch to fix a bug in

Fujii Masao sent in another revision of a patch to add a
pg_last_xact_insert_timestamp column.

Alex Hunsaker sent in two more revisions of a patch to do some
encoding checking for PL/Perl inputs.

Pavel Stehule sent in a patch which returns the number of rows
processed by COPY.

KaiGai Kohei sent in two more revisions of the patch to rework DROP
into a single framework.

Pavel Stehule sent in two revisions of a patch to implement CHECK

Alex Hunsaker sent in two more revisions of a patch to allow
non-inheritable CHECK constraints.

Alex Hunsaker and Robert Haas traded revisions of a patch to fix ALTER

Marti Raudsepp sent in another revision of a patch to log crashed

Kyotaro HORIGUCHI sent in a patch to endure that make_greater_string()
returns a string.

Simon Riggs sent in two revisions of a patch to prevent duplicate

Etsuro Fujita sent in another revision of a patch to collect
statistics on foreign tables.

Yeb Havinga sent in another revision of a patch that enables cursors
with named parameters.

Julien Tachoires sent in a WIP patch which enables moving TOAST tables
to a different tablespace.

Kevin Grittner sent in another revision of the patch to optimize

KaiGai Kohei sent in another revision of the patch to fix some leaks
in VIEWs.

Jun Ishiduka sent in another revision of the patch to allow creating a
backup from a hot standby.


No Trackbacks


Display comments as Linear | Threaded

No comments

Add Comment

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.
E-Mail addresses will not be displayed and will only be used for E-Mail notifications.
To leave a comment you must approve it via e-mail, which will be sent to your address after submission.
Form options