1. 14 Aug, 2012 4 commits
  2. 13 Aug, 2012 1 commit
    • Heikki Linnakangas's avatar
      Add runtime checks for number of query parameters passed to libpq functions. · f86e6ba4
      Heikki Linnakangas authored
      The maximum number of parameters supported by the FE/BE protocol is 65535,
      as it's transmitted as a 16-bit unsigned integer. However, the nParams
      arguments to libpq functions are all of type 'int'. We can't change the
      signature of libpq functions, but a simple bounds check is in order to make
      it more clear what's going wrong if you try to pass more than 65535
      parameters.
      
      Per complaint from Jim Vanns.
      f86e6ba4
  3. 12 Aug, 2012 1 commit
    • Tom Lane's avatar
      More fixes for planner's handling of LATERAL. · c1774d2c
      Tom Lane authored
      Re-allow subquery pullup for LATERAL subqueries, except when the subquery
      is below an outer join and contains lateral references to relations outside
      that outer join.  If we pull up in such a case, we risk introducing lateral
      cross-references into outer joins' ON quals, which is something the code is
      entirely unprepared to cope with right now; and I'm not sure it'll ever be
      worth coping with.
      
      Support lateral refs in VALUES (this seems to be the only additional path
      type that needs such support as a consequence of re-allowing subquery
      pullup).
      
      Put in a slightly hacky fix for joinpath.c's refusal to consider
      parameterized join paths even when there cannot be any unparameterized
      ones.  This was causing "could not devise a query plan for the given query"
      failures in queries involving more than two FROM items.
      
      Put in an even more hacky fix for distribute_qual_to_rels() being unhappy
      with join quals that contain references to rels outside their syntactic
      scope; which is to say, disable that test altogether.  Need to think about
      how to preserve some sort of debugging cross-check here, while not
      expending more cycles than befits a debugging cross-check.
      c1774d2c
  4. 11 Aug, 2012 3 commits
    • Tom Lane's avatar
      Fix some issues with LATERAL(SELECT UNION ALL SELECT). · e76af541
      Tom Lane authored
      The LATERAL marking has to be propagated down to the UNION leaf queries
      when we pull them up.  Also, fix the formerly stubbed-off
      set_append_rel_pathlist().  It does already have enough smarts to cope with
      making a parameterized Append path at need; it just has to not assume that
      there *must* be an unparameterized path.
      e76af541
    • Tom Lane's avatar
      Add link from COPY ref page to psql \copy. · 83af58f6
      Tom Lane authored
      Jeff Janes
      83af58f6
    • Tom Lane's avatar
      Fix dependencies generated during ALTER TABLE ADD CONSTRAINT USING INDEX. · b5380035
      Tom Lane authored
      This command generated new pg_depend entries linking the index to the
      constraint and the constraint to the table, which match the entries made
      when a unique or primary key constraint is built de novo.  However, it did
      not bother to get rid of the entries linking the index directly to the
      table.  We had considered the issue when the ADD CONSTRAINT USING INDEX
      patch was written, and concluded that we didn't need to get rid of the
      extra entries.  But this is wrong: ALTER COLUMN TYPE wasn't expecting such
      redundant dependencies to exist, as reported by Hubert Depesz Lubaczewski.
      On reflection it seems rather likely to break other things as well, since
      there are many bits of code that crawl pg_depend for one purpose or
      another, and most of them are pretty naive about what relationships they're
      expecting to find.  Fortunately it's not that hard to get rid of the extra
      dependency entries, so let's do that.
      
      Back-patch to 9.1, where ALTER TABLE ADD CONSTRAINT USING INDEX was added.
      b5380035
  5. 10 Aug, 2012 7 commits
    • Tom Lane's avatar
      Update overlooked comment. · a67d6d9a
      Tom Lane authored
      a67d6d9a
    • 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
  6. 09 Aug, 2012 3 commits
  7. 08 Aug, 2012 8 commits
  8. 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
  9. 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
  10. 04 Aug, 2012 1 commit