1. 10 Aug, 2012 6 commits
    • Tom Lane's avatar
      Support having multiple Unix-domain sockets per postmaster. · c9b0cbe9
      Tom Lane authored
      Replace unix_socket_directory with unix_socket_directories, which is a list
      of socket directories, and adjust postmaster's code to allow zero or more
      Unix-domain sockets to be created.
      
      This is mostly a straightforward change, but since the Unix sockets ought
      to be created after the TCP/IP sockets for safety reasons (better chance
      of detecting a port number conflict), AddToDataDirLockFile needs to be
      fixed to support out-of-order updates of data directory lockfile lines.
      That's a change that had been foreseen to be necessary someday anyway.
      
      Honza Horak, reviewed and revised by Tom Lane
      c9b0cbe9
    • Bruce Momjian's avatar
      Prevent pg_upgrade from crashing if it can't write to the current · 85642ec0
      Bruce Momjian authored
      directory.
      
      Backpatch to 9.2.
      85642ec0
    • Bruce Momjian's avatar
      Adjust pgtest coding to be less complex. · 914b1301
      Bruce Momjian authored
      914b1301
    • Bruce Momjian's avatar
    • Tom Lane's avatar
      Centralize the logic for detecting misplaced aggregates, window funcs, etc. · eaccfded
      Tom Lane authored
      Formerly we relied on checking after-the-fact to see if an expression
      contained aggregates, window functions, or sub-selects when it shouldn't.
      This is grotty, easily forgotten (indeed, we had forgotten to teach
      DefineIndex about rejecting window functions), and none too efficient
      since it requires extra traversals of the parse tree.  To improve matters,
      define an enum type that classifies all SQL sub-expressions, store it in
      ParseState to show what kind of expression we are currently parsing, and
      make transformAggregateCall, transformWindowFuncCall, and transformSubLink
      check the expression type and throw error if the type indicates the
      construct is disallowed.  This allows removal of a large number of ad-hoc
      checks scattered around the code base.  The enum type is sufficiently
      fine-grained that we can still produce error messages of at least the
      same specificity as before.
      
      Bringing these error checks together revealed that we'd been none too
      consistent about phrasing of the error messages, so standardize the wording
      a bit.
      
      Also, rewrite checking of aggregate arguments so that it requires only one
      traversal of the arguments, rather than up to three as before.
      
      In passing, clean up some more comments left over from add_missing_from
      support, and annotate some tests that I think are dead code now that that's
      gone.  (I didn't risk actually removing said dead code, though.)
      eaccfded
    • Magnus Hagander's avatar
      Fix upper limit of superuser_reserved_connections, add limit for wal_senders · b3055ab4
      Magnus Hagander authored
      Should be limited to the maximum number of connections excluding
      autovacuum workers, not including.
      
      Add similar check for max_wal_senders, which should never be higher than
      max_connections.
      b3055ab4
  2. 09 Aug, 2012 3 commits
  3. 08 Aug, 2012 8 commits
  4. 07 Aug, 2012 7 commits
    • Tom Lane's avatar
      Implement SQL-standard LATERAL subqueries. · 5ebaaa49
      Tom Lane authored
      This patch implements the standard syntax of LATERAL attached to a
      sub-SELECT in FROM, and also allows LATERAL attached to a function in FROM,
      since set-returning function calls are expected to be one of the principal
      use-cases.
      
      The main change here is a rewrite of the mechanism for keeping track of
      which relations are visible for column references while the FROM clause is
      being scanned.  The parser "namespace" lists are no longer lists of bare
      RTEs, but are lists of ParseNamespaceItem structs, which carry an RTE
      pointer as well as some visibility-controlling flags.  Aside from
      supporting LATERAL correctly, this lets us get rid of the ancient hacks
      that required rechecking subqueries and JOIN/ON and function-in-FROM
      expressions for invalid references after they were initially parsed.
      Invalid column references are now always correctly detected on sight.
      
      In passing, remove assorted parser error checks that are now dead code by
      virtue of our having gotten rid of add_missing_from, as well as some
      comments that are obsolete for the same reason.  (It was mainly
      add_missing_from that caused so much fudging here in the first place.)
      
      The planner support for this feature is very minimal, and will be improved
      in future patches.  It works well enough for testing purposes, though.
      
      catversion bump forced due to new field in RangeTblEntry.
      5ebaaa49
    • Tom Lane's avatar
      Tweak new Perl pgindent for compatibility with middle-aged Perls. · 5078be48
      Tom Lane authored
      We seem to have a rough policy that our Perl scripts should work with
      Perl 5.8, so make this one do so.  Main change is to not use the newfangled
      \h character class in regexes; "[ \t]" is a serviceable replacement.
      5078be48
    • Robert Haas's avatar
      Fix memory leaks in event trigger code. · eea65943
      Robert Haas authored
      Spotted by Jeff Davis.
      eea65943
    • Bruce Momjian's avatar
      Fix to_char(), to_date(), and to_timestamp() to handle negative/BC · ac78c417
      Bruce Momjian authored
      century specifications just like positive/AD centuries.  Previously the
      behavior was either wrong or inconsistent with positive/AD handling.
      
      Centuries without years now always assume the first year of the century,
      which is now documented.
      ac78c417
    • Bruce Momjian's avatar
      Fix pg_upgrade file share violation on Windows created by the commit · fbcfa90b
      Bruce Momjian authored
      4741e9af.  This was done by adding an
      optional second log file parameter to exec_prog(), and closing and
      reopening the log file between system() calls.
      
      Backpatch to 9.2.
      fbcfa90b
    • Alvaro Herrera's avatar
      Fix redundant wording · 3a42a3ff
      Alvaro Herrera authored
      3a42a3ff
    • Simon Riggs's avatar
      fsync backup_label after pg_start_backup() · 0f04fc67
      Simon Riggs authored
      Dave Kerr
      0f04fc67
  5. 06 Aug, 2012 5 commits
    • Robert Haas's avatar
      Typo fixes for previous commit. · b112df84
      Robert Haas authored
      Noted by Thom Brown.
      b112df84
    • Robert Haas's avatar
      Warn more vigorously about the non-transactional behavior of sequences. · 95282d35
      Robert Haas authored
      Craig Ringer, edited fairly heavily by me
      95282d35
    • Alvaro Herrera's avatar
      Make strings identical · f5f8e716
      Alvaro Herrera authored
      f5f8e716
    • Magnus Hagander's avatar
      Complain with proper error message if streaming stops prematurely · 254316f5
      Magnus Hagander authored
      In particular, with a controlled shutdown of the master, pg_basebackup
      with streaming log could terminate without an error message, even though
      the backup is not consistent.
      
      In passing, fix a few cases where walfile wasn't properly set to -1 after
      closing.
      
      Fujii Masao
      254316f5
    • Heikki Linnakangas's avatar
      Perform conversion from Python unicode to string/bytes object via UTF-8. · 3ff15883
      Heikki Linnakangas authored
      We used to convert the unicode object directly to a string in the server
      encoding by calling Python's PyUnicode_AsEncodedString function. In other
      words, we used Python's routines to do the encoding. However, that has a
      few problems. First of all, it required keeping a mapping table of Python
      encoding names and PostgreSQL encodings. But the real killer was that Python
      doesn't support EUC_TW and MULE_INTERNAL encodings at all.
      
      Instead, convert the Python unicode object to UTF-8, and use PostgreSQL's
      encoding conversion functions to convert from UTF-8 to server encoding. We
      were already doing the same in the other direction in PLyUnicode_FromString,
      so this is more consistent, too.
      
      Note: This makes SQL_ASCII to behave more leniently. We used to map
      SQL_ASCII to Python's 'ascii', which on Python means strict 7-bit ASCII
      only, so you got an error if the python string contained anything but pure
      ASCII. You no longer get an error; you get the UTF-8 representation of the
      string instead.
      
      Backpatch to 9.0, where these conversions were introduced.
      
      Jan Urbański
      3ff15883
  6. 04 Aug, 2012 2 commits
  7. 03 Aug, 2012 7 commits
    • Tom Lane's avatar
      Fix bugs with parsing signed hh:mm and hh:mm:ss fields in interval input. · 3152bf72
      Tom Lane authored
      DecodeInterval() failed to honor the "range" parameter (the special SQL
      syntax for indicating which fields appear in the literal string) if the
      time was signed.  This seems inappropriate, so make it work like the
      not-signed case.  The inconsistency was introduced in my commit
      f867339c, which as noted in its log message
      was only really focused on making SQL-compliant literals work per spec.
      Including a sign here is not per spec, but if we're going to allow it
      then it's reasonable to expect it to work like the not-signed case.
      
      Also, remove bogus setting of tmask, which caused subsequent processing to
      think that what had been given was a timezone and not an hh:mm(:ss) field,
      thus confusing checks for redundant fields.  This seems to be an aboriginal
      mistake in Lockhart's commit 2cf16424.
      
      Add regression test cases to illustrate the changed behaviors.
      
      Back-patch as far as 8.4, where support for spec-compliant interval
      literals was added.
      
      Range problem reported and diagnosed by Amit Kapila, tmask problem by me.
      3152bf72
    • Bruce Momjian's avatar
      Add link to synchronous_commit variables in high availability docs. · 95e75052
      Bruce Momjian authored
      Backpatch to 9.2
      
      Erik Rijkers
      95e75052
    • Tom Lane's avatar
      Improve underdocumented btree_xlog_delete_get_latestRemovedXid() code. · f786e91a
      Tom Lane authored
      As noted by Noah Misch, btree_xlog_delete_get_latestRemovedXid is
      critically dependent on the assumption that it's examining a consistent
      state of the database.  This was undocumented though, so the
      seemingly-unrelated check for no active HS sessions might be thought to be
      merely an optional optimization.  Improve comments, and add an explicit
      check of reachedConsistency just to be sure.
      
      This function returns InvalidTransactionId (thereby killing all HS
      transactions) in several cases that are not nearly unlikely enough for my
      taste.  This commit doesn't attempt to fix those deficiencies, just
      document them.
      
      Back-patch to 9.2, not from any real functional need but just to keep the
      branches more closely synced to simplify possible future back-patching.
      f786e91a
    • Tom Lane's avatar
      In SPGiST replay, do conflict resolution before modifying the page. · c1793f2e
      Tom Lane authored
      In yesterday's commit 962e0cc7, I added the
      ResolveRecoveryConflictWithSnapshot call in the wrong place.  I correctly
      put it before spgRedoVacuumRedirect itself would modify the index page ---
      but not before RestoreBkpBlocks, so replay of a record with a full-page
      image would modify the page before kicking off any conflicting HS
      transactions.  Oops.
      c1793f2e
    • Bruce Momjian's avatar
      Document that trying to exceed temp_file_limit causes a query cancel. · 9fb5952c
      Bruce Momjian authored
      Backpatch to 9.2.
      9fb5952c
    • Bruce Momjian's avatar
      Document that, for psql -c, only the result of the last command is · 7b8c7983
      Bruce Momjian authored
      returned, per report from Aleksey Tsalolikhin
      
      Backpatch to 9.2 and 9.1.
      7b8c7983
    • Bruce Momjian's avatar
      In pg_upgrade, use pg_log() instead of prep_status() for · e8969c47
      Bruce Momjian authored
      newline-terminated messages, per suggestion from Tom.
      
      Backpatch to 9.2.
      e8969c47
  8. 02 Aug, 2012 2 commits
    • Tom Lane's avatar
      Fix race conditions associated with SPGiST redirection tuples. · 962e0cc7
      Tom Lane authored
      The correct test for whether a redirection tuple is removable is whether
      tuple's xid < RecentGlobalXmin, not OldestXmin; the previous coding
      failed to protect index searches being done in concurrent transactions that
      have no XID.  This mirrors the recent fix in btree's page recycling logic
      made in commit d3abbbeb.
      
      Also, WAL-log the newest XID of any removed redirection tuple on an index
      page, and apply ResolveRecoveryConflictWithSnapshot during InHotStandby WAL
      replay.  This protects against concurrent Hot Standby transactions possibly
      needing to see the redirection tuple(s).
      
      Per my query of 2012-03-12 and subsequent discussion.
      962e0cc7
    • Tom Lane's avatar
      Update release notes for libpq feature change. · 7719ed04
      Tom Lane authored
      7719ed04