1. 17 Feb, 2014 4 commits
    • Noah Misch's avatar
      Shore up ADMIN OPTION restrictions. · fea164a7
      Noah Misch authored
      Granting a role without ADMIN OPTION is supposed to prevent the grantee
      from adding or removing members from the granted role.  Issuing SET ROLE
      before the GRANT bypassed that, because the role itself had an implicit
      right to add or remove members.  Plug that hole by recognizing that
      implicit right only when the session user matches the current role.
      Additionally, do not recognize it during a security-restricted operation
      or during execution of a SECURITY DEFINER function.  The restriction on
      SECURITY DEFINER is not security-critical.  However, it seems best for a
      user testing his own SECURITY DEFINER function to see the same behavior
      others will see.  Back-patch to 8.4 (all supported versions).
      
      The SQL standards do not conflate roles and users as PostgreSQL does;
      only SQL roles have members, and only SQL users initiate sessions.  An
      application using PostgreSQL users and roles as SQL users and roles will
      never attempt to grant membership in the role that is the session user,
      so the implicit right to add or remove members will never arise.
      
      The security impact was mostly that a role member could revoke access
      from others, contrary to the wishes of his own grantor.  Unapproved role
      member additions are less notable, because the member can still largely
      achieve that by creating a view or a SECURITY DEFINER function.
      
      Reviewed by Andres Freund and Tom Lane.  Reported, independently, by
      Jonas Sundman and Noah Misch.
      
      Security: CVE-2014-0060
      fea164a7
    • Tom Lane's avatar
      0983315b
    • Tom Lane's avatar
      PGDLLIMPORT-ify MainLWLockArray, ProcDiePending, proc_exit_inprogress. · fa1f0d78
      Tom Lane authored
      These are needed in HEAD to make assorted contrib modules build on Windows.
      Now that all the MSVC and Mingw buildfarm members seem to be on the same
      page about the need for them, we can have some confidence that future
      problems of this ilk will be detected promptly; there seems nothing more
      to be learned by delaying this fix further.
      
      I chose to mark QueryCancelPending as well, since it's easy to imagine code
      that wants to touch ProcDiePending also caring about QueryCancelPending.
      fa1f0d78
    • Tom Lane's avatar
      Fix unportable coding in tarCreateHeader(). · a1c80271
      Tom Lane authored
      uid_t and gid_t might be wider than int on some platforms.
      Per buildfarm member brolga.
      a1c80271
  2. 16 Feb, 2014 6 commits
    • Tom Lane's avatar
      Revert to using --enable-auto-import in Cygwin builds. · 8d6e2d4a
      Tom Lane authored
      Disabling auto-import requires that all libraries we use be careful about
      declspecs for exported variables; and it seems they aren't.  This means
      that Cygwin will not give us useful info about missing PGDLLIMPORT markers;
      but it's probably sufficient that MSVC and Mingw builds do.
      8d6e2d4a
    • Tom Lane's avatar
      Further wordsmithing on 9.3.3 release notes. · 734ff84b
      Tom Lane authored
      No substantive changes, but reorder some items and improve some
      descriptions.
      734ff84b
    • Tom Lane's avatar
      PGDLLIMPORT'ify DateStyle and IntervalStyle. · a5cf6068
      Tom Lane authored
      This is needed on Windows to support contrib/postgres_fdw.  Although it's
      been broken since last March, we didn't notice until recently because there
      were no active buildfarm members that complained about missing PGDLLIMPORT
      marking.  Efforts are underway to improve that situation, in support of
      which we're delaying fixing some other cases of global variables that
      should be marked PGDLLIMPORT.  However, this case affects 9.3, so we
      can't wait any longer to fix it.
      
      I chose to mark DateOrder as well, though it's not strictly necessary
      for postgres_fdw.
      a5cf6068
    • Tom Lane's avatar
      Improve release notes per comments from Andres Freund. · 8fd994e4
      Tom Lane authored
      Make a bit more noise about the timeout-interrupt bug.  Also, remove the
      release note entry for commit 423e1211; that patch fixed a problem
      introduced post-9.3.2, so there's no need to document it in the release
      notes.
      8fd994e4
    • Tom Lane's avatar
      On Windows, expect to find Tcl DLL in bin directory not lib directory. · 56caaf19
      Tom Lane authored
      Still another step in the continuing saga of trying to get
      --disable-auto-import to work.
      
      Hiroshi Inoue
      56caaf19
    • Tom Lane's avatar
      First-draft release notes for 9.3.3. · cefd3e50
      Tom Lane authored
      As usual, the release notes for older branches will be made by cutting
      these down, but put them up for community review first.
      cefd3e50
  3. 15 Feb, 2014 7 commits
  4. 14 Feb, 2014 9 commits
    • Tom Lane's avatar
      Fix fat-fingered makefile changes for pltcl. · 638b153f
      Tom Lane authored
      I put the OBJS assignments in the wrong order.  Per buildfarm.
      638b153f
    • Tom Lane's avatar
      Update regression testing instructions. · 2128c52f
      Tom Lane authored
      This documentation never got the word about the existence of check-world or
      installcheck-world.  Revise to recommend use of those, and document all the
      subsidiary test suites.  Do some minor wordsmithing elsewhere, too.
      
      In passing, remove markup related to generation of plain-text regression
      test instructions, since we don't do that anymore.
      
      Back-patch to 9.1 where check-world was added.  (installcheck-world exists
      in 9.0; but since check-world doesn't, this patch would need additional
      work to cover that branch, and it doesn't seem worth the effort.)
      2128c52f
    • Tom Lane's avatar
      In mingw builds, make our own import library for libtcl, too. · dcbf3977
      Tom Lane authored
      Per buildfarm results.
      dcbf3977
    • Tom Lane's avatar
      Suggest shell here-documents instead of psql -c for multiple commands. · 1ea081bb
      Tom Lane authored
      The documentation suggested using "echo | psql", but not the often-superior
      alternative of a here-document.  Also, be more direct about suggesting
      that people avoid -c for multiple commands.  Per discussion.
      1ea081bb
    • Tom Lane's avatar
      In mingw builds, make our own import library for libperl. · 02b61dd0
      Tom Lane authored
      Borrow the method already used by plpython.  This is pretty ugly, but
      it might fix the build failure exhibited by buildfarm member narwhal
      since commit 846e91e0.
      
      Hiroshi Inoue
      02b61dd0
    • Tom Lane's avatar
      Cosmetic improvements in plpython's make rule for libpython import library. · a7983e98
      Tom Lane authored
      This build technique is remarkably ugly, but that doesn't mean it has
      to be unreadable too.  Be a bit more liberal with the vertical whitespace,
      and give the .def file a proper dependency, just in case.
      a7983e98
    • Heikki Linnakangas's avatar
      Change the order that pg_xlog and WAL archive are polled for WAL segments. · 4d894b41
      Heikki Linnakangas authored
      If there is a WAL segment with same ID but different TLI present in both
      the WAL archive and pg_xlog, prefer the one with higher TLI. Before this
      patch, the archive was polled first, for all expected TLIs, and only if no
      file was found was pg_xlog scanned. This was a change in behavior from 9.3,
      which first scanned archive and pg_xlog for the highest TLI, then archive
      and pg_xlog for the next highest TLI and so forth. This patch reverts the
      behavior back to what it was in 9.2.
      
      The reason for this is that if for example you try to do archive recovery
      to timeline 2, which branched off timeline 1, but the WAL for timeline 2 is
      not archived yet, we would replay past the timeline switch point on
      timeline 1 using the archived files, before even looking timeline 2's files
      in pg_xlog
      
      Report and patch by Kyotaro Horiguchi. Backpatch to 9.3 where the behavior
      was changed.
      4d894b41
    • Peter Eisentraut's avatar
      Fix typo · 0f2ca007
      Peter Eisentraut authored
      Stefan Kaltenbrunner
      0f2ca007
    • Bruce Momjian's avatar
      9c57d11f
  5. 13 Feb, 2014 8 commits
    • Tom Lane's avatar
      Clean up error cases in psql's COPY TO STDOUT/FROM STDIN code. · b8f00a46
      Tom Lane authored
      Adjust handleCopyOut() to stop trying to write data once it's failed
      one time.  For typical cases such as out-of-disk-space or broken-pipe,
      additional attempts aren't going to do anything but waste time, and
      in any case clean truncation of the output seems like a better behavior
      than randomly dropping blocks in the middle.
      
      Also remove dubious (and misleadingly documented) attempt to force our way
      out of COPY_OUT state if libpq didn't do that.  If we did have a situation
      like that, it'd be a bug in libpq and would be better fixed there, IMO.
      We can hope that commit fa4440f5 took care
      of any such problems, anyway.
      
      Also fix longstanding bug in handleCopyIn(): PQputCopyEnd() only supports
      a non-null errormsg parameter in protocol version 3, and will actively
      fail if one is passed in version 2.  This would've made our attempts
      to get out of COPY_IN state after a failure into infinite loops when
      talking to pre-7.4 servers.
      
      Back-patch the COPY_OUT state change business back to 9.2 where it was
      introduced, and the other two fixes into all supported branches.
      b8f00a46
    • Alvaro Herrera's avatar
      Separate multixact freezing parameters from xid's · 801c2dc7
      Alvaro Herrera authored
      Previously we were piggybacking on transaction ID parameters to freeze
      multixacts; but since there isn't necessarily any relationship between
      rates of Xid and multixact consumption, this turns out not to be a good
      idea.
      
      Therefore, we now have multixact-specific freezing parameters:
      
      vacuum_multixact_freeze_min_age: when to remove multis as we come across
      them in vacuum (default to 5 million, i.e. early in comparison to Xid's
      default of 50 million)
      
      vacuum_multixact_freeze_table_age: when to force whole-table scans
      instead of scanning only the pages marked as not all visible in
      visibility map (default to 150 million, same as for Xids).  Whichever of
      both which reaches the 150 million mark earlier will cause a whole-table
      scan.
      
      autovacuum_multixact_freeze_max_age: when for cause emergency,
      uninterruptible whole-table scans (default to 400 million, double as
      that for Xids).  This means there shouldn't be more frequent emergency
      vacuuming than previously, unless multixacts are being used very
      rapidly.
      
      Backpatch to 9.3 where multixacts were made to persist enough to require
      freezing.  To avoid an ABI break in 9.3, VacuumStmt has a couple of
      fields in an unnatural place, and StdRdOptions is split in two so that
      the newly added fields can go at the end.
      
      Patch by me, reviewed by Robert Haas, with additional input from Andres
      Freund and Tom Lane.
      801c2dc7
    • Bruce Momjian's avatar
      docs: improve CREATE FUNCTION docs about language case and quoting · de4b6558
      Bruce Momjian authored
      Report from Marc Mamin
      de4b6558
    • Bruce Momjian's avatar
      pgcrypto: clarify 'md5' (hash) table entry · 474cb24d
      Bruce Momjian authored
      Per suggestion from Peter Eisentraut
      474cb24d
    • Tom Lane's avatar
      Fix length checking for Unicode identifiers containing escapes (U&"..."). · 44c21633
      Tom Lane authored
      We used the length of the input string, not the de-escaped string, as
      the trigger for NAMEDATALEN truncation.  AFAICS this would only result
      in sometimes printing a phony truncation warning; but it's just luck
      that there was no worse problem, since we were violating the API spec
      for truncate_identifier().  Per bug #9204 from Joshua Yanovski.
      
      This has been wrong since the Unicode-identifier support was added,
      so back-patch to all supported branches.
      44c21633
    • Bruce Momjian's avatar
    • Bruce Momjian's avatar
    • Tom Lane's avatar
      Improve cross-references between minor version release notes. · 4a6f136c
      Tom Lane authored
      We have a practice of providing a "bread crumb" trail between the minor
      versions where the migration section actually tells you to do something.
      Historically that was just plain text, eg, "see the release notes for
      9.2.4"; but if you're using a browser or PDF reader, it's a lot nicer
      if it's a live hyperlink.  So use "<xref>" instead.  Any argument against
      doing this vanished with the recent decommissioning of plain-text release
      notes.
      
      Vik Fearing
      4a6f136c
  6. 12 Feb, 2014 6 commits
    • Tom Lane's avatar
      Improve text of stub HISTORY file. · dea5a8c4
      Tom Lane authored
      Per Peter Eisentraut.
      dea5a8c4
    • Tom Lane's avatar
      Improve libpq's error recovery for connection loss during COPY. · fa4440f5
      Tom Lane authored
      In pqSendSome, if the connection is already closed at entry, discard any
      queued output data before returning.  There is no possibility of ever
      sending the data, and anyway this corresponds to what we'd do if we'd
      detected a hard error while trying to send().  This avoids possible
      indefinite bloat of the output buffer if the application keeps trying
      to send data (or even just keeps trying to do PQputCopyEnd, as psql
      indeed will).
      
      Because PQputCopyEnd won't transition out of PGASYNC_COPY_IN state
      until it's successfully queued the COPY END message, and pqPutMsgEnd
      doesn't distinguish a queuing failure from a pqSendSome failure,
      this omission allowed an infinite loop in psql if the connection closure
      occurred when we had at least 8K queued to send.  It might be worth
      refactoring so that we can make that distinction, but for the moment
      the other changes made here seem to offer adequate defenses.
      
      To guard against other variants of this scenario, do not allow
      PQgetResult to return a PGRES_COPY_XXX result if the connection is
      already known dead.  Make sure it returns PGRES_FATAL_ERROR instead.
      
      Per report from Stephen Frost.  Back-patch to all active branches.
      fa4440f5
    • Bruce Momjian's avatar
      Revert gmake/make release note changes · 993c3961
      Bruce Momjian authored
      Backbranch release note changes cause merge conflicts.
      993c3961
    • Bruce Momjian's avatar
      Rename 'gmake' to 'make' in docs and recommended commands · 2fc80e8e
      Bruce Momjian authored
      This simplifies the docs and makes it easier to cut/paste command lines.
      2fc80e8e
    • Bruce Momjian's avatar
      pg_upgrade: dramatically reduce memory consumption · 2a2e40aa
      Bruce Momjian authored
      Report from Jeff Janes
      2a2e40aa
    • Bruce Momjian's avatar
      pg_test_fsync: add C comment about direct I/O and write size failure · f9bb944c
      Bruce Momjian authored
      Report from Marti Raudsepp
      f9bb944c