1. 23 Nov, 2009 1 commit
    • Heikki Linnakangas's avatar
      Fix an old bug in multixact and two-phase commit. Prepared transactions can · cd87b6f8
      Heikki Linnakangas authored
      be part of multixacts, so allocate a slot for each prepared transaction in
      the "oldest member" array in multixact.c. On PREPARE TRANSACTION, transfer
      the oldest member value from the current backends slot to the prepared xact
      slot. Also save and recover the value from the 2pc state file.
      
      The symptom of the bug was that after a transaction prepared, a shared lock
      still held by the prepared transaction was sometimes ignored by other
      transactions.
      
      Fix back to 8.1, where both 2PC and multixact were introduced.
      cd87b6f8
  2. 22 Nov, 2009 6 commits
  3. 21 Nov, 2009 2 commits
    • Peter Eisentraut's avatar
      Ignore UTF-8-encoded Unicode byte-order mark at the beginning of a file if · 93d3bac5
      Peter Eisentraut authored
      the client encoding is UTF-8.
      
      a limited version of a patch proposed by Itagaki Takahiro
      93d3bac5
    • Tom Lane's avatar
      Refactor ecpg grammar so that it uses the core grammar's unreserved_keyword · e6c63bf6
      Tom Lane authored
      list, minus a few specific words that have to be treated specially.  This
      replaces a hard-wired list of keywords that would have needed manual
      maintenance, and was not getting it.  The 8.4 coding was already missing
      these words, causing ecpg to incorrectly treat them as reserved words:
      CALLED, CATALOG, DEFINER, ENUM, FOLLOWING, INVOKER, OPTIONS, PARTITION,
      PRECEDING, RANGE, SECURITY, SERVER, UNBOUNDED, WRAPPER.  In HEAD we were
      additionally missing COMMENTS, FUNCTIONS, SEQUENCES, TABLES.
      Per gripe from Bosco Rama.
      e6c63bf6
  4. 20 Nov, 2009 1 commit
    • Tom Lane's avatar
      Add a WHEN clause to CREATE TRIGGER, allowing a boolean expression to be · 7fc0f062
      Tom Lane authored
      checked to determine whether the trigger should be fired.
      
      For BEFORE triggers this is mostly a matter of spec compliance; but for AFTER
      triggers it can provide a noticeable performance improvement, since queuing of
      a deferred trigger event and re-fetching of the row(s) at end of statement can
      be short-circuited if the trigger does not need to be fired.
      
      Takahiro Itagaki, reviewed by KaiGai Kohei.
      7fc0f062
  5. 19 Nov, 2009 2 commits
    • Peter Eisentraut's avatar
      Typo: dump -> restore · 201a45c4
      Peter Eisentraut authored
      fixed in 8.4 and 8.5
      
      Author: Guillaume Lelarge <guillaume@lelarge.info>
      201a45c4
    • Tom Lane's avatar
      Fix memory leak in syslogger: logfile_rotate() would leak a copy of the · b1d55dca
      Tom Lane authored
      output filename if CSV logging was enabled and only one of the two possible
      output files got rotated during a particular call (which would, in fact,
      typically be the case during a size-based rotation).  This would amount to
      about MAXPGPATH (1KB) per rotation, and it's been there since the CSV
      code was put in, so it's surprising that nobody noticed it before.
      Per bug #5196 from Thomas Poindessous.
      b1d55dca
  6. 18 Nov, 2009 1 commit
  7. 16 Nov, 2009 2 commits
    • Tom Lane's avatar
      Provide a parenthesized-options syntax for VACUUM, analogous to that recently · 5e66a51c
      Tom Lane authored
      adopted for EXPLAIN.  This will allow additional options to be implemented
      in future without having to make them fully-reserved keywords.  The old syntax
      remains available for existing options, however.
      
      Itagaki Takahiro
      5e66a51c
    • Tom Lane's avatar
      While doing the final setrefs.c pass over a plan tree, try to match up · 49ed392c
      Tom Lane authored
      non-Var sort/group expressions using ressortgroupref labels instead of
      depending entirely on equal()-ity of the upper node's tlist expressions
      to the lower node's.  This avoids emitting the wrong outputs in cases
      where there are textually identical volatile sort/group expressions,
      as for example
      	select distinct random(),random() from generate_series(1,10);
      Per report from Andrew Gierth.
      
      Backpatch to 8.4.  Arguably this is wrong all the way back, but the only known
      case where there's an observable problem is when using hash aggregation to
      implement DISTINCT, which is new as of 8.4.  So for the moment I'll refrain
      from backpatching further.
      49ed392c
  8. 15 Nov, 2009 2 commits
  9. 14 Nov, 2009 2 commits
  10. 13 Nov, 2009 6 commits
  11. 12 Nov, 2009 5 commits
  12. 11 Nov, 2009 4 commits
  13. 10 Nov, 2009 6 commits
    • Tom Lane's avatar
      Do not build psql's flex module on its own, but instead include it in · 90bfe999
      Tom Lane authored
      mainloop.c.  This ensures that postgres_fe.h is read before including
      any system headers, which is necessary to avoid problems on some platforms
      where we make nondefault selections of feature macros for stdio.h or
      other headers.  We have had this policy for flex modules in the backend
      for many years, but for some reason it was not applied to psql.
      Per trouble report from Alexandra Roy and diagnosis by Albe Laurenz.
      90bfe999
    • Tom Lane's avatar
      Revert the temporary patch to work around Snow Leopard readdir() bug. · 21e3edd6
      Tom Lane authored
      Apple has fixed that bug in 10.6.2, and we should encourage users to
      update to that version rather than trusting this cosmetic patch.
      As was recently noted by Stephen Tyler, this patch was only masking
      the problem in the context of DROP TABLESPACE, but the failure could
      occur in other places such as pg_xlog cleanup.
      21e3edd6
    • Bruce Momjian's avatar
      interval_abs(): · 089f4b92
      Bruce Momjian authored
      Add C comment about why there is no interval_abs():  it is unclear what
      value to return:
      
          http://archives.postgresql.org/pgsql-general/2009-10/msg01031.php
          http://archives.postgresql.org/pgsql-general/2009-11/msg00041.php
      089f4b92
    • Alvaro Herrera's avatar
      Fix longstanding problems in VACUUM caused by untimely interruptions · e7ec0222
      Alvaro Herrera authored
      In VACUUM FULL, an interrupt after the initial transaction has been recorded
      as committed can cause postmaster to restart with the following error message:
      PANIC: cannot abort transaction NNNN, it was already committed
      This problem has been reported many times.
      
      In lazy VACUUM, an interrupt after the table has been truncated by
      lazy_truncate_heap causes other backends' relcache to still point to the
      removed pages; this can cause future INSERT and UPDATE queries to error out
      with the following error message:
      could not read block XX of relation 1663/NNN/MMMM: read only 0 of 8192 bytes
      The window to this race condition is extremely narrow, but it has been seen in
      the wild involving a cancelled autovacuum process.
      
      The solution for both problems is to inhibit interrupts in both operations
      until after the respective transactions have been committed.  It's not a
      complete solution, because the transaction could theoretically be aborted by
      some other error, but at least fixes the most common causes of both problems.
      e7ec0222
    • Bruce Momjian's avatar
      DIAGNOSTICS/FOUND wording · b538b72e
      Bruce Momjian authored
      Update wording of GET DIAGNOSTICS/FOUND, per David Fetter.
      b538b72e
    • Tom Lane's avatar
      More incremental refactoring in plpgsql: get rid of gram.y dependencies on · 73a2f6c6
      Tom Lane authored
      yytext.  This is a necessary change if we're going to have a lexer interface
      layer that does lookahead, since yytext won't necessarily be in step with
      what the grammar thinks is the current token.  yylval and yylloc should
      be the only side-variables that we need to manage when doing lookahead.
      73a2f6c6