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

== Wöchentlicher PostgreSQL Newsletter - 20. November 2011 ==

From: Andreas 'ads' Scherbaum <adsmail(at)wars-nicht(dot)de>
To: "pgsql-de-allgemein(at)postgresql(dot)org" <pgsql-de-allgemein(at)postgresql(dot)org>
Cc: "pgusers(at)postgres(dot)de" <pgusers(at)postgres(dot)de>
Subject: == Wöchentlicher PostgreSQL Newsletter - 20. November 2011 ==
Date: 2011-11-21 21:02:08
Message-ID: (view raw or flat)
Lists: pgsql-de-allgemein
Der Originalartikel befindet sich unter:

== Wöchentlicher PostgreSQL Newsletter - 20. November 2011 ==

FOSDEM 2012 - PostgreSQL Devroom: Call for Speakers ist bis zum
20. Dezember 2011 offen.

== PostgreSQL Produkt Neuigkeiten ==

plpgsql_lint Beta erschienen.

== PostgreSQL Jobs im November ==

== PostgreSQL Lokal ==

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

Der Call for Papers ist offen für PostgreSQL Session #3,
welche am 2. Februar 2012 in Paris stattfindet. Der Einsendeschluß
ist der 30. November 2011, die ausgewählten Sprecher werden bis
zum 14. Dezember 2011 informiert. Vorträge (in Französisch oder
Englisch) sollen an call-for-paper AT postgresql-sessions DOT org
geschickt werden. Mehr Informationen unter:

Die fünfte jährliche "Prager PostgreSQL Entwickler Tag" Konferenz,
welche von CSPUG (Tschechische und Slovakische PostgreSQL 
Anwendergruppe) organisiert wird, findet am 9. Februar 2012 in Prag 
statt. Der Call for Papers ist jetzt offen.
Bitte senden Sie ihre Einreichungen zusammen mit Kontaktinformationen, 
Topic und vorgesehener Länge des Vortrags an info AT p2d2 DOT cz.

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 david(at)fetter(dot)org, deutsche an
pwn(at)pgug(dot)de, italienische an pwn(at)itpug(dot)org, spanische an pwn(at)arpug(dot)com(dot)ar(dot)

== Reviews ==

== Angewandte Patches ==

Bruce Momjian pushed:

- Run pgindent on range type files, per request from Tom Lane.

- Rerun pgindent with updated typedef list.

- Remove pg_upgrade function no longer called

- Fix pg_upgrade's pg_scandir_internal() to properly handle a NULL
   pattern, which is used on PG 9.1 and HEAD (but not pre-9.1).  Fixes
   crash on Windows.  Backpatched to 9.1.  Reported by Mark Dilger

- Fix pg_upgrade's pg_scandir_internal() the right way.  Backpatch to

- Remove scandir() requirement in pg_upgrade;  instead just use
   readdir() --- we were not using the scandir pattern filtering
   anyway.  This also removes the scandir requirement in configure.

Tom Lane pushed:

- Fix copyright notices, other minor editing in new range-types code.
   No functional changes in this commit (except I could not resist the
   temptation to re-word a couple of error messages).  This is just
   manual cleanup after pgindent to make the code look reasonably like
   other PG code, in preparation for more detailed code review to come.

- Return FALSE instead of throwing error for comparisons with empty
   ranges.  Change range_before, range_after, range_adjacent to return
   false rather than throwing an error when one or both input ranges
   are empty.  The original definition is unnecessarily difficult to
   use, and also can result in undesirable planner failures since the
   planner could try to compare an empty range to something else while
   deriving statistical estimates.  (This was, in fact, the cause of
   repeatable regression test failures on buildfarm member jaguar, as
   well as intermittent failures elsewhere.) Also tweak rangetypes
   regression test to not drop all the objects it creates, so that the
   final state of the regression database contains some rangetype
   objects for pg_dump testing.

- Return NULL instead of throwing error when desired bound is not
   available.  Change range_lower and range_upper to return NULL rather
   than throwing an error when the input range is empty or the relevant
   bound is infinite.  Per discussion, throwing an error seems likely
   to be unduly hard to work with.  Also, this is more consistent with
   the behavior of the constructors, which treat NULL as meaning an
   infinite bound.

- Update oidjoins regression test to match git HEAD.  This is mostly
   to add some sanity checking for the pg_range catalog.

