1. 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
  2. 10 Apr, 2014 5 commits
  3. 09 Apr, 2014 5 commits
  4. 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
  5. 07 Apr, 2014 5 commits
  6. 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
  7. 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
  8. 04 Apr, 2014 8 commits