1. 10 Jan, 2013 2 commits
    • Tom Lane's avatar
      Test linking libperl.so using only Perl's required libraries. · 9d5a160c
      Tom Lane authored
      It appears that perl_embed_ldflags should already mention all the libraries
      that are required by libperl.so itself.  So let's try the test link with
      just those and not the other LIBS we've found up to now.  This should
      more nearly reproduce what will happen when plperl is linked, and perhaps
      will fix buildfarm member okapi's problem.
      9d5a160c
    • Tom Lane's avatar
      Add explicit configure-time checks for perl.h and libperl.so. · 1f3ed51f
      Tom Lane authored
      Although most platforms seem to package Perl in such a way that these files
      are present even in basic Perl installations, Debian does not.  Hence, make
      an effort to fail during configure rather than build if --with-perl was
      given and these files are lacking.  Per gripe from Josh Berkus.
      1f3ed51f
  2. 09 Jan, 2013 4 commits
  3. 08 Jan, 2013 2 commits
    • Tom Lane's avatar
      Fix potential corruption of lock table in CREATE/DROP INDEX CONCURRENTLY. · c00dc337
      Tom Lane authored
      If VirtualXactLock() has to wait for a transaction that holds its VXID lock
      as a fast-path lock, it must first convert the fast-path lock to a regular
      lock.  It failed to take the required "partition" lock on the main
      shared-memory lock table while doing so.  This is the direct cause of the
      assert failure in GetLockStatusData() recently observed in the buildfarm,
      but more worryingly it could result in arbitrary corruption of the shared
      lock table if some other process were concurrently engaged in modifying the
      same partition of the lock table.  Fortunately, VirtualXactLock() is only
      used by CREATE INDEX CONCURRENTLY and DROP INDEX CONCURRENTLY, so the
      opportunities for failure are fewer than they might have been.
      
      In passing, improve some comments and be a bit more consistent about
      order of operations.
      c00dc337
    • Peter Eisentraut's avatar
      Fix typo · f31d5baf
      Peter Eisentraut authored
      f31d5baf
  4. 07 Jan, 2013 3 commits
  5. 06 Jan, 2013 1 commit
    • Tom Lane's avatar
      Fix plpython build on older versions of OS X. · 5aec9cca
      Tom Lane authored
      Pre-Lion versions of Apple's linker don't allow space between -F and its
      argument.  (Snow Leopard is nice enough to tell you that in so many words,
      but older versions just fail with very obscure link errors, as seen on
      buildfarm member locust for instance.)  Oversight in commit
      fc874507.
      5aec9cca
  6. 05 Jan, 2013 6 commits
  7. 04 Jan, 2013 1 commit
    • Tom Lane's avatar
      Invent a "one-shot" variant of CachedPlans for better performance. · 94afbd58
      Tom Lane authored
      SPI_execute() and related functions create a CachedPlan, execute it once,
      and immediately discard it, so that the functionality offered by
      plancache.c is of no value in this code path.  And performance measurements
      show that the extra data copying and invalidation checking done by
      plancache.c slows down simple queries by 10% or more compared to 9.1.
      However, enough of the SPI code is shared with functions that do need plan
      caching that it seems impractical to bypass plancache.c altogether.
      Instead, let's invent a variant version of cached plans that preserves
      99% of the API but doesn't offer any of the actual functionality, nor the
      overhead.  This puts SPI_execute() performance back on par, or maybe even
      slightly better, than it was before.  This change should resolve recent
      complaints of performance degradation from Dong Ye, Pavel Stehule, and
      others.
      
      By avoiding data copying, this change also reduces the amount of memory
      needed to execute many-statement SPI_execute() strings, as for instance in
      a recent complaint from Tomas Vondra.
      
      An additional benefit of this change is that multi-statement SPI_execute()
      query strings are now processed fully serially, that is we complete
      execution of earlier statements before running parse analysis and planning
      on following ones.  This eliminates a long-standing POLA violation, in that
      DDL that affects the behavior of a later statement will now behave as
      expected.
      
      Back-patch to 9.2, since this was a performance regression compared to 9.1.
      (In 9.2, place the added struct fields so as to avoid changing the offsets
      of existing fields.)
      
      Heikki Linnakangas and Tom Lane
      94afbd58
  8. 03 Jan, 2013 4 commits
    • Tom Lane's avatar
      Prevent creation of postmaster's TCP socket during pg_upgrade testing. · 78a5e738
      Tom Lane authored
      On non-Windows machines, we use the Unix socket for connections to test
      postmasters, so there is no need to create a TCP socket.  Furthermore,
      doing so causes failures due to port conflicts if two builds are carried
      out concurrently on one machine.  (If the builds are done in different
      chroots, which is standard practice at least in Red Hat distros, there
      is no risk of conflict on the Unix socket.)  Suppressing the TCP socket
      by setting listen_addresses to empty has long been standard practice
      for pg_regress, and pg_upgrade knows about this too ... but pg_upgrade's
      test.sh didn't get the memo.
      
      Back-patch to 9.2, and also sync the 9.2 version of the script with HEAD
      as much as practical.
      78a5e738
    • Heikki Linnakangas's avatar
      Tolerate timeline switches while "pg_basebackup -X fetch" is running. · b0daba57
      Heikki Linnakangas authored
      If you take a base backup from a standby server with "pg_basebackup -X
      fetch", and the timeline switches while the backup is being taken, the
      backup used to fail with an error "requested WAL segment %s has already
      been removed". This is because the server-side code that sends over the
      required WAL files would not construct the WAL filename with the correct
      timeline after a switch.
      
      Fix that by using readdir() to scan pg_xlog for all the WAL segments in the
      range, regardless of timeline.
      
      Also, include all timeline history files in the backup, if taken with
      "-X fetch". That fixes another related bug: If a timeline switch happened
      just before the backup was initiated in a standby, the WAL segment
      containing the initial checkpoint record contains WAL from the older
      timeline too. Recovery will not accept that without a timeline history file
      that lists the older timeline.
      
      Backpatch to 9.2. Versions prior to that were not affected as you could not
      take a base backup from a standby before 9.2.
      b0daba57
    • Heikki Linnakangas's avatar
      Delay reading timeline history file until it's fetched from master. · ee994272
      Heikki Linnakangas authored
      Streaming replication can fetch any missing timeline history files from the
      master, but recovery would read the timeline history file for the target
      timeline before reading the checkpoint record, and before walreceiver has
      had a chance to fetch it from the master. Delay reading it, and the sanity
      checks involving timeline history, until after reading the checkpoint
      record.
      
      There is at least one scenario where this makes a difference: if you take
      a base backup from a standby server right after a timeline switch, the
      WAL segment containing the initial checkpoint record will begin with an
      older timeline ID. Without the timeline history file, recovering that file
      will fail as the older timeline ID is not recognized to be an ancestor of
      the target timeline. If you try to recover from such a backup, using only
      streaming replication to fetch the WAL, this patch is required for that to
      work.
      ee994272
    • Bruce Momjian's avatar
      Adjust a few pg_upgrade functions to return void. · bcbe9924
      Bruce Momjian authored
      Adjust pg_upgrade page conversion functions (which are not used) to
      return void so transfer_all_new_dbs can return void.
      bcbe9924
  9. 02 Jan, 2013 7 commits
  10. 01 Jan, 2013 5 commits
  11. 31 Dec, 2012 3 commits
    • Tom Lane's avatar
      Fix ruleutils to cope with conflicts from adding/dropping/renaming columns. · 2ffa740b
      Tom Lane authored
      In commit 11e13185, we improved the
      rule/view dumping code so that it would produce valid query representations
      even if some of the tables involved in a query had been renamed since the
      query was parsed.  This patch extends that idea to fix problems that occur
      when individual columns are renamed, or added or dropped.  As before, the
      core of the fix is to assign unique new aliases when a name conflict has
      been created.  This is complicated by the JOIN USING feature, which
      requires the same column alias to be used in both input relations, but we
      can handle that with a sufficiently complex approach to assigning aliases.
      
      A fortiori, this patch takes care of situations where the query didn't have
      unique column names to begin with, such as in a recent complaint from Bryan
      Nuse.  (Because of expansion of "SELECT *", re-parsing a dumped query can
      require column name uniqueness even though the original text did not.)
      2ffa740b
    • Peter Eisentraut's avatar
      doc: Correct description of ldapurl · 7eb559a8
      Peter Eisentraut authored
      The ldapurl option doesn't actually support specifying a user name and
      password.
      
      Albe Laurenz
      7eb559a8
    • Peter Eisentraut's avatar
      0e690209
  12. 30 Dec, 2012 2 commits
    • Heikki Linnakangas's avatar
      Keep timeline history files restored from archive in pg_xlog. · 60df192a
      Heikki Linnakangas authored
      The cascading standby patch in 9.2 changed the way WAL files are treated
      when restored from the archive. Before, they were restored under a temporary
      filename, and not kept in pg_xlog, but after the patch, they were copied
      under pg_xlog. This is necessary for a cascading standby to find them, but
      it also means that if the archive goes offline and a standby is restarted,
      it can recover back to where it was using the files in pg_xlog. It also
      means that if you take an offline backup from a standby server, it includes
      all the required WAL files in pg_xlog.
      
      However, the same change was not made to timeline history files, so if the
      WAL segment containing the checkpoint record contains a timeline switch, you
      will still get an error if you try to restart recovery without the archive,
      or recover from an offline backup taken from the standby.
      
      With this patch, timeline history files restored from archive are copied
      into pg_xlog like WAL files are, so that pg_xlog contains all the files
      required to recover. This is a corner-case pre-existing issue in 9.2, but
      even more important in master where it's possible for a standby to follow a
      timeline switch through streaming replication. To make that possible, the
      timeline history files must be present in pg_xlog.
      60df192a
    • Peter Eisentraut's avatar
      doc: Correct description of LDAP authentication · 103cc893
      Peter Eisentraut authored
      Parts of the description had claimed incorrect pg_hba.conf option names
      for LDAP authentication.
      
      Albe Laurenz
      103cc893