1. 29 6月, 2013 9 次提交
    • H
      Inline ginCompareItemPointers function for speed. · ee655655
      Heikki Linnakangas 提交于
      ginCompareItemPointers function is called heavily in gin index scans -
      inlining it speeds up some kind of queries a lot.
      ee655655
    • S
      Change errcode for lock_timeout to match NOWAIT · d51b2710
      Simon Riggs 提交于
      Set errcode to ERRCODE_LOCK_NOT_AVAILABLE
      
      Zoltán Bsöszörményi
      d51b2710
    • S
      ALTER TABLE ... ALTER CONSTRAINT for FKs · f177cbfe
      Simon Riggs 提交于
      Allow constraint attributes to be altered,
      so the default setting of NOT DEFERRABLE
      can be altered to DEFERRABLE and back.
      
      Review by Abhijit Menon-Sen
      f177cbfe
    • S
      Assert that ALTER TABLE subcommands have pass set · 2f74e4ec
      Simon Riggs 提交于
      2f74e4ec
    • B
      pg_upgrade: pass username to analyze script · f8513610
      Bruce Momjian 提交于
      If -U (user) is specified, pass the username into the created analyze
      script.
      Per request from Ray Stell
      f8513610
    • B
      pg_upgrade: remove -h option · e029275c
      Bruce Momjian 提交于
      -h (help) is not needed;  pg_upgrade already supports --help and -?,
      which is consistent with other tools.
      e029275c
    • B
      pg_upgrade: trim down --help and doc option descriptions · fb771f90
      Bruce Momjian 提交于
      Previous code had old/new prefixes on option values, e.g.
      --old-datadir=OLDDATADIR.  Remove them, for simplicity;  now:
      --old-datadir=DATADIR.  Also update docs to do the same.
      fb771f90
    • A
      Send SIGKILL to children if they don't die quickly in immediate shutdown · 82233ce7
      Alvaro Herrera 提交于
      On immediate shutdown, or during a restart-after-crash sequence,
      postmaster used to send SIGQUIT (and then abandon ship if shutdown); but
      this is not a good strategy if backends don't die because of that
      signal.  (This might happen, for example, if a backend gets tangled
      trying to malloc() due to gettext(), as in an example illustrated by
      MauMau.)  This causes problems when later trying to restart the server,
      because some processes are still attached to the shared memory segment.
      
      Instead of just abandoning such backends to their fates, we now have
      postmaster hang around for a little while longer, send a SIGKILL after
      some reasonable waiting period, and then exit.  This makes immediate
      shutdown more reliable.
      
      There is disagreement on whether it's best for postmaster to exit after
      sending SIGKILL, or to stick around until all children have reported
      death.  If this controversy is resolved differently than what this patch
      implements, it's an easy change to make.
      
      Bug reported by MauMau in message 20DAEA8949EC4E2289C6E8E58560DEC0@maumau
      
      MauMau and Álvaro Herrera
      82233ce7
    • B
      pg_upgrade: change -u to -U, for consistency · 457d6cf0
      Bruce Momjian 提交于
      Change -u (user) option to -U, for consistency with other tools like
      pg_dump and psql.  Also expand --user to --username, again for
      consistency.
      BACKWARD INCOMPATIBILITY
      457d6cf0
  2. 28 6月, 2013 8 次提交
    • R
      Make the OVER keyword unreserved. · 5893ffa7
      Robert Haas 提交于
      This results in a slightly less specific error message when OVER
      is used in a context where we don't accept window functions, but
      per discussion, it's worth it to get the benefit of not needing
      to reserve this keyword any more.  This same refactoring will
      also let us avoid reserving some other keywords that we expect
      to add in upcoming patches (specifically, IGNORE, RESPECT, and
      FILTER).
      
      Troels Nielsen, with minor changes by me
      5893ffa7
    • R
      Define Trap and TrapMacro even in non-cassert builds. · 5ee73525
      Robert Haas 提交于
      In some cases, the use of these macros may be preferable to Assert()
      or AssertMacro(), since this way the caller can set the trap message.
      
      Andres Freund and Robert Haas
      5ee73525
    • H
      Track spinlock delay in microsecond granularity. · 9e0bc7c1
      Heikki Linnakangas 提交于
      On many platforms the OS will round the sleep time to millisecond
      resolution, but there is no reason for us to pre-emptively round the
      argument to pg_usleep.
      
      When the delay was measured in milliseconds and started from 1 ms, it
      sometimes took many attempts until the logic that increases the delay by
      multiplying with a random value between 1 and 2 actually managed to bump it
      from 1 ms to 2 ms. That lead to a sequence of 1 ms waits until the delay
      started to increase. This wasn't really a problem but it looked odd if you
      observed the waits. There is no measurable difference in performance, but
      it's more readable this way.
      
      Jeff Janes
      9e0bc7c1
    • A
      Update pg_resetxlog's documentation on multixacts · 9db4ad44
      Alvaro Herrera 提交于
      I added some more functionality to it in 0ac5ad51 but neglected to
      add it to the docs.
      
      Per Peter Eisentraut in message
      1367112171.32604.4.camel@vanquo.pezone.net
      9db4ad44
    • A
      Document relminmxid and datminmxid · 863fad1b
      Alvaro Herrera 提交于
      I introduced these new fields in 0ac5ad51 but neglected to add them
      to the system catalogs section of the docs.
      
      Per Thom Brown in message
      CAA-aLv7UiO=Whiq3MVbsEqSyQRthuX8Tb_RLyBuQt0KQBp=6EQ@mail.gmail.com
      863fad1b
    • N
      Permit super-MaxAllocSize allocations with MemoryContextAllocHuge(). · 263865a4
      Noah Misch 提交于
      The MaxAllocSize guard is convenient for most callers, because it
      reduces the need for careful attention to overflow, data type selection,
      and the SET_VARSIZE() limit.  A handful of callers are happy to navigate
      those hazards in exchange for the ability to allocate a larger chunk.
      Introduce MemoryContextAllocHuge() and repalloc_huge().  Use this in
      tuplesort.c and tuplestore.c, enabling internal sorts of up to INT_MAX
      tuples, a factor-of-48 increase.  In particular, B-tree index builds can
      now benefit from much-larger maintenance_work_mem settings.
      
      Reviewed by Stephen Frost, Simon Riggs and Jeff Janes.
      263865a4
    • T
      Mark index-constraint comments with correct dependency in pg_dump. · 9ef86cd9
      Tom Lane 提交于
      When there's a comment on an index that was created with UNIQUE or PRIMARY
      KEY constraint syntax, we need to label the comment as depending on the
      constraint not the index, since only the constraint object actually appears
      in the dump.  This incorrect dependency can lead to parallel pg_restore
      trying to restore the comment before the index has been created, per bug
      #8257 from Lloyd Albin.
      
      This patch fixes pg_dump to produce the right dependency in dumps made
      in the future.  Usually we also try to hack pg_restore to work around
      bogus dependencies, so that existing (wrong) dumps can still be restored in
      parallel mode; but that doesn't seem practical here since there's no easy
      way to relate the constraint dump entry to the comment after the fact.
      
      Andres Freund
      9ef86cd9
    • T
      Expect EWOULDBLOCK from a non-blocking connect() call only on Windows. · a099482c
      Tom Lane 提交于
      On Unix-ish platforms, EWOULDBLOCK may be the same as EAGAIN, which is
      *not* a success return, at least not on Linux.  We need to treat it as a
      failure to avoid giving a misleading error message.  Per the Single Unix
      Spec, only EINPROGRESS and EINTR returns indicate that the connection
      attempt is in progress.
      
      On Windows, on the other hand, EWOULDBLOCK (WSAEWOULDBLOCK) is the expected
      case.  We must accept EINPROGRESS as well because Cygwin will return that,
      and it doesn't seem worth distinguishing Cygwin from native Windows here.
      It's not very clear whether EINTR can occur on Windows, but let's leave
      that part of the logic alone in the absence of concrete trouble reports.
      
      Also, remove the test for errno == 0, effectively reverting commit
      da9501bd, which AFAICS was just a thinko;
      or at best it might have been a workaround for a platform-specific bug,
      which we can hope is gone now thirteen years later.  In any case, since
      libpq makes no effort to reset errno to zero before calling connect(),
      it seems unlikely that that test has ever reliably done anything useful.
      
      Andres Freund and Tom Lane
      a099482c
  3. 27 6月, 2013 8 次提交
    • M
      Fixed incorrect description of EXEC SQL VAR command. · a2769a4e
      Michael Meskes 提交于
      Thanks to MauMau <maumau307@gmail.com> for finding and fixing this.
      a2769a4e
    • R
      pgbench: Fix inadvertent inconsistency in help message. · 682d977f
      Robert Haas 提交于
      Per report from Fujii Masao.
      682d977f
    • R
      pgbench: Add long options for all existing short options. · 79cddb18
      Robert Haas 提交于
      Fabien Coelho, reviewed by Fabrízio de Royes Mello, with some further
      changes by me
      79cddb18
    • T
      Tweak wording in sequence-function docs to avoid PDF build failures. · a03ae56e
      Tom Lane 提交于
      Adjust the wording in the first para of "Sequence Manipulation Functions"
      so that neither of the link phrases in it break across line boundaries,
      in either A4- or US-page-size PDF output.  This fixes a reported build
      failure for the 9.3beta2 A4 PDF docs, and future-proofs this particular
      para against causing similar problems in future.  (Perhaps somebody will
      fix this issue in the SGML/TeX documentation tool chain someday, but I'm
      not holding my breath.)
      
      Back-patch to all supported branches, since the same problem could rise up
      to bite us in future updates if anyone changes anything earlier than this
      in func.sgml.
      a03ae56e
    • N
      Cooperate with the Valgrind instrumentation framework. · 19085116
      Noah Misch 提交于
      Valgrind "client requests" in aset.c and mcxt.c teach Valgrind and its
      Memcheck tool about the PostgreSQL allocator.  This makes Valgrind
      roughly as sensitive to memory errors involving palloc chunks as it is
      to memory errors involving malloc chunks.  Further client requests in
      PageAddItem() and printtup() verify that all bits being added to a
      buffer page or furnished to an output function are predictably-defined.
      Those tests catch failures of C-language functions to fully initialize
      the bits of a Datum, which in turn stymie optimizations that rely on
      _equalConst().  Define the USE_VALGRIND symbol in pg_config_manual.h to
      enable these additions.  An included "suppression file" silences nominal
      errors we don't plan to fix.
      
      Reviewed in earlier versions by Peter Geoghegan and Korry Douglas.
      19085116
    • N
      Refactor aset.c and mcxt.c in preparation for Valgrind cooperation. · a855148a
      Noah Misch 提交于
      Move some repeated debugging code into functions and store intermediates
      in variables where not presently necessary.  No code-generation changes
      in a production build, and no functional changes.  This simplifies and
      focuses the main patch.
      a855148a
    • N
      Initialize pad bytes in GinFormTuple(). · 1d96bb96
      Noah Misch 提交于
      Every other core buffer page consumer initializes the bytes it furnishes
      to PageAddItem().  For consistency, do the same here.  No back-patch;
      regardless, we couldn't count on the fix so long as binary upgrade can
      carry forward affected index builds.
      1d96bb96
    • N
      Document effect of constant folding on CASE. · d53f7cf1
      Noah Misch 提交于
      Back-patch to all supported versions.
      
      Laurenz Albe
      d53f7cf1
  4. 26 6月, 2013 5 次提交
    • N
      Renovate display of non-ASCII messages on Windows. · 5f538ad0
      Noah Misch 提交于
      GNU gettext selects a default encoding for the messages it emits in a
      platform-specific manner; it uses the Windows ANSI code page on Windows
      and follows LC_CTYPE on other platforms.  This is inconvenient for
      PostgreSQL server processes, so realize consistent cross-platform
      behavior by calling bind_textdomain_codeset() on Windows each time we
      permanently change LC_CTYPE.  This primarily affects SQL_ASCII databases
      and processes like the postmaster that do not attach to a database,
      making their behavior consistent with PostgreSQL on non-Windows
      platforms.  Messages from SQL_ASCII databases use the encoding implied
      by the database LC_CTYPE, and messages from non-database processes use
      LC_CTYPE from the postmaster system environment.  PlatformEncoding
      becomes unused, so remove it.
      
      Make write_console() prefer WriteConsoleW() to write() regardless of the
      encodings in use.  In this situation, write() will invariably mishandle
      non-ASCII characters.
      
      elog.c has assumed that messages conform to the database encoding.
      While usually true, this does not hold for SQL_ASCII and MULE_INTERNAL.
      Introduce MessageEncoding to track the actual encoding of message text.
      The present consumers are Windows-specific code for converting messages
      to UTF16 for use in system interfaces.  This fixes the appearance in
      Windows event logs and consoles of translated messages from SQL_ASCII
      processes like the postmaster.  Note that SQL_ASCII inherently disclaims
      a strong notion of encoding, so non-ASCII byte sequences interpolated
      into messages by %s may yet yield a nonsensical message.  MULE_INTERNAL
      has similar problems at present, albeit for a different reason: its lack
      of libiconv support or a conversion to UTF8.
      
      Consequently, one need no longer restart Windows with a different
      Windows ANSI code page to broadly test backend logging under a given
      language.  Changing the user's locale ("Format") is enough.  Several
      accounts can simultaneously run postmasters under different locales, all
      correctly logging localized messages to Windows event logs and consoles.
      
      Alexander Law and Noah Misch
      5f538ad0
    • P
      pg_receivexlog: Fix logic error · 2c1031bd
      Peter Eisentraut 提交于
      The code checking the WAL file name contained a logic error and wouldn't
      actually catch some bad names.
      2c1031bd
    • A
      Avoid inconsistent type declaration · 4ca50e07
      Alvaro Herrera 提交于
      Clang 3.3 correctly complains that a variable of type enum
      MultiXactStatus cannot hold a value of -1, which makes sense.  Change
      the declared type of the variable to int instead, and apply casting as
      necessary to avoid the warning.
      
      Per notice from Andres Freund
      4ca50e07
    • A
      Properly dump dropped foreign table cols in binary-upgrade mode. · 81166a2f
      Andrew Dunstan 提交于
      In binary upgrade mode, we need to recreate and then drop dropped
      columns so that all the columns get the right attribute number. This is
      true for foreign tables as well as for native tables. For foreign
      tables we have been getting the first part right but not the second,
      leading to bogus columns in the upgraded database. Fix this all the way
      back to 9.1, where foreign tables were introduced.
      81166a2f
    • F
      Support clean switchover. · 985bd7d4
      Fujii Masao 提交于
      In replication, when we shutdown the master, walsender tries to send
      all the outstanding WAL records to the standby, and then to exit. This
      basically means that all the WAL records are fully synced between
      two servers after the clean shutdown of the master. So, after
      promoting the standby to new master, we can restart the stopped
      master as new standby without the need for a fresh backup from
      new master.
      
      But there was one problem so far: though walsender tries to send all
      the outstanding WAL records, it doesn't wait for them to be replicated
      to the standby. Then, before receiving all the WAL records,
      walreceiver can detect the closure of connection and exit. We cannot
      guarantee that there is no missing WAL in the standby after clean
      shutdown of the master. In this case, backup from new master is
      required when restarting the stopped master as new standby.
      
      This patch fixes this problem. It just changes walsender so that it
      waits for all the outstanding WAL records to be replicated to the
      standby before closing the replication connection.
      
      Per discussion, this is a fix that needs to get backpatched rather than
      new feature. So, back-patch to 9.1 where enough infrastructure for
      this exists.
      
      Patch by me, reviewed by Andres Freund.
      985bd7d4
  5. 25 6月, 2013 3 次提交
  6. 24 6月, 2013 1 次提交
  7. 23 6月, 2013 1 次提交
    • S
      Ensure no xid gaps during Hot Standby startup · 1f09121b
      Simon Riggs 提交于
      In some cases with higher numbers of subtransactions
      it was possible for us to incorrectly initialize
      subtrans leading to complaints of missing pages.
      
      Bug report by Sergey Konoplev
      Analysis and fix by Andres Freund
      1f09121b
  8. 22 6月, 2013 1 次提交
    • P
      doc: Fix date in EPUB manifest · dab1603e
      Peter Eisentraut 提交于
      If there is no <date> element, the publication date for the EPUB
      manifest is taken from the copyright year.  But something like
      "1996-2013" is not a legal date specification.  So the EPUB output
      currently fails epubcheck.
      
      Put in a separate <date> element with the current year.  Put it in
      legal.sgml, because copyright.pl already instructs to update that
      manually, so it hopefully won't be missed.
      dab1603e
  9. 21 6月, 2013 1 次提交
  10. 20 6月, 2013 3 次提交