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

== PostgreSQL Weekly News - June 22 2008 ==

From: David Fetter <david(at)fetter(dot)org>
To: PostgreSQL Announce <pgsql-announce(at)postgresql(dot)org>
Subject: == PostgreSQL Weekly News - June 22 2008 ==
Date: 2008-06-23 02:12:46
Message-ID: 20080623021246.GD3639@fetter.org (view raw or flat)
Thread:
Lists: pgsql-announce
== PostgreSQL Weekly News - June 22 2008 ==

New Survey: What TODO would you most like?
http://www.postgresql.org/community/

== PostgreSQL Jobs for June ==

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

== PostgreSQL Local ==

TorontoPUG's first meeting will be June 23 at The Rhino.
http://pugs.postgresql.org/blog/159

OKPUG's first meeting will be June 23 at 7:00pm at Coach's in Norman, OK.
http://pugs.postgresql.org/node/408

PgDay.IT's planning meeting will be Wednesday, June 25 at 2130 CET via IRC.
irc://irc.freenode.net/pgday-it

pgDay Portland is July 20, just before OSCON.
http://pugs.postgresql.org/node/400

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 and
Josh Berkus.

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)

== Applied Patches ==

Tom Lane committed:

- Clean up a number of bogosities around pltcl's handling of the Tcl
  "result": 1. Directly reading interp->result is deprecated in Tcl
  8.0 and later; you're supposed to use Tcl_GetStringResult.  This
  code finally broke with Tcl 8.5, because Tcl_GetVar can now have
  side-effects on interp->result even though it preserves the logical
  state of the result.  (There's arguably a Tcl issue here, because
  Tcl_GetVar could invalidate the pointer result of a just-preceding
  Tcl_GetStringResult, but I doubt the Tcl guys will see it as a bug.)
  2. We were being sloppy about the encoding of the result: some
  places would push database-encoding data into the Tcl result, which
  should not happen, and we were assuming that any error result coming
  back from Tcl was in the database encoding, which is not a good
  assumption.  3. There were a lot of calls of Tcl_SetResult that
  uselessly specified TCL_VOLATILE for constant strings.  This is only
  a minor performance issue, but I fixed it in passing since I had to
  look at all the calls anyway.  #2 is a live bug regardless of which
  Tcl version you are interested in, so back-patch even to branches
  that are unlikely to be used with Tcl 8.5.  I went back as far as
  8.0, which is as far as the patch applied easily; 7.4 was using a
  different error processing scheme that has got its own problems :-(

- In pgsql/src/backend/optimizer/plan/setrefs.c, fix the code that
  adds regclass constants to a plan's list of relation OIDs that it
  depends on for replan-forcing purposes.  We need to consider plain
  OID constants too, because eval_const_expressions folds a
  RelabelType atop a Const to just a Const.  This change could result
  in OID values that aren't really for tables getting added to the
  dependency list, but the worst-case consequence would be occasional
  useless replans.  Per report from Gabriele Messineo.

- Clean up some problems with redundant cross-type arithmetic
  operators.  Add int2-and-int8 implementations of the basic
  arithmetic operators +, -, *, /.  This doesn't really add any new
  functionality, but it avoids "operator is not unique" failures that
  formerly occurred in these cases because the parser couldn't decide
  whether to promote the int2 to int4 or int8.  We could alternatively
  have removed the existing cross-type operators, but experimentation
  shows that the cost of an additional type coercion expression node
  is noticeable compared to such cheap operators; so let's not give up
  any performance here.  On the other hand, I removed the
  int2-and-int4 modulo (%) operators since they didn't seem as
  important from a performance standpoint.  Per a complaint last
  January from ykhuang.

- In pgsql/src/backend/storage/ipc/sinvaladt.c, remove freeBackends
  counter from the sinval shared memory area.  We used to use it to
  help enforce superuser_reserved_backends, but since 8.1 it's just
  been dead weight.

- Improve error reporting for problems in text search configuration
  files by installing an error context subroutine that will provide
  the file name and line number for all errors detected while reading
  a config file.  Some of the reader routines were already doing that
  in an ad-hoc way for errors detected directly in the reader, but it
  didn't help for problems detected in subroutines, such as encoding
  violations.  Back-patch to 8.3 because 8.3 is where people will be
  trying to debug configuration files.

- In pgsql/src/backend/utils/mb/mbutils.c, fix compiler warning
  introduced by recent patch.  Tsk tsk.

- Fix a few places that were non-multibyte-safe in tsearch
  configuration file parsing.  Per bug #4253 from Giorgio Valoti.

- Rewrite the sinval messaging mechanism to reduce contention and
  avoid unnecessary cache resets.  The major changes are: 1.  When the
  queue overflows, we only issue a cache reset to the specific backend
  or backends that still haven't read the oldest message, rather than
  resetting everyone as in the original coding.  2.  When we observe
  backend(s) falling well behind, we signal SIGUSR1 to only one
  backend, the one that is furthest behind and doesn't already have a
  signal outstanding for it.  When it finishes catching up, it will in
  turn signal SIGUSR1 to the next-furthest-back guy, if there is one
  that is far enough behind to justify a signal.  The
  PMSIGNAL_WAKEN_CHILDREN mechanism is removed.  3.  We don't attempt
  to clean out dead messages after every message-receipt operation;
  rather, we do it on the insertion side, and only when the queue
  fullness passes certain thresholds.  4.  Split SInvalLock into
  SInvalReadLock and SInvalWriteLock so that readers don't block
  writers nor vice versa (except during the infrequent queue cleanout
  operations).  5.  Transfer multiple sinval messages for each
  acquisition of a read or write lock.

- In pgsql/src/backend/storage/ipc/sinvaladt.c, seems I was too
  optimistic in supposing that sinval's maxMsgNum could be read and
  written without a lock.  The value itself is atomic, sure, but on
  processors with weak memory ordering it's possible for a reader to
  see the value change before it sees the associated message written
  into the buffer array.  Fix by introducing a spinlock that's used
  just to read and write maxMsgNum.  (We could do this with less
  overhead if we recognized a concept of "memory access barrier"; is
  it worth introducing such a thing?  At the moment probably not --- I
  can't measure any clear slowdown from adding the spinlock, so this
  solution is probably fine.)  Per buildfarm results.

Bruce Momjian committed:

- Move USE_WIDE_UPPER_LOWER define to c.h, and remove TS_USE_WIDE and
  use USE_WIDE_UPPER_LOWER instead.

- In pgsql/src/backend/utils/mb/README, add URL for introduction to
  multibyte programming in C.

- Move wchar2char() and char2wchar() from tsearch into /mb to be
  easier to use for other modules;  also move pnstrdup().  Clean up
  code slightly.

- Add URL for TODO: "Allow pg_hba.conf to specify host names along
  with IP addresses."

Neil Conway committed:

- In pgsql/doc/src/sgml/monitoring.sgml, fix a few typos in the DTrace
  docs.  Patch from Euler Taveira de Oliveira, along with an
  additional typo I noticed along the way.

Alvaro Herrera committed:

- Improve our #include situation by moving pointer types away from the
  corresponding struct definitions.  This allows other headers to
  avoid including certain highly-loaded headers such as rel.h and
  relscan.h, instead using just relcache.h, heapam.h or genam.h, which
  are more lightweight and thus cause less unnecessary dependencies.

== Rejected Patches (for now) ==

No one was disappointed this week :-)

== Pending Patches ==

Zoltan Boszormenyi sent in another revision of his POSIX fadvise
patch.

Simon Riggs sent in a patch to improve performance via hint bits for
write I/O.


pgsql-announce by date

Next:From: Mariano ReingartDate: 2008-06-26 16:55:04
Subject: pyreplica 1.0 released
Previous:From: David FetterDate: 2008-06-16 04:43:14
Subject: == PostgreSQL Weekly News - June 15 2008 ==

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