1. 26 Apr, 2015 7 commits
    • Andres Freund's avatar
      Fix possible division by zero in pg_xlogdump. · 9fe1d9ac
      Andres Freund authored
      When displaying stats it was possible that a floating point division by
      zero occured when no FPIs were issued for a type of record.
      
      Author: Abhijit Menon-Sen
      Discussion: 20150417091811.GA14008@toroid.org
      9fe1d9ac
    • Peter Eisentraut's avatar
      Add transforms feature · cac76582
      Peter Eisentraut authored
      This provides a mechanism for specifying conversions between SQL data
      types and procedural languages.  As examples, there are transforms
      for hstore and ltree for PL/Perl and PL/Python.
      
      reviews by Pavel Stěhule and Andres Freund
      cac76582
    • Tom Lane's avatar
      Fix typo in linux startup script. · f320cbb6
      Tom Lane authored
      Missed a "$" in what was meant to be a variable substitution.  Careless
      mistake in commit f23425fa.
      f320cbb6
    • Tom Lane's avatar
      Add comments warning against generalizing default_with_oids. · 0bd11d97
      Tom Lane authored
      pg_dump has historically assumed that default_with_oids affects only plain
      tables and not other relkinds.  Conceivably we could make it apply to some
      newly invented relkind if we did so from the get-go, but changing the
      behavior for existing object types will break existing dump scripts.
      Add code comments warning about this interaction.
      
      Also, make sure that default_with_oids doesn't cause parse_utilcmd.c to
      think that CREATE FOREIGN TABLE will create an OID column.  I think this is
      only a latent bug right now, since we don't allow UNIQUE/PKEY constraints
      in CREATE FOREIGN TABLE, but it's better to be consistent and future-proof.
      0bd11d97
    • Andrew Dunstan's avatar
      Try to unbreak some MSVC builds following forward slash change. · 04f1542d
      Andrew Dunstan authored
      Michael Paquier.
      04f1542d
    • Bruce Momjian's avatar
      Revert: Honor OID status of CREATE LIKE'd tables · 764ce22a
      Bruce Momjian authored
      Reverts d992f8a8
      
      Report by Tom Lane
      764ce22a
    • Peter Eisentraut's avatar
      Don't overwrite EXTRA_INSTALL · ee8d3927
      Peter Eisentraut authored
      The temp-install target sets EXTRA_INSTALL to install the current
      directory.  But when doing so, it should append instead of overwrite,
      otherwise settings of EXTRA_INSTALL from a makefile won't take effect.
      This would cause the earthdistance test to fail when called directly,
      because it would miss installing the cube module.
      ee8d3927
  2. 25 Apr, 2015 4 commits
    • Tom Lane's avatar
      Prevent improper reordering of antijoins vs. outer joins. · 3cf86860
      Tom Lane authored
      An outer join appearing within the RHS of an antijoin can't commute with
      the antijoin, but somehow I missed teaching make_outerjoininfo() about
      that.  In Teodor Sigaev's recent trouble report, this manifests as a
      "could not find RelOptInfo for given relids" error within eqjoinsel();
      but I think silently wrong query results are possible too, if the planner
      misorders the joins and doesn't happen to trigger any internal consistency
      checks.  It's broken as far back as we had antijoins, so back-patch to all
      supported branches.
      3cf86860
    • Peter Eisentraut's avatar
      Replace backslashes by forward slashes in MSVC build code · 854adb83
      Peter Eisentraut authored
      This makes it possible to run some stages of these build scripts on
      non-Windows systems.  That way, we can more easily test whether file
      moves or makefile changes might break the MSVC build.
      
      Peter Eisentraut and Michael Paquier
      854adb83
    • Stephen Frost's avatar
      Fix file comment for test_rls_hooks.c · 410cbfd6
      Stephen Frost authored
      The file-level comment wasn't updated when it was copied from the shared
      memory queue test module.  Fixed.
      
      Noted by Dean Rasheed.
      410cbfd6
    • Stephen Frost's avatar
      Perform RLS WITH CHECK before constraints, etc · e89bd02f
      Stephen Frost authored
      The RLS capability is built on top of the WITH CHECK OPTION
      system which was added for auto-updatable views, however, unlike
      WCOs on views (which are mandated by the SQL spec to not fire until
      after all other constraints and checks are done), it makes much more
      sense for RLS checks to happen earlier than constraint and uniqueness
      checks.
      
      This patch reworks the structure which holds the WCOs a bit to be
      explicitly either VIEW or RLS checks and the RLS-related checks are
      done prior to the constraint and uniqueness checks.  This also allows
      better error reporting as we are now reporting when a violation is due
      to a WITH CHECK OPTION and when it's due to an RLS policy violation,
      which was independently noted by Craig Ringer as being confusing.
      
      The documentation is also updated to include a paragraph about when RLS
      WITH CHECK handling is performed, as there have been a number of
      questions regarding that and the documentation was previously silent on
      the matter.
      
      Author: Dean Rasheed, with some kabitzing and comment changes by me.
      e89bd02f
  3. 24 Apr, 2015 10 commits
    • Noah Misch's avatar
      Remove obsolete -I options from ECPG library compilation. · c8aa8938
      Noah Misch authored
      The MSVC build system already omitted these.
      c8aa8938
    • Noah Misch's avatar
      Remove superfluous -DFRONTEND. · bcd7e889
      Noah Misch authored
      The majority practice is to add -DFRONTEND in directories building files
      that are, at other times, built for the backend.  Some directories
      lacking that property added a noise -DFRONTEND in one build system.
      Remove the excess flags, for consistency.
      bcd7e889
    • Noah Misch's avatar
      Build every ECPG library with -DFRONTEND. · 151e7471
      Noah Misch authored
      Each of the libraries incorporates src/port files, which often check
      FRONTEND.  Build systems disagreed on whether to build libpgtypes this
      way.  Only libecpg incorporates files that rely on it today.  Back-patch
      to 9.0 (all supported versions) to forestall surprises.
      151e7471
    • Tom Lane's avatar
      Fix up .gitignore and cleanup actions in some src/test/ subdirectories. · 732b33f8
      Tom Lane authored
      examples/, locale/, and thread/ lacked .gitignore files and were also
      not connected up to top-level "make clean" etc.  This had escaped notice
      because none of those directories are built in normal scenarios.  Still,
      they have working Makefiles, so if someone does a "make" in one of these
      directories it would be good if (a) git doesn't bleat about the product
      files and (b) cleaning up removes them.
      
      This is a longstanding oversight, but since this behavior is probably
      only of interest to developers, there seems no need for back-patching.
      
      Michael Paquier and Tom Lane
      732b33f8
    • Tom Lane's avatar
      Fix obsolete comment in set_rel_size(). · 70d44dd9
      Tom Lane authored
      The cross-reference to set_append_rel_pathlist() was obsoleted by
      commit e2fa76d8, which split what
      had been set_rel_pathlist() and child routines into two sets of
      functions.  But I (tgl) evidently missed updating this comment.
      
      Back-patch to 9.2 to avoid unnecessary divergence among branches.
      
      Amit Langote
      70d44dd9
    • Heikki Linnakangas's avatar
    • Peter Eisentraut's avatar
      doc: Move ALTER TABLE IF EXISTS description to better place · d64a9c8c
      Peter Eisentraut authored
      It was previously mixed in with the description of ALTER TABLE
      subcommands.  Move it to the Parameters section, which is where it is on
      other reference pages.
      
      pointed out by Amit Langote
      d64a9c8c
    • Peter Eisentraut's avatar
      Fix misspellings · 9ba978c8
      Peter Eisentraut authored
      Amit Langote and Thom Brown
      9ba978c8
    • Stephen Frost's avatar
      Copy the relation name for error reporting in WCOs · cb087ec0
      Stephen Frost authored
      In get_row_security_policies(), we need to make a copy of the relation
      name when building the WithCheckOptions structure, since
      RelationGetRelationName just returns a pointer into the local Relation
      structure.  The relation name in the WCO structure is only used for
      error reporting.
      
      Pointed out by Robert and Christian Ullrich, who noted that the
      buildfarm members with -DCLOBBER_CACHE_ALWAYS were failing.
      cb087ec0
    • Heikki Linnakangas's avatar
      Move functions related to index maintenance to separate source file. · 62420ae7
      Heikki Linnakangas authored
      There is enough code here to deserve a file of their own, not be buried
      in the middle of execUtils.c.
      62420ae7
  4. 23 Apr, 2015 3 commits
    • Heikki Linnakangas's avatar
      Fix deadlock at startup, if max_prepared_transactions is too small. · 2c47fe16
      Heikki Linnakangas authored
      When the startup process recovers transactions by scanning pg_twophase
      directory, it should clear MyLockedGxact after it's done processing each
      transaction. Like we do during normal operation, at PREPARE TRANSACTION.
      Otherwise, if the startup process exits due to an error, it will try to
      clear the locking_backend field of the last recovered transaction. That's
      usually harmless, but if the error happens in MarkAsPreparing, while
      holding TwoPhaseStateLock, the shmem-exit hook will try to acquire
      TwoPhaseStateLock again, and deadlock with itself.
      
      This fixes bug #13128 reported by Grant McAlister. The bug was introduced
      by commit bb38fb0d, so backpatch to all supported versions like that
      commit.
      2c47fe16
    • Peter Eisentraut's avatar
      Fix shell error on Solaris · 2aa0fb03
      Peter Eisentraut authored
      Apparently, the Bourne shell on Solaris doesn't like "for" loops with an
      empty list, so have "make" skip the loop in that case.
      2aa0fb03
    • Peter Eisentraut's avatar
      Improve speed of make check-world · dcae5fac
      Peter Eisentraut authored
      Before, make check-world would create a new temporary installation for
      each test suite, which is slow and wasteful.  Instead, we now create one
      test installation that is used by all test suites that are part of a
      make run.
      
      The management of the temporary installation is removed from pg_regress
      and handled in the makefiles.  This allows for better control, and
      unifies the code with that of test suites not run through pg_regress.
      
      review and msvc support by Michael Paquier <michael.paquier@gmail.com>
      
      more review by Fabien Coelho <coelho@cri.ensmp.fr>
      dcae5fac
  5. 22 Apr, 2015 7 commits
    • Alvaro Herrera's avatar
      Use the right type OID after creating a shell type · 50a16e30
      Alvaro Herrera authored
      Commit a2e35b53 neglected to update the type OID to use further
      down in DefineType when TypeShellMake was changed to return
      ObjectAddress instead of OID (it got it right in DefineRange, however.)
      This resulted in an internal error message being issued when looking up
      I/O functions.
      
      Author: Michael Paquier
      
      Also add Asserts() to a couple of other places to ensure that the type
      OID being used is as expected.
      50a16e30
    • Stephen Frost's avatar
      Fix installcheck for test_rls_hooks · 450fa1b5
      Stephen Frost authored
      As pointed out by the buildfarm, test_rls_hooks wasn't functioning
      properly with a clean installcheck.  test_rls_hooks needs to explicitly
      load the library with the hooks in it, to allow installcheck to work;
      using the --temp-config doesn't help since that isn't used when running
      installcheck and it isn't exactly fair to the buildfarm to modify the
      installed config prior to calling installcheck.
      
      Also, have test_rls_hooks clean up after itself.
      450fa1b5
    • Stephen Frost's avatar
      RLS fixes, new hooks, and new test module · 0bf22e0c
      Stephen Frost authored
      In prepend_row_security_policies(), defaultDeny was always true, so if
      there were any hook policies, the RLS policies on the table would just
      get discarded.  Fixed to start off with defaultDeny as false and then
      properly set later if we detect that only the default deny policy exists
      for the internal policies.
      
      The infinite recursion detection in fireRIRrules() didn't properly
      manage the activeRIRs list in the case of WCOs, so it would incorrectly
      report infinite recusion if the same relation with RLS appeared more
      than once in the rtable, for example "UPDATE t ... FROM t ...".
      
      Further, the RLS expansion code in fireRIRrules() was handling RLS in
      the main loop through the rtable, which lead to RTEs being visited twice
      if they contained sublink subqueries, which
      prepend_row_security_policies() attempted to handle by exiting early if
      the RTE already had securityQuals.  That doesn't work, however, since
      if the query involved a security barrier view on top of a table with
      RLS, the RTE would already have securityQuals (from the view) by the
      time fireRIRrules() was invoked, and so the table's RLS policies would
      be ignored.  This is fixed in fireRIRrules() by handling RLS in a
      separate loop at the end, after dealing with any other sublink
      subqueries, thus ensuring that each RTE is only visited once for RLS
      expansion.
      
      The inheritance planner code didn't correctly handle non-target
      relations with RLS, which would get turned into subqueries during
      planning. Thus an update of the form "UPDATE t1 ... FROM t2 ..." where
      t1 has inheritance and t2 has RLS quals would fail.  Fix by making sure
      to copy in and update the securityQuals when they exist for non-target
      relations.
      
      process_policies() was adding WCOs to non-target relations, which is
      unnecessary, and could lead to a lot of wasted time in the rewriter and
      the planner. Fix by only adding WCO policies when working on the result
      relation.  Also in process_policies, we should be copying the USING
      policies to the WITH CHECK policies on a per-policy basis, fix by moving
      the copying up into the per-policy loop.
      
      Lastly, as noted by Dean, we were simply adding policies returned by the
      hook provided to the list of quals being AND'd, meaning that they would
      actually restrict records returned and there was no option to have
      internal policies and hook-based policies work together permissively (as
      all internal policies currently work).  Instead, explicitly add support
      for both permissive and restrictive policies by having a hook for each
      and combining the results appropriately.  To ensure this is all done
      correctly, add a new test module (test_rls_hooks) to test the various
      combinations of internal, permissive, and restrictive hook policies.
      
      Largely from Dean Rasheed (thanks!):
      
      CAEZATCVmFUfUOwwhnBTcgi6AquyjQ0-1fyKd0T3xBWJvn+xsFA@mail.gmail.com
      
      Author: Dean Rasheed, though I added the new hooks and test module.
      0bf22e0c
    • Stephen Frost's avatar
      Pull in tableoid for inheiritance with rowMarks · 4ccc5bd2
      Stephen Frost authored
      As noted by Etsuro Fujita [1] and Dean Rasheed[2],
      cb1ca4d8 changed ExecBuildAuxRowMark()
      to always look for the tableoid in the target list, but didn't also
      change preprocess_targetlist() to always include the tableoid.  This
      resulted in errors with soon-to-be-added RLS with inheritance tests,
      and errors when using inheritance with foreign tables.
      
      Authors: Etsuro Fujita and Dean Rasheed (independently)
      
      Minor word-smithing on the comments by me.
      
      [1] 552CF0B6.8010006@lab.ntt.co.jp
      [2] CAEZATCVmFUfUOwwhnBTcgi6AquyjQ0-1fyKd0T3xBWJvn+xsFA@mail.gmail.com
      4ccc5bd2
    • Heikki Linnakangas's avatar
      Make the pg_rewind regression tests more robust on slow systems. · 54a16df0
      Heikki Linnakangas authored
      There were a couple of hard-coded sleeps in the tests: to wait for standby
      to catch up with master, and to wait for promotion with "pg_ctl promote"
      to complete. Instead of a fixed, hard-coded sleep, poll the server with a
      query once a second. This isn't ideal either, and I wish we had a better
      solution for real-world applications too, but this should fix the
      immediate problem.
      
      Patch by Michael Paquier, with some editing by me.
      54a16df0
    • Andres Freund's avatar
      Rename pg_replication_slot's new active_in to active_pid. · cef939c3
      Andres Freund authored
      In d811c037 active_in was added but discussion since showed that
      active_pid is preferred as a name.
      
      Discussion: CAMsr+YFKgZca5_7_ouaMWxA5PneJC9LNViPzpDHusaPhU9pA7g@mail.gmail.com
      cef939c3
    • Heikki Linnakangas's avatar
  6. 21 Apr, 2015 5 commits
  7. 20 Apr, 2015 2 commits
  8. 18 Apr, 2015 1 commit
  9. 17 Apr, 2015 1 commit
    • Stephen Frost's avatar
      Fix typo in relcache's equalPolicy() · ab6d1cd2
      Stephen Frost authored
      The USING policies were not being checked for differences as the same
      policy was being passed in to both sides of the equal().  This could
      result in backends not realizing that a policy had been changed, if
      none of the other attributes had been changed.
      
      Fix by passing to equal() the policy1 and policy2 using quals for
      comparison.
      
      No need to back-patch as this is not yet released.  Noticed while
      testing changes to RLS proposed by Dean Rasheed.
      ab6d1cd2