1. 14 Apr, 2014 9 commits
  2. 13 Apr, 2014 7 commits
    • Tom Lane's avatar
      Improve some O(N^2) behavior in window function evaluation. · e0c91a7f
      Tom Lane authored
      Repositioning the tuplestore seek pointer in window_gettupleslot() turns
      out to be a very significant expense when the window frame is sizable and
      the frame end can move.  To fix, introduce a tuplestore function for
      skipping an arbitrary number of tuples in one call, parallel to the one we
      introduced for tuplesort objects in commit 8d65da1f.  This reduces the cost
      of window_gettupleslot() to O(1) if the tuplestore has not spilled to disk.
      As in the previous commit, I didn't try to do any real optimization of
      tuplestore_skiptuples for the case where the tuplestore has spilled to
      disk.  There is probably no practical way to get the cost to less than O(N)
      anyway, but perhaps someone can think of something later.
      
      Also fix PersistHoldablePortal() to make use of this API now that we have
      it.
      
      Based on a suggestion by Dean Rasheed, though this turns out not to look
      much like his patch.
      e0c91a7f
    • Tom Lane's avatar
      Suppress compiler warning in new contrib/pg_trgm code. · 46a60abf
      Tom Lane authored
      MSVC doesn't seem to like it when a constant initializer loses
      precision upon being assigned.
      
      David Rowley
      46a60abf
    • Stephen Frost's avatar
      Make a dedicated AlterTblSpcStmt production · 5f508b6d
      Stephen Frost authored
      Given that ALTER TABLESPACE has moved on from just existing for
      general purpose rename/owner changes, it deserves its own top-level
      production in the grammar.  This also cleans up the RenameStmt to
      only ever be used for actual RENAMEs again- it really wasn't
      appropriate to hide non-RENAME productions under there.
      
      Noted by Alvaro.
      5f508b6d
    • Stephen Frost's avatar
      Add ANALYZE into regression tests · b3e65937
      Stephen Frost authored
      Looks like we can end up with different plans happening on the
      buildfarm, which breaks the regression tests when we include
      EXPLAIN output (which is done in the regression tests for
      updatable security views, to ensure that the user-defined
      function isn't pushed down to a level where it could view the
      rows before the security quals are applied).
      
      This adds in ANALYZE to hopefully make the plans consistent.
      The ANALYZE ends up changing the original plan too, so the
      update looks bigger than it really is.  The new plan looks
      perfectly valid, of course.
      b3e65937
    • Tom Lane's avatar
      Provide moving-aggregate support for boolean aggregates. · d95425c8
      Tom Lane authored
      David Rowley and Florian Pflug, reviewed by Dean Rasheed
      d95425c8
    • Stephen Frost's avatar
      Make security barrier views automatically updatable · 842faa71
      Stephen Frost authored
      Views which are marked as security_barrier must have their quals
      applied before any user-defined quals are called, to prevent
      user-defined functions from being able to see rows which the
      security barrier view is intended to prevent them from seeing.
      
      Remove the restriction on security barrier views being automatically
      updatable by adding a new securityQuals list to the RTE structure
      which keeps track of the quals from security barrier views at each
      level, independently of the user-supplied quals.  When RTEs are
      later discovered which have securityQuals populated, they are turned
      into subquery RTEs which are marked as security_barrier to prevent
      any user-supplied quals being pushed down (modulo LEAKPROOF quals).
      
      Dean Rasheed, reviewed by Craig Ringer, Simon Riggs, KaiGai Kohei
      842faa71
    • Tom Lane's avatar
      Provide moving-aggregate support for a bunch of numerical aggregates. · 9d229f39
      Tom Lane authored
      First installment of the promised moving-aggregate support in built-in
      aggregates: count(), sum(), avg(), stddev() and variance() for
      assorted datatypes, though not for float4/float8.
      
      In passing, remove a 2001-vintage kluge in interval_accum(): interval
      array elements have been properly aligned since around 2003, but
      nobody remembered to take out this workaround.  Also, fix a thinko
      in the opr_sanity tests for moving-aggregate catalog entries.
      
      David Rowley and Florian Pflug, reviewed by Dean Rasheed
      9d229f39
  3. 12 Apr, 2014 1 commit
    • Tom Lane's avatar
      Create infrastructure for moving-aggregate optimization. · a9d9acbf
      Tom Lane authored
      Until now, when executing an aggregate function as a window function
      within a window with moving frame start (that is, any frame start mode
      except UNBOUNDED PRECEDING), we had to recalculate the aggregate from
      scratch each time the frame head moved.  This patch allows an aggregate
      definition to include an alternate "moving aggregate" implementation
      that includes an inverse transition function for removing rows from
      the aggregate's running state.  As long as this can be done successfully,
      runtime is proportional to the total number of input rows, rather than
      to the number of input rows times the average frame length.
      
      This commit includes the core infrastructure, documentation, and regression
      tests using user-defined aggregates.  Follow-on commits will update some
      of the built-in aggregates to use this feature.
      
      David Rowley and Florian Pflug, reviewed by Dean Rasheed; additional
      hacking by me
      a9d9acbf
  4. 10 Apr, 2014 5 commits
  5. 09 Apr, 2014 5 commits
  6. 08 Apr, 2014 6 commits
    • Robert Haas's avatar
      Fix silly oversight in patch to remove dsm state file. · 0c4ea7a3
      Robert Haas authored
      I'm not sure if this is what's causing the Windows buildfarm members
      to get unhappy, but I don't think it can be helping anything...
      0c4ea7a3
    • Tom Lane's avatar
      Add an in-core GiST index opclass for inet/cidr types. · f23a5630
      Tom Lane authored
      This operator class can accelerate subnet/supernet tests as well as
      btree-equivalent ordered comparisons.  It also handles a new network
      operator inet && inet (overlaps, a/k/a "is supernet or subnet of"),
      which is expected to be useful in exclusion constraints.
      
      Ideally this opclass would be the default for GiST with inet/cidr data,
      but we can't mark it that way until we figure out how to do a more or
      less graceful transition from the current situation, in which the
      really-completely-bogus inet/cidr opclasses in contrib/btree_gist are
      marked as default.  Having the opclass in core and not default is better
      than not having it at all, though.
      
      While at it, add new documentation sections to allow us to officially
      document GiST/GIN/SP-GiST opclasses, something there was never a clear
      place to do before.  I filled these in with some simple tables listing
      the existing opclasses and the operators they support, but there's
      certainly scope to put more information there.
      
      Emre Hasegeli, reviewed by Andreas Karlsson, further hacking by me
      f23a5630
    • Robert Haas's avatar
      doc: Fix typo. · 02f65617
      Robert Haas authored
      Ian Barwick
      02f65617
    • Robert Haas's avatar
      Get rid of the dynamic shared memory state file. · 11a65eed
      Robert Haas authored
      Instead of storing the ID of the dynamic shared memory control
      segment in a file within the data directory, store it in the main
      control segment.  This avoids a number of nasty corner cases,
      most seriously that doing an online backup and then using it on
      the same machine (e.g. to fire up a standby) would result in the
      standby clobbering all of the master's dynamic shared memory
      segments.
      
      Per complaints from Heikki Linnakangas, Fujii Masao, and Tom
      Lane.
      11a65eed
    • Robert Haas's avatar
      Add new to_reg* functions for error-free OID lookups. · 0886fc6a
      Robert Haas authored
      These functions won't throw an error if the object doesn't exist,
      or if (for functions and operators) there's more than one matching
      object.
      
      Yugo Nagata and Nozomi Anzai, reviewed by Amit Khandekar, Marti
      Raudsepp, Amit Kapila, and me.
      0886fc6a
    • Heikki Linnakangas's avatar
      Fix hot standby bug with GiST scans. · 7ca32e25
      Heikki Linnakangas authored
      Don't reset the rightlink of a page when replaying a page update record.
      This was a leftover from pre-hot standby days, when it was not possible to
      have scans concurrent with WAL replay. Resetting the right-link was not
      necessary back then either, but it was done for the sake of tidiness. But
      with hot standby, it's wrong, because a concurrent scan might still need it.
      
      Backpatch all versions with hot standby, 9.0 and above.
      7ca32e25
  7. 07 Apr, 2014 5 commits
  8. 06 Apr, 2014 2 commits