- Fix alignment and toasting bugs in range types.  A range type whose
   element type has 'd' alignment must have 'd' alignment itself, else
   there is no guarantee that the element value can be used in-place.
   (Because range_deserialize uses att_align_pointer which forcibly
   aligns the given pointer, violations of this rule did not lead to
   SIGBUS but rather to garbage data being extracted, as in one of the
   added regression test cases.) Also, you can't put a toast pointer
   inside a range datum, since the referenced value could disappear
   with the range datum still present.  For consistency with the
   handling of arrays and records, I also forced decompression of
   in-line-compressed bound values.  It would work to store them as-is,
   but our policy is to avoid situations that might result in double
   compression.  Add assorted regression tests for this, and bump
   catversion because of fixes to built-in pg_type entries.  Also some
   marginal cleanup of inconsistent/unnecessary error checks.

- Restructure function-internal caching in the range type code.  Move
   the responsibility for caching specialized information about range
   types into the type cache, so that the catalog lookups only have to
   occur once per session.  Rearrange APIs a bit so that fn_extra
   caching is actually effective in the GiST support code.  (Use of
   OidFunctionCallN is bad enough for performance in itself, but it
   also prevents the function from exploiting fn_extra caching.) The
   range I/O functions are still not very bright about caching repeated
   lookups, but that seems like material for a separate patch.  Also,
   avoid unnecessary use of memcpy to fetch/store the range type OID
   and flags, and don't use the full range_deserialize machinery when
   all we need to see is the flags value.  Also fix API error in
   range_gist_penalty --- it was failing to set *penalty for any case
   involving an empty range.

- Improve caching in range type I/O functions.  Cache the the element
   type's I/O info across calls, not only the range type's info.  In
   passing, also clean up hash_range a bit more.

- Code review for range-types catalog entries.  Fix assorted
   infelicities, such as dependency on OIDs that aren't hardwired, as
   well as outright misdeclaration of daterange_canonical(), which
   resulted in crashes if you invoked it directly.  Add some more
   regression tests to try to catch similar mistakes in future.

- Fix range_cmp_bounds for the case of equal-valued exclusive bounds.
   Also improve its comments and related regression tests.  Jeff Davis,
   with some further adjustments by Tom Lane.

- Extend the unknowns-are-same-as-known-inputs type resolution
   heuristic.  For a very long time, one of the parser's heuristics for
   resolving ambiguous operator calls has been to assume that
   unknown-type literals are of the same type as the other input (if
   it's known).  However, this was only used in the first step of
   quickly checking for an exact-types match, and thus did not help in
   resolving matches that require coercion, such as matches to
   polymorphic operators.  As we add more polymorphic operators, this
   becomes more of a problem.  This patch adds another use of the same
   heuristic as a last-ditch check before failing to resolve an
   ambiguous operator or function call.  In particular this will let us
   define the range inclusion operator in a less limited way (to come
   in a follow-on patch).

- Declare range inclusion operators as taking anyelement not
   anynonarray.  Use of anynonarray was a crude hack to get around
   ambiguity versus the array inclusion operators of the same names.
   My previous patch to extend the parser's type resolution heuristics
   makes that unnecessary, so use the more general declaration instead.
   This eliminates a wart that these operators couldn't be used with
   ranges over arrays, which are otherwise supported just fine.  Also,
   mark range_before and range_after as commutator operators, per
   discussion with Jeff Davis.

- Do missed autoheader run for previous commit.

- Further review of range-types patch.  Lots of documentation cleanup
   today, and still more type_sanity tests.

- Avoid floating-point underflow while tracking buffer allocation
   rate.  When the system is idle for awhile after activity, the
   "smoothed_alloc" state variable in BgBufferSync converges slowly to
   zero.  With standard IEEE float arithmetic this results in several
   iterations with denormalized values, which causes kernel traps and
   annoying log messages on some poorly-designed platforms.  There's no
   real need to track such small values of smoothed_alloc, so we can
   prevent the kernel traps by forcing it to zero as soon as it's too
   small to be interesting for our purposes.  This issue is purely
   cosmetic, since the iterations don't happen fast enough for the
   kernel traps to pose any meaningful performance problem, but still
   it seems worth shutting up the log messages.  The kernel log
   messages were previously reported by a number of people, but kudos
   to Greg Matthews for tracking down exactly where they were coming

- Further code review for range types patch.  Fix some bugs in
   coercion logic and pg_dump; more comment cleanup; minor cosmetic

Robert Haas pushed:

- Don't elide blank lines when accumulating psql command history.
   This can change the meaning of queries, if the blank line happens to
   occur in the middle of a quoted literal, as per complaint from Tomas
   Vondra.  Back-patch to all supported branches.

- Restructure get_object_address() so it's safe against concurrent
   DDL.  This gives a much better error message when the object of
   interest is concurrently dropped and avoids needlessly failing when
   the object of interest is concurrently dropped and recreated.  It
   also improves the behavior of two concurrent DROP IF EXISTS
   operations targeted at the same object; as before, one will drop the
   object, but now the other will emit the usual NOTICE indicating that
   the object does not exist, instead of rolling back.  As a fringe
   benefit, it's also slightly less code.

- Remove ancient downcasing code from procedural language operations.
   A very long time ago, language names were specified as literals
   rather than identifiers, so this code was added to do case-folding.
   But that style has ben deprecated for many years so this isn't
   needed any more.  Language names will still be downcased when
   specified as unquoted identifiers, but quoted identifiers or the old
   style using string literals will be left as-is.

- Further consolidation of DROP statement handling.  This gets rid of
   an impressive amount of duplicative code, with only minimal behavior
   changes.  DROP FOREIGN DATA WRAPPER now requires object ownership
   rather than superuser privileges, matching the documentation we
   already have.  We also eliminate the historical warning about
   dropping a built-in function as unuseful.  All operations are now
   performed in the same order for all object types handled by
   dropcmds.c.  KaiGai Kohei, with minor revisions by me

Michael Meskes pushed:

- Applied Zoltan Boszormenyi's patch to correctly align interval and
   timestamp data in ecpg's sqlda.

Alvaro Herrera pushed:

- Don't quote language name.  It's been deprecated for ages according
   to Tom Lane, and it breaks now given the previous patch anyway.  Per

Simon Riggs pushed:

- Avoid marking buffer dirty when VACUUM has no work to do.  When
   wal_level = 'hot_standby' we touched the last page of the relation
   during a VACUUM, even if nothing else had happened.  That would
   alter the LSN of the last block and set the mtime of the relation
   file unnecessarily. Noted by Thom Brown.

== Abgelehnte Patches (bis jetzt) ==

No one was disappointed this week :-)

