1. 13 Apr, 2014 6 commits
    • 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
  2. 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
  3. 10 Apr, 2014 5 commits
  4. 09 Apr, 2014 5 commits
  5. 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
  6. 07 Apr, 2014 5 commits
  7. 06 Apr, 2014 4 commits
    • Simon Riggs's avatar
      Extra warnings and errors for PL/pgSQL · 7d8f1de1
      Simon Riggs authored
      Infrastructure to allow
       plpgsql.extra_warnings
       plpgsql.extra_errors
      
      Initial extra checks only for shadowed_variables
      
      Marko Tiikkaja and Petr Jelinek
      Reviewed by Simon Riggs and Pavel Stěhule
      7d8f1de1
    • Simon Riggs's avatar
      Isolation test files for ALTER TABLE patch · f14a6bbe
      Simon Riggs authored
      f14a6bbe
    • Simon Riggs's avatar
      Reduce lock levels of some ALTER TABLE cmds · e5550d5f
      Simon Riggs authored
      VALIDATE CONSTRAINT
      
      CLUSTER ON
      SET WITHOUT CLUSTER
      
      ALTER COLUMN SET STATISTICS
      ALTER COLUMN SET ()
      ALTER COLUMN RESET ()
      
      All other sub-commands use AccessExclusiveLock
      
      Simon Riggs and Noah Misch
      
      Reviews by Robert Haas and Andres Freund
      e5550d5f
    • Tom Lane's avatar
      Improve contrib/pg_trgm's heuristics for regexp index searches. · 80a5cf64
      Tom Lane authored
      When extracting trigrams from a regular expression for search of a GIN or
      GIST trigram index, it's useful to penalize (preferentially discard)
      trigrams that contain whitespace, since those are typically far more common
      in the index than trigrams not containing whitespace.  Of course, this
      should only be a preference not a hard rule, since we might otherwise end
      up with no trigrams to search for.  The previous coding tended to produce
      fairly inefficient trigram search sets for anchored regexp patterns, as
      reported by Erik Rijkers.  This patch penalizes whitespace-containing
      trigrams, and also reduces the target number of extracted trigrams, since
      experience suggests that the original coding tended to select too many
      trigrams to search for.
      
      Alexander Korotkov, reviewed by Tom Lane
      80a5cf64
  8. 05 Apr, 2014 6 commits
    • Tom Lane's avatar
      Block signals earlier during postmaster startup. · 5d8117e1
      Tom Lane authored
      Formerly, we set up the postmaster's signal handling only when we were
      about to start launching subprocesses.  This is a bad idea though, as
      it means that for example a SIGINT arriving before that will kill the
      postmaster instantly, perhaps leaving lockfiles, socket files, shared
      memory, etc laying about.  We'd rather that such a signal caused orderly
      postmaster termination including releasing of those resources.  A simple
      fix is to move the PostmasterMain stanza that initializes signal handling
      to an earlier point, before we've created any such resources.  Then, an
      early-arriving signal will be blocked until we're ready to deal with it
      in the usual way.  (The only part that really needs to be moved up is
      blocking of signals, but it seems best to keep the signal handler
      installation calls together with that; for one thing this ensures the
      kernel won't drop any signals we wished to get.  The handlers won't get
      invoked in any case until we unblock signals in ServerLoop.)
      
      Per a report from MauMau.  He proposed changing the way "pg_ctl stop"
      works to deal with this, but that'd just be masking one symptom not
      fixing the core issue.
      
      It's been like this since forever, so back-patch to all supported branches.
      5d8117e1
    • Heikki Linnakangas's avatar
      Fix another palloc in critical section. · ffbba6ee
      Heikki Linnakangas authored
      Also add a regression test for a GIN index with enough items with the same
      key, so that a GIN posting tree gets created. Apparently none of the
      existing GIN tests were large enough for that.
      
      This code is new, no backpatching required.
      ffbba6ee
    • Tom Lane's avatar
      Fix processing of PGC_BACKEND GUC parameters on Windows. · 6862ca69
      Tom Lane authored
      EXEC_BACKEND builds (i.e., Windows) failed to absorb values of PGC_BACKEND
      parameters if they'd been changed post-startup via the config file.  This
      for example prevented log_connections from working if it were turned on
      post-startup.  The mechanism for handling this case has always been a bit
      of a kluge, and it wasn't revisited when we implemented EXEC_BACKEND.
      While in a normal forking environment new backends will inherit the
      postmaster's value of such settings, EXEC_BACKEND backends have to read
      the settings from the CONFIG_EXEC_PARAMS file, and they were mistakenly
      rejecting them.  So this case has always been broken in the Windows port;
      so back-patch to all supported branches.
      
      Amit Kapila
      6862ca69
    • Tom Lane's avatar
      ecpg/ecpglib must build the src/port files it uses with -DFRONTEND. · 44c5d387
      Tom Lane authored
      Remarkably, this hasn't been noticed before, though it surely should
      have been happening since around the fall of the Byzantine empire.
      Commit 438b529604 changed path.c to depend on FRONTEND, and that exposed
      the omission, per buildfarm reports.
      
      I'm suspicious that some other subdirectories are missing this too,
      but this one change is enough to make ecpg tests pass for me.
      44c5d387
    • Tom Lane's avatar
      Fix tablespace creation WAL replay to work on Windows. · abe075df
      Tom Lane authored
      The code segment that removes the old symlink (if present) wasn't clued
      into the fact that on Windows, symlinks are junction points which have
      to be removed with rmdir().
      
      Backpatch to 9.0, where the failing code was introduced.
      
      MauMau, reviewed by Muhammad Asif Naeem and Amit Kapila
      abe075df
    • Tom Lane's avatar
      Allow "-C variable" and "--describe-config" even to root users. · b203c57b
      Tom Lane authored
      There's no really compelling reason to refuse to do these read-only,
      non-server-starting options as root, and there's at least one good
      reason to allow -C: pg_ctl uses -C to find out the true data directory
      location when pointed at a config-only directory.  On Windows, this is
      done before dropping administrator privileges, which means that pg_ctl
      fails for administrators if and only if a config-only layout is used.
      
      Since the root-privilege check is done so early in startup, it's a bit
      awkward to check for these switches.  Make the somewhat arbitrary
      decision that we'll only skip the root check if -C is the first switch.
      This is not just to make the code a bit simpler: it also guarantees that
      we can't misinterpret a --boot mode switch.  (While AuxiliaryProcessMain
      doesn't currently recognize any such switch, it might have one in the
      future.)  This is no particular problem for pg_ctl, and since the whole
      behavior is undocumented anyhow, it's not a documentation issue either.
      (--describe-config only works as the first switch anyway, so this is
      no restriction for that case either.)
      
      Back-patch to 9.2 where pg_ctl first began to use -C.
      
      MauMau, heavily edited by me
      b203c57b
  9. 04 Apr, 2014 2 commits
    • Tom Lane's avatar
      Preserve errno across free(). · 2209c0f8
      Tom Lane authored
      Dept. of second thoughts: free() isn't guaranteed not to change errno.
      Make sure we report the right error if getcwd() fails.
      2209c0f8
    • Tom Lane's avatar
      Make sure -D is an absolute path when starting server on Windows. · 9aca5125
      Tom Lane authored
      This is needed because Windows services may get started with a different
      current directory than where pg_ctl is executed.  We want relative -D
      paths to be interpreted relative to pg_ctl's CWD, similarly to what
      happens on other platforms.
      
      In support of this, move the backend's make_absolute_path() function
      into src/port/path.c (where it probably should have been long since)
      and get rid of the rather inferior version in pg_regress.
      
      Kumar Rajeev Rastogi, reviewed by MauMau
      9aca5125