1. 16 Mar, 2012 9 commits
    • Bruce Momjian's avatar
      In pg_upgrade, create a script to incrementally generate more accurate · faec2815
      Bruce Momjian authored
      optimizer statistics so the cluster can be made available sooner.
      faec2815
    • Peter Eisentraut's avatar
      libpq: Fix minor memory leaks · d4318483
      Peter Eisentraut authored
      When using connection info arrays with a conninfo string in the dbname
      slot, some memory would be leaked if an error occurred while
      processing the following array slots.
      
      found by Coverity
      d4318483
    • Peter Eisentraut's avatar
      psql: Remove inappropriate const qualifiers · 598bb8cd
      Peter Eisentraut authored
      Since mbvalidate() can alter the string it validates, having the
      callers claim that the strings they accept are const is inappropriate.
      598bb8cd
    • Peter Eisentraut's avatar
      pg_dump: Fix crash with invalid pg_cast row · 359dea28
      Peter Eisentraut authored
      An invalid combination of pg_cast.castfunc and pg_cast.castmethod
      would result in a segmentation fault.  Now it prints a warning.
      
      found by Coverity
      359dea28
    • Peter Eisentraut's avatar
      d8e5b342
    • Peter Eisentraut's avatar
      backend: Fix minor memory leak in configuration file processing · 693ff85d
      Peter Eisentraut authored
      Just for consistency with the other code paths.
      
      found by Coverity
      693ff85d
    • Tom Lane's avatar
      Improve commentary in match_pathkeys_to_index(). · b67ad046
      Tom Lane authored
      For a little while there I thought match_pathkeys_to_index() was broken
      because it wasn't trying to match index columns to pathkeys in order.
      Actually that's correct, because GiST can support ordering operators
      on any random collection of index columns, but it sure needs a comment.
      b67ad046
    • Tom Lane's avatar
      Revisit handling of UNION ALL subqueries with non-Var output columns. · dd4134ea
      Tom Lane authored
      In commit 57664ed2 I tried to fix a bug
      reported by Teodor Sigaev by making non-simple-Var output columns distinct
      (by wrapping their expressions with dummy PlaceHolderVar nodes).  This did
      not work too well.  Commit b28ffd0f fixed
      some ensuing problems with matching to child indexes, but per a recent
      report from Claus Stadler, constraint exclusion of UNION ALL subqueries was
      still broken, because constant-simplification didn't handle the injected
      PlaceHolderVars well either.  On reflection, the original patch was quite
      misguided: there is no reason to expect that EquivalenceClass child members
      will be distinct.  So instead of trying to make them so, we should ensure
      that we can cope with the situation when they're not.
      
      Accordingly, this patch reverts the code changes in the above-mentioned
      commits (though the regression test cases they added stay).  Instead, I've
      added assorted defenses to make sure that duplicate EC child members don't
      cause any problems.  Teodor's original problem ("MergeAppend child's
      targetlist doesn't match MergeAppend") is addressed more directly by
      revising prepare_sort_from_pathkeys to let the parent MergeAppend's sort
      list guide creation of each child's sort list.
      
      In passing, get rid of add_sort_column; as far as I can tell, testing for
      duplicate sort keys at this stage is dead code.  Certainly it doesn't
      trigger often enough to be worth expending cycles on in ordinary queries.
      And keeping the test would've greatly complicated the new logic in
      prepare_sort_from_pathkeys, because comparing pathkey list entries against
      a previous output array requires that we not skip any entries in the list.
      
      Back-patch to 9.1, like the previous patches.  The only known issue in
      this area that wasn't caused by the ill-advised previous patches was the
      MergeAppend planning failure, which of course is not relevant before 9.1.
      It's possible that we need some of the new defenses against duplicate child
      EC entries in older branches, but until there's some clear evidence of that
      I'm going to refrain from back-patching further.
      dd4134ea
    • Heikki Linnakangas's avatar
  2. 15 Mar, 2012 5 commits
  3. 14 Mar, 2012 5 commits
  4. 13 Mar, 2012 6 commits
    • Peter Eisentraut's avatar
      pg_dump: Fix some minor memory leaks · acfaa596
      Peter Eisentraut authored
      Although we often don't care about freeing all memory in pg_dump,
      these functions already freed the same memory in other code paths, so
      we might as well do it consistently.
      
      found by Coverity
      acfaa596
    • Tom Lane's avatar
      Patch some corner-case bugs in pl/python. · 5cd72c7a
      Tom Lane authored
      Dave Malcolm of Red Hat is working on a static code analysis tool for
      Python-related C code.  It reported a number of problems in plpython,
      most of which were failures to check for NULL results from object-creation
      functions, so would only be an issue in very-low-memory situations.
      
      Patch in HEAD and 9.1.  We could go further back but it's not clear that
      these issues are important enough to justify the work.
      
      Jan Urbański
      5cd72c7a
    • Tom Lane's avatar
      Fix minor memory leak in PLy_typeinfo_dealloc(). · a14fa846
      Tom Lane authored
      We forgot to free the per-attribute array element descriptors.
      
      Jan Urbański
      a14fa846
    • Tom Lane's avatar
      Create a stack of pl/python "execution contexts". · ed75380b
      Tom Lane authored
      This replaces the former global variable PLy_curr_procedure, and provides
      a place to stash per-call-level information.  In particular we create a
      per-call-level scratch memory context.
      
      For the moment, the scratch context is just used to avoid leaking memory
      from datatype output function calls in PLyDict_FromTuple.  There probably
      will be more use-cases in future.
      
      Although this is a fix for a pre-existing memory leakage bug, it seems
      sufficiently invasive to not want to back-patch; it feels better as part
      of the major rearrangement of plpython code that we've already done as
      part of 9.2.
      
      Jan Urbański
      ed75380b
    • Robert Haas's avatar
      pgstattuple: Use a BufferAccessStrategy object to avoid cache-trashing. · 2e46bf67
      Robert Haas authored
      Jaime Casanova, reviewed by Noah Misch, slightly modified by me.
      2e46bf67
    • Robert Haas's avatar
      pgstattuple: Add new error case for spgist indexes. · 97c85098
      Robert Haas authored
      Extracted from a larger patch by Jaime Casanova, reviewed by Noah Misch.
      I think this error message could use some more extensive revision, but
      this at least makes the handling of spgist consistent with what we do for
      other types of indexes that this code doesn't know how to handle.
      97c85098
  5. 12 Mar, 2012 5 commits
    • Bruce Momjian's avatar
      In pg_upgrade, add various logging improvements: · 717f6d60
      Bruce Momjian authored
      	add ability to control permissions of created files
      	have psql echo its queries for easier debugging
      	output four separate log files, and delete them on success
      	add -r/--retain option to keep log files after success
      	make logs file append-only
      	remove -g/-G/-l logging options
      	sugggest tailing appropriate log file on failure
      	enhance -v/--verbose behavior
      717f6d60
    • Tom Lane's avatar
      Fix SPGiST vacuum algorithm to handle concurrent tuple motion properly. · b4af1c25
      Tom Lane authored
      A leaf tuple that we need to delete could get moved as a consequence of an
      insertion happening concurrently with the VACUUM scan.  If it moves from a
      page past the current scan point to a page before, we'll miss it, which is
      not acceptable.  Hence, when we see a leaf-page REDIRECT that could have
      been made since our scan started, chase down the redirection pointer much
      as if we were doing a normal index search, and be sure to vacuum every page
      it leads to.  This fixes the issue because, if the tuple was on page N at
      the instant we start our scan, we will surely find it as a consequence of
      chasing the redirect from page N, no matter how much it moves around in
      between.  Problem noted by Takashi Yamamoto.
      b4af1c25
    • Peter Eisentraut's avatar
      Use correct sizeof operand in qsort call · bad250f4
      Peter Eisentraut authored
      Probably no practical impact, since all pointers ought to have the
      same size, but it was wrong nonetheless.  Found by Coverity.
      bad250f4
    • Peter Eisentraut's avatar
      Add comment for missing break in switch · c9f310d3
      Peter Eisentraut authored
      For clarity, following other sites, and to silence Coverity.
      c9f310d3
    • Bruce Momjian's avatar
      Remove tabs in SGML files · 9a395832
      Bruce Momjian authored
      9a395832
  6. 11 Mar, 2012 7 commits
    • Tom Lane's avatar
      Make INSERT/UPDATE queries depend on their specific target columns. · c6be1f43
      Tom Lane authored
      We have always created a whole-table dependency for the target relation,
      but that's not really good enough, as it doesn't prevent scenarios such
      as dropping an individual target column or altering its type.  So we
      have to create an individual dependency for each target column, as well.
      
      Per report from Bill MacArthur of a rule containing UPDATE breaking
      after such an alteration.  Note that this patch doesn't try to make
      such cases work, only to ensure that the attempted ALTER TABLE throws
      an error telling you it can't cope with adjusting the rule.
      
      This is a long-standing bug, but given the lack of prior reports
      I'm not going to risk back-patching it.  A back-patch wouldn't do
      anything to fix existing rules' dependency lists, anyway.
      c6be1f43
    • Tom Lane's avatar
      Make parameter name consistent with syntax summary. · 81421661
      Tom Lane authored
      Thomas Hunger
      81421661
    • Tom Lane's avatar
      Fix documented type of t_infomask2. · 1e496447
      Tom Lane authored
      Per Koizumi Satoru
      1e496447
    • Tom Lane's avatar
      Teach SPGiST to store nulls and do whole-index scans. · c6a11b89
      Tom Lane authored
      This patch fixes the other major compatibility-breaking limitation of
      SPGiST, that it didn't store anything for null values of the indexed
      column, and so could not support whole-index scans or "x IS NULL"
      tests.  The approach is to create a wholly separate search tree for
      the null entries, and use fixed "allTheSame" insertion and search
      rules when processing this tree, instead of calling the index opclass
      methods.  This way the opclass methods do not need to worry about
      dealing with nulls.
      
      Catversion bump is for pg_am updates as well as the change in on-disk
      format of SPGiST indexes; there are some tweaks in SPGiST WAL records
      as well.
      
      Heavily rewritten version of a patch by Oleg Bartunov and Teodor Sigaev.
      (The original also stored nulls separately, but it reused GIN code to do
      so; which required undesirable compromises in the on-disk format, and
      would likely lead to bugs due to the GIN code being required to work in
      two very different contexts.)
      c6a11b89
    • Michael Meskes's avatar
      Removed redundant "the" from ecpg's docs. · fc227a4e
      Michael Meskes authored
      Typo spotted by Erik Rijkers.
      fc227a4e
    • Tatsuo Ishii's avatar
      da9e73a1
    • Peter Eisentraut's avatar
      Add more detail to error message for invalid arguments for server process · 86947e66
      Peter Eisentraut authored
      It now prints the argument that was at fault.
      
      Also fix a small misbehavior where the error message issued by
      getopt() would complain about a program named "--single", because
      that's what argv[0] is in the server process.
      86947e66
  7. 10 Mar, 2012 2 commits
    • Tom Lane's avatar
      Restructure SPGiST opclass interface API to support whole-index scans. · 03e56f79
      Tom Lane authored
      The original API definition was incapable of supporting whole-index scans
      because there was no way to invoke leaf-value reconstruction without
      checking any qual conditions.  Also, it was inefficient for
      multiple-qual-condition scans because value reconstruction got done over
      again for each qual condition, and because other internal work in the
      consistent functions likewise had to be done for each qual.  To fix these
      issues, pass the whole scankey array to the opclass consistent functions,
      instead of only letting them see one item at a time.  (Essentially, the
      loop over scankey entries is now inside the consistent functions not
      outside them.  This makes the consistent functions a bit more complicated,
      but not unreasonably so.)
      
      In itself this commit does nothing except save a few cycles in
      multiple-qual-condition index scans, since we can't support whole-index
      scans on SPGiST indexes until nulls are included in the index.  However,
      I consider this a must-fix for 9.2 because once we release it will get
      very much harder to change the opclass API definition.
      03e56f79
    • Peter Eisentraut's avatar
      Add support for renaming constraints · 39d74e34
      Peter Eisentraut authored
      reviewed by Josh Berkus and Dimitri Fontaine
      39d74e34
  8. 09 Mar, 2012 1 commit