== Eingesandte Patches ==

Yeb Havinga sent in two more revisions of the patch to add named
parameters to cursor calls.

Greg Smith sent in another revision of the patch to restructure how
core extensions are placed in the source tree.

Bruce Momjian sent in a patch to fix an infelicity between pg_dump and

Jaime Casanova sent in another revision of the patch to measure
relation free space.

Shigeru HANADA sent in another revision of the patch to remove useless
columns from the system catalog table entries associated with foreign

Simon Riggs sent in a PoC patch to add group commit.

Andrew Dunstan sent in another revision of the patch to create
distinctions in pg_dump/pg_restore among pre-data, data, and post-data
as distinct entities.

Shigeru HANADA sent in another revision of the patch to make it
possible for the server to push JOINs to the foreign server, along
with infrastructure for same.

Greg Smith sent in another revision of the patch to allow displaying
accumulated autovacuum cost.

Julien Tachoires sent in another revision of the patch to allow moving
a table, its TOAST table, or both to a new tablespace.

Shigeru HANADA sent in a new flock of patches to enable a pgsql_fdw.

Scott Mead sent in two more revisions of a patch to introspect states
that are "<IDLE> in transaction."

Laurenz Albe sent in two more revisions of a patch to allow disabling
SSL compression.

KaiGai Kohei sent in another flock of patches refactoring DDL, one
part of which (DROP) Robert Haas updated and committed.

KaiGai Kohei sent in another revision of the patch to allow object
creation hooks, which sepgsql will eventually use.

Simon Riggs sent in a patch to optimize XLogInsert().

Robert Haas and Pavan Deolasee traded patches to implement a new
refactor of the locking system called FlexLocks.

Peter Eisentraut sent in a patch for type privileges.

Josh Kupershmidt sent in a patch to fix an infelicity in psql's \ir

Greg Smith sent in a revived version of an old patch to allow
including a whole directory in postgresql.conf.

Greg Smith sent in a patch to add an "include if exists" directive in

Edward Muller sent in another revision of the patch to allow users to
kill their own queries.

Zoltan Boszormenyi sent in a patch to allow FETCH read-ahead in ECPG.

Tom Lane sent in a patch to avoid losing column names in some cases.

Etsuro Fujita sent in another revision of the patch that makes it
possible to collect statistics on FDW data, including an
implementation for the CSV FDW.

Andres Freund sent in two revisions of a patch to collapse a long
chain of "ifs" in eval_const_expressions_mutator into a "switch"

KaiGai Kohei sent in another revision of the patch to add a permission
check on SELECT INTO.

Andres Freund sent in a patch to allow the combination of (plan off,
rewrite off) in EXPLAIN for benchmarking.

			Andreas 'ads' Scherbaum
Deutsche PostgreSQL User Group:

pgsql-de-allgemein by date

Next:From: Andreas TilleDate: 2011-11-22 21:40:11
Subject: psql -l asks for password
Previous:From: Andreas 'ads' ScherbaumDate: 2011-11-17 12:03:55
Subject: == Wöchentlicher PostgreSQL Newsletter - 13. November 2011 ==

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