1. 10 Apr, 2014 1 commit
  2. 09 Apr, 2014 5 commits
  3. 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
  4. 07 Apr, 2014 5 commits
  5. 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
  6. 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
  7. 04 Apr, 2014 9 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
    • Tom Lane's avatar
      Fix bogus time printout in walreceiver's debug log messages. · 8120c745
      Tom Lane authored
      The displayed sendtime and receipttime were always exactly equal, because
      somebody forgot that timestamptz_to_str returns a static buffer (thereby
      simplifying life for most callers, at the cost of complicating it for those
      who need two results concurrently).  Apply the same pstrdup solution used
      by the other call sites with this issue.  Back-patch to 9.2 where the
      faulty code was introduced.  Per bug #9849 from Haruka Takatsuka, though
      this is not exactly his patch.
      
      Possibly we should change timestamptz_to_str's API, but I wouldn't want
      to do so in the back branches.
      8120c745
    • Robert Haas's avatar
      Fix some compiler warnings that clang emits with -pedantic. · 59202fae
      Robert Haas authored
      Andres Freund
      59202fae
    • Heikki Linnakangas's avatar
      Move multixid allocation out of critical section. · b1236f4b
      Heikki Linnakangas authored
      It can fail if you run out of memory.
      
      This call was added in 9.3, so backpatch to 9.3 only.
      b1236f4b
    • Heikki Linnakangas's avatar
      In checkpoint, move the check for in-progress xacts out of critical section. · d9e7873b
      Heikki Linnakangas authored
      GetVirtualXIDsDelayingChkpt calls palloc, which isn't safe in a critical
      section. I thought I covered this case with the exemption for the
      checkpointer, but CreateCheckPoint is also called from the startup process.
      d9e7873b
    • Heikki Linnakangas's avatar
      Add an Assertion that you don't palloc within a critical section. · 4a170ee9
      Heikki Linnakangas authored
      This caught a bunch of cases doing that already, which I just fixed in
      previous commit. This is the assertion itself.
      
      Per Tom Lane's idea.
      4a170ee9
    • Heikki Linnakangas's avatar
      Avoid allocations in critical sections. · 877b0887
      Heikki Linnakangas authored
      If a palloc in a critical section fails, it becomes a PANIC.
      877b0887
    • Tom Lane's avatar
      Fix non-equivalence of VARIADIC and non-VARIADIC function call formats. · c7b35395
      Tom Lane authored
      For variadic functions (other than VARIADIC ANY), the syntaxes foo(x,y,...)
      and foo(VARIADIC ARRAY[x,y,...]) should be considered equivalent, since the
      former is converted to the latter at parse time.  They have indeed been
      equivalent, in all releases before 9.3.  However, commit 75b39e79 made an
      ill-considered decision to record which syntax had been used in FuncExpr
      nodes, and then to make equal() test that in checking node equality ---
      which caused the syntaxes to not be seen as equivalent by the planner.
      This is the underlying cause of bug #9817 from Dmitry Ryabov.
      
      It might seem that a quick fix would be to make equal() disregard
      FuncExpr.funcvariadic, but the same commit made that untenable, because
      the field actually *is* semantically significant for some VARIADIC ANY
      functions.  This patch instead adopts the approach of redefining
      funcvariadic (and aggvariadic, in HEAD) as meaning that the last argument
      is a variadic array, whether it got that way by parser intervention or was
      supplied explicitly by the user.  Therefore the value will always be true
      for non-ANY variadic functions, restoring the principle of equivalence.
      (However, the planner will continue to consider use of VARIADIC as a
      meaningful difference for VARIADIC ANY functions, even though some such
      functions might disregard it.)
      
      In HEAD, this change lets us simplify the decompilation logic in
      ruleutils.c, since the funcvariadic/aggvariadic flag tells directly whether
      to print VARIADIC.  However, in 9.3 we have to continue to cope with
      existing stored rules/views that might contain the previous definition.
      Fortunately, this just means no change in ruleutils.c, since its existing
      behavior effectively ignores funcvariadic for all cases other than VARIADIC
      ANY functions.
      
      In HEAD, bump catversion to reflect the fact that FuncExpr.funcvariadic
      changed meanings; this is sort of pro forma, since I don't believe any
      built-in views are affected.
      
      Unfortunately, this patch doesn't magically fix everything for affected
      9.3 users.  After installing 9.3.5, they might need to recreate their
      rules/views/indexes containing variadic function calls in order to get
      everything consistent with the new definition.  As in the cited bug,
      the symptom of a problem would be failure to use a nominally matching
      index that has a variadic function call in its definition.  We'll need
      to mention this in the 9.3.5 release notes.
      c7b35395
  8. 03 Apr, 2014 4 commits
    • Tom Lane's avatar
      Code review for commit d26888bc. · 741364bf
      Tom Lane authored
      Mostly, copy-edit the comments; but also fix it to not reject domains over
      arrays.
      741364bf
    • Tom Lane's avatar
      Fix documentation about joining pg_locks to other views. · 42c6236f
      Tom Lane authored
      The advice to join to pg_prepared_xacts via the transaction column was not
      updated when the transaction column was replaced by virtualtransaction.
      Since it's not quite obvious how to do that join, give an explicit example.
      For consistency also give an example for the adjacent case of joining to
      pg_stat_activity.  And link-ify the view references too, just because we
      can.  Per bug #9840 from Alexey Bashtanov.
      
      Michael Paquier and Tom Lane
      42c6236f
    • Tom Lane's avatar
      Avoid promising that "ADD COLUMN ... DEFAULT NULL" is free. · 879808e5
      Tom Lane authored
      The system realizes that DEFAULT NULL is dummy in simple cases, but not if
      a cast function (such as a length coercion) needs to be applied.  It's
      dubious that suppressing that function call would be appropriate, anyway.
      For the moment, let's just adjust the docs to say that you should omit the
      DEFAULT clause if you don't want a rewrite to happen.  Per gripe from Amit
      Langote.
      879808e5
    • Heikki Linnakangas's avatar
      Avoid palloc in critical section in GiST WAL-logging. · 04e298b8
      Heikki Linnakangas authored
      Memory allocation can fail if you run out of memory, and inside a critical
      section that will lead to a PANIC. Use conservatively-sized arrays in stack
      instead.
      
      There was previously no explicit limit on the number of pages a GiST split
      can produce, it was only limited by the number of LWLocks that can be held
      simultaneously (100 at the moment). This patch adds an explicit limit of 75
      pages. That should be plenty, a typical split shouldn't produce more than
      2-3 page halves.
      
      The bug has been there forever, but only backpatch down to 9.1. The code
      was changed significantly in 9.1, and it doesn't seem worth the risk or
      trouble to adapt this for 9.0 and 8.4.
      04e298b8