Skip to content
Snippets Groups Projects
  1. Dec 03, 2012
  2. Dec 02, 2012
    • Andrew Dunstan's avatar
      Add mode where contrib installcheck runs each module in a separately named database. · e2b3c21b
      Andrew Dunstan authored
      Normally each module is tested in aq database named contrib_regression,
      which is dropped and recreated at the beginhning of each pg_regress run.
      This mode, enabled by adding USE_MODULE_DB=1 to the make command line,
      runs most modules in a database with the module name embedded in it.
      
      This will make testing pg_upgrade on clusters with the contrib modules
      a lot easier.
      
      Still to be done: adapt to the MSVC build system.
      
      Backpatch to 9.0, which is the earliest version it is reasonably possible
      to test upgrading from.
      e2b3c21b
  3. Dec 01, 2012
  4. Nov 30, 2012
  5. Nov 29, 2012
    • Tom Lane's avatar
      Fix assorted bugs in CREATE/DROP INDEX CONCURRENTLY. · 3c840464
      Tom Lane authored
      Commit 8cb53654, which introduced DROP
      INDEX CONCURRENTLY, managed to break CREATE INDEX CONCURRENTLY via a poor
      choice of catalog state representation.  The pg_index state for an index
      that's reached the final pre-drop stage was the same as the state for an
      index just created by CREATE INDEX CONCURRENTLY.  This meant that the
      (necessary) change to make RelationGetIndexList ignore about-to-die indexes
      also made it ignore freshly-created indexes; which is catastrophic because
      the latter do need to be considered in HOT-safety decisions.  Failure to
      do so leads to incorrect index entries and subsequently wrong results from
      queries depending on the concurrently-created index.
      
      To fix, add an additional boolean column "indislive" to pg_index, so that
      the freshly-created and about-to-die states can be distinguished.  (This
      change obviously is only possible in HEAD.  This patch will need to be
      back-patched, but in 9.2 we'll use a kluge consisting of overloading the
      formerly-impossible state of indisvalid = true and indisready = false.)
      
      In addition, change CREATE/DROP INDEX CONCURRENTLY so that the pg_index
      flag changes they make without exclusive lock on the index are made via
      heap_inplace_update() rather than a normal transactional update.  The
      latter is not very safe because moving the pg_index tuple could result in
      concurrent SnapshotNow scans finding it twice or not at all, thus possibly
      resulting in index corruption.  This is a pre-existing bug in CREATE INDEX
      CONCURRENTLY, which was copied into the DROP code.
      
      In addition, fix various places in the code that ought to check to make
      sure that the indexes they are manipulating are valid and/or ready as
      appropriate.  These represent bugs that have existed since 8.2, since
      a failed CREATE INDEX CONCURRENTLY could leave a corrupt or invalid
      index behind, and we ought not try to do anything that might fail with
      such an index.
      
      Also fix RelationReloadIndexInfo to ensure it copies all the pg_index
      columns that are allowed to change after initial creation.  Previously we
      could have been left with stale values of some fields in an index relcache
      entry.  It's not clear whether this actually had any user-visible
      consequences, but it's at least a bug waiting to happen.
      
      In addition, do some code and docs review for DROP INDEX CONCURRENTLY;
      some cosmetic code cleanup but mostly addition and revision of comments.
      
      This will need to be back-patched, but in a noticeably different form,
      so I'm committing it to HEAD before working on the back-patch.
      
      Problem reported by Amit Kapila, diagnosis by Pavan Deolassee,
      fix by Tom Lane and Andres Freund.
      3c840464
  6. Nov 25, 2012
  7. Nov 19, 2012
  8. Nov 18, 2012
    • Tom Lane's avatar
      Limit values of archive_timeout, post_auth_delay, auth_delay.milliseconds. · b6e3798f
      Tom Lane authored
      The previous definitions of these GUC variables allowed them to range
      up to INT_MAX, but in point of fact the underlying code would suffer
      overflows or other errors with large values.  Reduce the maximum values
      to something that won't misbehave.  There's no apparent value in working
      harder than this, since very large delays aren't sensible for any of
      these.  (Note: the risk with archive_timeout is that if we're late
      checking the state, the timestamp difference it's being compared to
      might overflow.  So we need some amount of slop; the choice of INT_MAX/2
      is arbitrary.)
      
      Per followup investigation of bug #7670.  Although this isn't a very
      significant fix, might as well back-patch.
      b6e3798f
  9. Nov 15, 2012
  10. Nov 14, 2012
  11. Nov 12, 2012
  12. Nov 06, 2012
  13. Oct 23, 2012
    • Alvaro Herrera's avatar
      Add context info to OAT_POST_CREATE security hook · f4c4335a
      Alvaro Herrera authored
      ... and have sepgsql use it to determine whether to check permissions
      during certain operations.  Indexes that are being created as a result
      of REINDEX, for instance, do not need to have their permissions checked;
      they were already checked when the index was created.
      
      Author: KaiGai Kohei, slightly revised by me
      f4c4335a
  14. Oct 20, 2012
  15. Oct 18, 2012
  16. Oct 12, 2012
  17. Oct 11, 2012
    • Peter Eisentraut's avatar
      Refactor flex and bison make rules · 8521d131
      Peter Eisentraut authored
      Numerous flex and bison make rules have appeared in the source tree
      over time, and they are all virtually identical, so we can replace
      them by pattern rules with some variables for customization.
      
      Users of pgxs will also be able to benefit from this.
      8521d131
    • Tom Lane's avatar
      Remove configure-option-dependent test cases from dblink tests. · c3bf3ea2
      Tom Lane authored
      The HINTs generated for these error cases vary across builds.  We
      could try to work around that, but the test cases aren't really useful
      enough to justify taking any trouble.
      
      Per buildfarm.
      c3bf3ea2
  18. Oct 10, 2012
    • Tom Lane's avatar
      Create an improved FDW option validator function for contrib/dblink. · 8255566f
      Tom Lane authored
      dblink now has its own validator function dblink_fdw_validator(), which is
      better than the core function postgresql_fdw_validator() because it gets
      the list of legal options from libpq instead of having a hard-wired list.
      
      Make the dblink extension module provide a standard foreign data wrapper
      dblink_fdw that encapsulates use of this validator, and recommend use of
      that wrapper instead of making up wrappers on the fly.
      
      Unfortunately, because ad-hoc wrappers *were* recommended practice
      previously, it's not clear when we can get rid of postgresql_fdw_validator
      without causing upgrade problems.  But this is a step in the right
      direction.
      
      Shigeru Hanada, reviewed by KaiGai Kohei
      8255566f
    • Bruce Momjian's avatar
      a9701a1d
  19. Oct 09, 2012
  20. Oct 03, 2012
  21. Oct 02, 2012
    • Tom Lane's avatar
      Work around unportable behavior of malloc(0) and realloc(NULL, 0). · 09ac603c
      Tom Lane authored
      On some platforms these functions return NULL, rather than the more common
      practice of returning a pointer to a zero-sized block of memory.  Hack our
      various wrapper functions to hide the difference by substituting a size
      request of 1.  This is probably not so important for the callers, who
      should never touch the block anyway if they asked for size 0 --- but it's
      important for the wrapper functions themselves, which mistakenly treated
      the NULL result as an out-of-memory failure.  This broke at least pg_dump
      for the case of no user-defined aggregates, as per report from
      Matthew Carrington.
      
      Back-patch to 9.2 to fix the pg_dump issue.  Given the lack of previous
      complaints, it seems likely that there is no live bug in previous releases,
      even though some of these functions were in place before that.
      09ac603c
    • Tom Lane's avatar
      Standardize naming of malloc/realloc/strdup wrapper functions. · a563d941
      Tom Lane authored
      We had a number of variants on the theme of "malloc or die", with the
      majority named like "pg_malloc", but by no means all.  Standardize on the
      names pg_malloc, pg_malloc0, pg_realloc, pg_strdup.  Get rid of pg_calloc
      entirely in favor of using pg_malloc0.
      
      This is an essentially cosmetic change, so no back-patch.  (I did find
      a couple of places where psql and pg_dump were using plain malloc or
      strdup instead of the pg_ versions, but they don't look significant
      enough to bother back-patching.)
      a563d941
    • Bruce Momjian's avatar
      In pg_upgrade, improve error reporting when the number of relation · 8a759809
      Bruce Momjian authored
      objects does not match between the old and new clusters.
      
      Backpatch to 9.2.
      8a759809
    • Bruce Momjian's avatar
      Adjust pg_upgrade query so toast tables related to system catalog schema · ac96b851
      Bruce Momjian authored
      entries are not dumped.   This fixes an error caused by
      droping/recreating the information_schema, but other failures were also
      possible.
      
      Backpatch to 9.2.
      ac96b851
    • Bruce Momjian's avatar
      In pg_upgrade, try to convert the locale names to canonical form before · b61837a4
      Bruce Momjian authored
      comparison;  also report the old/new values if they don't match.
      
      Backpatch to 9.2.
      b61837a4
  22. Oct 01, 2012
    • Tom Lane's avatar
      Provide some static-assertion functionality on all compilers. · 0d0aa5d2
      Tom Lane authored
      On reflection (especially after noticing how many buildfarm critters have
      __builtin_types_compatible_p but not _Static_assert), it seems like we
      ought to try a bit harder to make these macros do something everywhere.
      The initial cut at it would have been no help to code that is compiled only
      on platforms without _Static_assert, for instance; and in any case not all
      our contributors do their initial coding on the latest gcc version.
      
      Some googling about static assertions turns up quite a bit of prior art
      for making it work in compilers that lack _Static_assert.  The method
      that seems closest to our needs involves defining a struct with a bit-field
      that has negative width if the assertion condition fails.  There seems no
      reliable way to get the error message string to be output, but throwing a
      compile error with a confusing message is better than missing the problem
      altogether.
      
      In the same spirit, if we don't have __builtin_types_compatible_p we can at
      least insist that the variable have the same width as the type.  This won't
      catch errors such as "wrong pointer type", but it's far better than
      nothing.
      
      In addition to changing the macro definitions, adjust a
      compile-time-constant Assert in contrib/hstore to use StaticAssertStmt,
      so we can get some buildfarm coverage on whether that macro behaves sanely
      or not.  There's surely more places that could be converted, but this is
      the first one I came across.
      0d0aa5d2
  23. Sep 27, 2012
  24. Sep 19, 2012
Loading