1. 22 Mar, 2015 3 commits
  2. 21 Mar, 2015 2 commits
    • Heikki Linnakangas's avatar
      Make pg_xlogdump MSVC build work more like others. · 1933a5bb
      Heikki Linnakangas authored
      Instead of copying xlogreader.c and *desc.c files into the source directory,
      build them where they are. That's what we do for other binaries that need to
      compile and link in files from elsewhere in the source tree.
      
      The commit history suggests that it was done this way because of issues with
      older versions of MSVC. I think this should work, but we'll see if the
      buildfarm complains.
      1933a5bb
    • Bruce Momjian's avatar
      pg_recvlogical: update --help description · 30a5ce8f
      Bruce Momjian authored
      Patch by Euler Taveira
      30a5ce8f
  3. 20 Mar, 2015 11 commits
  4. 19 Mar, 2015 4 commits
    • Stephen Frost's avatar
      GetUserId() changes to has_privs_of_role() · bf038899
      Stephen Frost authored
      The pg_stat and pg_signal-related functions have been using GetUserId()
      instead of has_privs_of_role() for checking if the current user should
      be able to see details in pg_stat_activity or signal other processes,
      requiring a user to do 'SET ROLE' for inheirited roles for a permissions
      check, unlike other permissions checks.
      
      This patch changes that behavior to, instead, act like most other
      permission checks and use has_privs_of_role(), removing the 'SET ROLE'
      need.  Documentation and error messages updated accordingly.
      
      Per discussion with Alvaro, Peter, Adam (though not using Adam's patch),
      and Robert.
      
      Reviewed by Jeevan Chalke.
      bf038899
    • Robert Haas's avatar
      Add flags argument to dsm_create. · 12968cf4
      Robert Haas authored
      Right now, there's only one flag, DSM_CREATE_NULL_IF_MAXSEGMENTS,
      which suppresses the error that would normally be thrown when the
      maximum number of segments already exists, instead returning NULL.
      It might be useful to add more flags in the future, such as one to
      ignore allocation errors, but I haven't done that here.
      12968cf4
    • Bruce Momjian's avatar
      doc: ALTER DOMAIN VALIDATE CONSTRAINT can also fail · 5f286c02
      Bruce Momjian authored
      Document that ALTER DOMAIN VALIDATE CONSTRAINT can also fail for
      composite types.
      
      Report by Ondřej Bouda
      5f286c02
    • Robert Haas's avatar
      Fix status reporting for terminated bgworkers that were never started. · bf740ce9
      Robert Haas authored
      Previously, GetBackgroundWorkerPid() would return BGWH_NOT_YET_STARTED
      if the slot used for the worker registration had not been reused by
      unrelated activity, and BGWH_STOPPED if it had.  Either way, a process
      that had requested notification when the state of one of its
      background workers changed did not receive such notifications.  Fix
      things so that GetBackgroundWorkerPid() always returns BGWH_STOPPED in
      this situation, so that we do not erroneously give waiters the
      impression that the worker will eventually be started; and send
      notifications just as we would if the process terminated after having
      been started, so that it's possible to wait for the postmaster to
      process a worker termination request without polling.
      
      Discovered by Amit Kapila during testing of parallel sequential scan.
      Analysis and fix by me.  Back-patch to 9.4; there may not be anyone
      relying on this interface yet, but if anyone is, the new behavior is a
      clear improvement.
      bf740ce9
  5. 18 Mar, 2015 5 commits
    • Bruce Momjian's avatar
      pg_upgrade: document use of rsync for slave upgrades · 417f78a5
      Bruce Momjian authored
      Also document that rsync has one-second granularity for file
      change comparisons.
      
      Report by Stephen Frost
      417f78a5
    • Alvaro Herrera's avatar
      array_offset() and array_offsets() · 13dbc7a8
      Alvaro Herrera authored
      These functions return the offset position or positions of a value in an
      array.
      
      Author: Pavel Stěhule
      Reviewed by: Jim Nasby
      13dbc7a8
    • Alvaro Herrera's avatar
      Install shared libraries to bin/ in Windows under MSVC · f9dead56
      Alvaro Herrera authored
      Since commit cb4a3b04 we were already doing this for the Cygwin/mingw
      toolchains, but MSVC had not been updated to do it.  At Install.pm time,
      the Makefile (or GNUmakefile) is inspected, and if a line matching
      SO_MAJOR_VERSION is found (indicating a shared library is being built),
      then files with the .dll extension are set to be installed in bin/
      rather than lib/, while files with .lib extension are installed in lib/.
      This makes the MSVC toolchain up to date with cygwin/mingw.
      
      This removes ad-hoc hacks that were copying files into bin/ or lib/
      manually (libpq.dll in particular was already being copied into bin).
      So while this is a rather ugly kludge, it's still cleaner than what was
      there before.
      
      Author: Michael Paquier
      Reviewed by: Asif Naeem
      f9dead56
    • Alvaro Herrera's avatar
      Setup cursor position for schema-qualified elements · b8d226b4
      Alvaro Herrera authored
      This makes any errors thrown while looking up such schemas report the
      position of the error.
      
      Author: Ryan Kelly
      Reviewed by: Jeevan Chalke, Tom Lane
      b8d226b4
    • Alvaro Herrera's avatar
      Rationalize vacuuming options and parameters · 0d831389
      Alvaro Herrera authored
      We were involving the parser too much in setting up initial vacuuming
      parameters.  This patch moves that responsibility elsewhere to simplify
      code, and also to make future additions easier.  To do this, create a
      new struct VacuumParams which is filled just prior to vacuum execution,
      instead of at parse time; for user-invoked vacuuming this is set up in a
      new function ExecVacuum, while autovacuum sets it up by itself.
      
      While at it, add a new member VACOPT_SKIPTOAST to enum VacuumOption,
      only set by autovacuum, which is used to disable vacuuming of the toast
      table instead of the old do_toast parameter; this relieves the argument
      list of vacuum() and some callees a bit.  This partially makes up for
      having added more arguments in an effort to avoid having autovacuum from
      constructing a VacuumStmt parse node.
      
      Author: Michael Paquier. Some tweaks by Álvaro
      Reviewed by: Robert Haas, Stephen Frost, Álvaro Herrera
      0d831389
  6. 17 Mar, 2015 2 commits
    • Andres Freund's avatar
      Remove docs missed in 51c11a70. · 4559167c
      Andres Freund authored
      Somehow I misresolved a merge conflict when forward porting Petr's patch
      leading to a section of the docs remaining...
      
      Thankfully Fujii spotted my mistake.
      4559167c
    • Alvaro Herrera's avatar
      Fix out-of-array-bounds compiler warning · a1907384
      Alvaro Herrera authored
      Since the array length check is using a post-increment operator, the
      compiler complains that there's a potential write to one element beyond
      the end of the array.  This is not possible currently: the only path to
      this function is through pg_get_object_address(), which already verifies
      that the input array is no more than two elements in length.  Still, a
      bug is a bug.
      
      No idea why my compiler doesn't complain about this ...
      
      Pointed out by Dead Rasheed and Peter Eisentraut
      a1907384
  7. 16 Mar, 2015 2 commits
    • Alvaro Herrera's avatar
      Support opfamily members in get_object_address · a61fd533
      Alvaro Herrera authored
      In the spirit of 890192e9 and 44643034: have get_object_address
      understand individual pg_amop and pg_amproc objects.  There is no way to
      refer to such objects directly in the grammar -- rather, they are almost
      always considered an integral part of the opfamily that contains them.
      (The only case that deals with them individually is ALTER OPERATOR
      FAMILY ADD/DROP, which carries the opfamily address separately and thus
      does not need it to be part of each added/dropped element's address.)
      In event triggers it becomes possible to become involved with individual
      amop/amproc elements, and this commit enables pg_get_object_address to
      do so as well.
      
      To make the overall coding simpler, this commit also slightly changes
      the get_object_address representation for opclasses and opfamilies:
      instead of having the AM name in the objargs array, I moved it as the
      first element of the objnames array.  This enables the new code to use
      objargs for the type names used by pg_amop and pg_amproc.
      
      Reviewed by: Stephen Frost
      a61fd533
    • Tom Lane's avatar
      Replace insertion sort in contrib/intarray with qsort(). · 8d1f2390
      Tom Lane authored
      It's all very well to claim that a simplistic sort is fast in easy
      cases, but O(N^2) in the worst case is not good ... especially if the
      worst case is as easy to hit as "descending order input".  Replace that
      bit with our standard qsort.
      
      Per bug #12866 from Maksym Boguk.  Back-patch to all active branches.
      8d1f2390
  8. 15 Mar, 2015 9 commits
    • Tom Lane's avatar
      Improve representation of PlanRowMark. · 7b8b8a43
      Tom Lane authored
      This patch fixes two inadequacies of the PlanRowMark representation.
      
      First, that the original LockingClauseStrength isn't stored (and cannot be
      inferred for foreign tables, which always get ROW_MARK_COPY).  Since some
      PlanRowMarks are created out of whole cloth and don't actually have an
      ancestral RowMarkClause, this requires adding a dummy LCS_NONE value to
      enum LockingClauseStrength, which is fairly annoying but the alternatives
      seem worse.  This fix allows getting rid of the use of get_parse_rowmark()
      in FDWs (as per the discussion around commits 462bd957 and
      8ec8760f), and it simplifies some things elsewhere.
      
      Second, that the representation assumed that all child tables in an
      inheritance hierarchy would use the same RowMarkType.  That's true today
      but will soon not be true.  We add an "allMarkTypes" field that identifies
      the union of mark types used in all a parent table's children, and use
      that where appropriate (currently, only in preprocess_targetlist()).
      
      In passing fix a couple of minor infelicities left over from the SKIP
      LOCKED patch, notably that _outPlanRowMark still thought waitPolicy
      is a bool.
      
      Catversion bump is required because the numeric values of enum
      LockingClauseStrength can appear in on-disk rules.
      
      Extracted from a much larger patch to support foreign table inheritance;
      it seemed worth breaking this out, since it's a separable concern.
      
      Shigeru Hanada and Etsuro Fujita, somewhat modified by me
      7b8b8a43
    • Tom Lane's avatar
      Move LockClauseStrength, LockWaitPolicy into new file nodes/lockoptions.h. · 9fac5fd7
      Tom Lane authored
      Commit df630b0d moved enum LockWaitPolicy
      into its very own header file utils/lockwaitpolicy.h, which does not seem
      like a great idea from here.  First, it's still a node-related declaration,
      and second, a file named like that can never sensibly be used for anything
      else.  I do not think we want to encourage a one-typedef-per-header-file
      approach.  The upcoming foreign table inheritance patch was doubling down
      on this bad idea by moving enum LockClauseStrength into its *own*
      can-never-be-used-for-anything-else file.  Instead, let's put them both in
      a file named nodes/lockoptions.h.  (They do seem to need a separate header
      file because we need them in both parsenodes.h and plannodes.h, and we
      don't want either of those including the other.  Past practice might
      suggest adding them to nodes/nodes.h, but they don't seem sufficiently
      globally useful to justify that.)
      
      Committed separately since there's no functional change here, just some
      header-file refactoring.
      9fac5fd7
    • Tom Lane's avatar
      src/port/dirmod.c needs to be built on Cygwin too. · 80089597
      Tom Lane authored
      Oversight in my commit 91f4a5a9.
      Per buildfarm member brolga.
      80089597
    • Tom Lane's avatar
      Add missing documentation for PGC_SU_BACKEND in description of pg_settings. · d1e9214e
      Tom Lane authored
      Commit fe550b2a missed updating this list
      of the PGC_XXX values, which in hindsight is not so surprising because
      catalogs.sgml is not a place you'd think to look for them.  In addition to
      adding the missing doco, insert the PGC_XXX C enum names in SGML comments,
      so that grepping for the enum names will find this file.  That might spare
      the next person similar embarrassment.
      
      Spotted by Magnus Hagander.
      d1e9214e
    • Andres Freund's avatar
      Merge the various forms of transaction commit & abort records. · 4f1b890b
      Andres Freund authored
      Since 465883b0 two versions of commit records have existed. A compact
      version that was used when no cache invalidations, smgr unlinks and
      similar were needed, and a full version that could deal with all
      that. Additionally the full version was embedded into twophase commit
      records.
      
      That resulted in a measurable reduction in the size of the logged WAL in
      some workloads. But more recently additions like logical decoding, which
      e.g. needs information about the database something was executed on,
      made it applicable in fewer situations. The static split generally made
      it hard to expand the commit record, because concerns over the size made
      it hard to add anything to the compact version.
      
      Additionally it's not particularly pretty to have twophase.c insert
      RM_XACT records.
      
      Rejigger things so that the commit and abort records only have one form
      each, including the twophase equivalents. The presence of the various
      optional (in the sense of not being in every record) pieces is indicated
      by a bits in the 'xinfo' flag.  That flag previously was not included in
      compact commit records. To prevent an increase in size due to its
      presence, it's only included if necessary; signalled by a bit in the
      xl_info bits available for xact.c, similar to heapam.c's
      XLOG_HEAP_OPMASK/XLOG_HEAP_INIT_PAGE.
      
      Twophase commit/aborts are now the same as their normal
      counterparts. The original transaction's xid is included in an optional
      data field.
      
      This means that commit records generally are smaller, except in the case
      of a transaction with subtransactions, but no other special cases; the
      increase there is four bytes, which seems acceptable given that the more
      common case of not having subtransactions shrank.  The savings are
      especially measurable for twophase commits, which previously always used
      the full version; but will in practice only infrequently have required
      that.
      
      The motivation for this work are not the space savings and and
      deduplication though; it's that it makes it easier to extend commit
      records with additional information. That's just a few lines of code
      now; without impacting the common case where that information is not
      needed.
      
      Discussion: 20150220152150.GD4149@awork2.anarazel.de,
          235610.92468.qm%40web29004.mail.ird.yahoo.com
      
      Reviewed-By: Heikki Linnakangas, Simon Riggs
      4f1b890b
    • Andres Freund's avatar
      Increase max_wal_size's default from 128MB to 1GB. · a0f5954a
      Andres Freund authored
      The introduction of min_wal_size & max_wal_size in 88e98230 makes it
      feasible to increase the default upper bound in checkpoint
      size. Previously raising the default would lead to a increased disk
      footprint, even if more segments weren't beneficial.  The low default of
      checkpoint size is one of common performance problem users have thus
      increasing the default makes sense.  Setups where the increase in
      maximum disk usage is a problem will very likely have to run with a
      modified configuration anyway.
      
      Discussion: 54F4EFB8.40202@agliodbs.com,
          CA+TgmoZEAgX5oMGJOHVj8L7XOkAe05Gnf45rP40m-K3FhZRVKg@mail.gmail.com
      
      Author: Josh Berkus, after a discussion involving lots of people.
      a0f5954a
    • Andres Freund's avatar
      Adjust valgrind suppressions wrt 025c0242. · 241f088f
      Andres Freund authored
      241f088f
    • Andres Freund's avatar
      Remove pause_at_recovery_target recovery.conf setting. · 51c11a70
      Andres Freund authored
      The new recovery_target_action (introduced in aedccb1f/b8e33a85)
      replaces it's functionality. Having both seems likely to cause more
      confusion than it saves worry due to the incompatibility.
      
      Discussion: 5484FC53.2060903@2ndquadrant.com
      Author: Petr Jelinek
      51c11a70
    • Fujii Masao's avatar
      Suppress maybe-uninitialized compiler warnings. · cd6c45cb
      Fujii Masao authored
      Previously some compilers were thinking that the variables that
      57aa5b2b added maybe-uninitialized.
      
      Spotted by Andres Freund
      cd6c45cb
  9. 14 Mar, 2015 2 commits