1. 18 Oct, 2010 2 commits
    • Tom Lane's avatar
      Fix a passel of inappropriately-named global functions in GIN. · 419d2374
      Tom Lane authored
      The GIN code has absolutely no business exporting GIN-specific functions
      with names as generic as compareItemPointers() or newScanKey(); that's
      just trouble waiting to happen.  I got annoyed about this again just now
      and decided to fix it.  This commit ensures that all global symbols
      defined in access/gin/ have names including "gin" or "Gin".  There were a
      couple of cases, like names involving "PostingItem", where arguably the
      names were already sufficiently nongeneric; but I figured as long as I was
      risking creating merge problems for unapplied GIN patches I might as well
      impose a uniform policy.
      
      I didn't touch any static symbol names.  There might be some places
      where it'd be appropriate to rename some static functions to match
      siblings that are exported, but I'll leave that for another time.
      419d2374
    • Tom Lane's avatar
      Improve GIN indexscan cost estimation. · 48c7d9f6
      Tom Lane authored
      The better estimate requires more statistics than we previously stored:
      in particular, counts of "entry" versus "data" pages within the index,
      as well as knowledge of the number of distinct key values.  We collect
      this information during initial index build and update it during VACUUM,
      storing the info in new fields on the index metapage.  No initdb is
      required because these fields will read as zeroes in a pre-existing
      index, and the new gincostestimate code is coded to behave (reasonably)
      sanely if they are zeroes.
      
      Teodor Sigaev, reviewed by Jan Urbanski, Tom Lane, and Itagaki Takahiro.
      48c7d9f6
  2. 17 Oct, 2010 1 commit
    • Magnus Hagander's avatar
      Fix msvc build for localized versions of Visual C++ · cd0e8253
      Magnus Hagander authored
      Look only at the non-localized part of the output from "vcbuild /?",
      which is used to determine the version of Visual Studio in use. Different
      languages seem to localize different amounts of the string, but we assume
      the part "Microsoft Visual C++" won't be modified.
      cd0e8253
  3. 16 Oct, 2010 2 commits
  4. 15 Oct, 2010 8 commits
  5. 14 Oct, 2010 10 commits
  6. 13 Oct, 2010 6 commits
  7. 12 Oct, 2010 3 commits
    • Tom Lane's avatar
      Remove some unnecessary tests of pgstat_track_counts. · f4d242ef
      Tom Lane authored
      We may as well make pgstat_count_heap_scan() and related macros just count
      whenever rel->pgstat_info isn't null.  Testing pgstat_track_counts buys
      nothing at all in the normal case where that flag is ON; and when it's OFF,
      the pgstat_info link will be null, so it's still a useless test.
      
      This change is unlikely to buy any noticeable performance improvement,
      but a cycle shaved is a cycle earned; and my investigations earlier today
      convinced me that we're down to the point where individual instructions in
      the inner execution loops are starting to matter.
      f4d242ef
    • Alvaro Herrera's avatar
      Fix typo · 82659e04
      Alvaro Herrera authored
      82659e04
    • Tom Lane's avatar
      Fix plpython so that it again honors typmod while assigning to tuple fields. · 09130e58
      Tom Lane authored
      This was broken in 9.0 while improving plpython's conversion behavior for
      bytea and boolean.  Per bug report from maizi.
      09130e58
  8. 11 Oct, 2010 2 commits
    • Tom Lane's avatar
      Fix assorted bugs in GIN's WAL replay logic. · 4016bdef
      Tom Lane authored
      The original coding was quite sloppy about handling the case where
      XLogReadBuffer fails (because the page has since been deleted).  This
      would result in either "bad buffer id: 0" or an Assert failure during
      replay, if indeed the page were no longer there.  In a couple of places
      it also neglected to check whether the change had already been applied,
      which would probably result in corrupted index contents.  I believe that
      bug #5703 is an instance of the first problem.  These issues could show up
      without replication, but only if you were unfortunate enough to crash
      between modification of a GIN index and the next checkpoint.
      
      Back-patch to 8.2, which is as far back as GIN has WAL support.
      4016bdef
    • Tom Lane's avatar
      Improve the planner's simplification of NOT constructs. · 220e45bf
      Tom Lane authored
      This patch merges the responsibility for NOT-flattening into
      eval_const_expressions' processing.  It wasn't done that way originally
      because prepqual.c is far older than eval_const_expressions.  But putting
      this work into eval_const_expressions saves one pass over the qual trees,
      and in fact saves even more than that because we can exploit the knowledge
      that the subexpressions have already been recursively simplified.  Doing it
      this way also lets us do it uniformly over all expressions, whereas
      prepqual.c formerly just did it at top level to save cycles.  That should
      improve the planner's ability to recognize logically-equivalent constructs.
      
      While at it, also add the ability to fold a NOT into BooleanTest and
      NullTest constructs (the latter only for the scalar-datatype case).
      
      Per discussion of bug #5702.
      220e45bf
  9. 10 Oct, 2010 3 commits
    • Tom Lane's avatar
      Teach psql to do tab completion for names of psql variables. · b48b9cb3
      Tom Lane authored
      Completion is supported in the context of \set and when interpolating
      a variable value using :foo etc.
      
      In passing, fix some places in tab-complete.c that weren't following
      project style for comment formatting.
      
      Pavel Stehule, reviewed by Itagaki Takahiro
      b48b9cb3
    • Tom Lane's avatar
      Support triggers on views. · 2ec993a7
      Tom Lane authored
      This patch adds the SQL-standard concept of an INSTEAD OF trigger, which
      is fired instead of performing a physical insert/update/delete.  The
      trigger function is passed the entire old and/or new rows of the view,
      and must figure out what to do to the underlying tables to implement
      the update.  So this feature can be used to implement updatable views
      using trigger programming style rather than rule hacking.
      
      In passing, this patch corrects the names of some columns in the
      information_schema.triggers view.  It seems the SQL committee renamed
      them somewhere between SQL:99 and SQL:2003.
      
      Dean Rasheed, reviewed by Bernd Helmle; some additional hacking by me.
      2ec993a7
    • Peter Eisentraut's avatar
      Extensive ECPG documentation improvements · f7b15b50
      Peter Eisentraut authored
      Satoshi Nagayasu, reviewed and revised by Peter Eisentraut
      
      Since this introduces new refentries that we probably don't want to publish as
      man pages, tweak man page stylesheet to omit man pages without manvolnum
      element.
      
      Peter Eisentraut
      f7b15b50
  10. 09 Oct, 2010 1 commit
  11. 08 Oct, 2010 2 commits
    • Bruce Momjian's avatar
      f7dbddac
    • Tom Lane's avatar
      Fix sloppy usage of TRIGGER_FIRED_BEFORE/TRIGGER_FIRED_AFTER. · caaf2e84
      Tom Lane authored
      Various places were testing TRIGGER_FIRED_BEFORE() where what they really
      meant was !TRIGGER_FIRED_AFTER(), or vice versa.  This needs to be cleaned
      up because there are about to be more than two possible states.
      
      We might want to note this in the 9.1 release notes as something for
      trigger authors to double-check.
      
      For consistency's sake I also changed some places that assumed that
      TRIGGER_FIRED_FOR_ROW and TRIGGER_FIRED_FOR_STATEMENT are necessarily
      mutually exclusive; that's not in immediate danger of breaking, but
      it's still sloppier than it should be.
      
      Extracted from Dean Rasheed's patch for triggers on views.  I'm committing
      this separately since it's an identifiable separate issue, and is the
      only reason for the patch to touch most of these particular files.
      caaf2e84