Skip to content
Snippets Groups Projects
  1. Aug 20, 2012
  2. Aug 19, 2012
  3. Aug 18, 2012
    • Tom Lane's avatar
      Make use of LATERAL in information_schema.sequences view. · c246eb5a
      Tom Lane authored
      It said "XXX: The following could be improved if we had LATERAL" ...
      so let's do that.
      
      No catversion bump since either version of the view works fine.
      c246eb5a
    • Tom Lane's avatar
      Another round of planner fixes for LATERAL. · 084a29c9
      Tom Lane authored
      Formerly, subquery pullup had no need to examine other entries in the range
      table, since they could not contain any references to the subquery being
      pulled up.  That's no longer true with LATERAL, so now we need to be able
      to visit rangetable subexpressions to replace Vars referencing the
      pulled-up subquery.  Also, this means that extract_lateral_references must
      be unsurprised at encountering lateral PlaceHolderVars, since such might be
      created when pulling up a subquery that's underneath an outer join with
      respect to the lateral reference.
      084a29c9
  4. Aug 17, 2012
  5. Aug 16, 2012
    • Tom Lane's avatar
      Allow create_index_paths() to consider multiple join bitmapscan paths. · f5983923
      Tom Lane authored
      In the initial cut at the "parameterized paths" feature, I'd simplified
      create_index_paths() to the point where it would only generate a single
      parameterized bitmap path per relation.  Experimentation with an example
      supplied by Josh Berkus convinces me that that's not good enough: we really
      need to consider a bitmap path for each possible outer relation.  Otherwise
      we have regressions relative to pre-9.2 versions, in which the planner
      picks a plain indexscan where it should have used a bitmap scan in queries
      involving three or more tables.  Indeed, after fixing this, several queries
      in the regression tests show improved plans as a result of using bitmap not
      plain indexscans.
      f5983923
    • Tom Lane's avatar
      56ba337e
    • Bruce Momjian's avatar
    • Heikki Linnakangas's avatar
      Add SP-GiST support for range types. · 317dd55a
      Heikki Linnakangas authored
      The implementation is a quad-tree, largely copied from the quad-tree
      implementation for points. The lower and upper bound of ranges are the 2d
      coordinates, with some extra code to handle empty ranges.
      
      I left out the support for adjacent operator, -|-, from the original patch.
      Not because there was necessarily anything wrong with it, but it was more
      complicated than the other operators, and I only have limited time for
      reviewing. That will follow as a separate patch.
      
      Alexander Korotkov, reviewed by Jeff Davis and me.
      317dd55a
    • Heikki Linnakangas's avatar
      Fix GiST buffering build bug, which caused "failed to re-find parent" errors. · 89911b3a
      Heikki Linnakangas authored
      We use a hash table to track the parents of inner pages, but when inserting
      to a leaf page, the caller of gistbufferinginserttuples() must pass a
      correct block number of the leaf's parent page. Before gistProcessItup()
      descends to a child page, it checks if the downlink needs to be adjusted to
      accommodate the new tuple, and updates the downlink if necessary. However,
      updating the downlink might require splitting the page, which might move the
      downlink to a page to the right. gistProcessItup() doesn't realize that, so
      when it descends to the leaf page, it might pass an out-of-date parent block
      number as a result. Fix that by returning the block a tuple was inserted to
      from gistbufferinginserttuples().
      
      This fixes the bug reported by Zdeněk Jílovec.
      89911b3a
    • Bruce Momjian's avatar
    • Bruce Momjian's avatar
      Update C comment to NOTICE to reflect previous commit changing the error · 41fa3dfb
      Bruce Momjian authored
      level, per report from Tom.
      41fa3dfb
    • Bruce Momjian's avatar
      In psql, if the is no connection object, e.g. due to a server crash, · fe21fcaf
      Bruce Momjian authored
      require all parameters for \c, rather than using the defaults, which
      might be wrong.
      fe21fcaf
    • Tom Lane's avatar
      Fix rescan logic in nodeCtescan. · 4c531693
      Tom Lane authored
      The previous coding essentially assumed that nodes would be rescanned in
      the same order they were initialized in; or at least that the "leader" of
      a group of CTEscans would be rescanned before any others were required to
      execute.  Unfortunately, that isn't even a little bit true.  It's possible
      to devise queries in which the leader isn't rescanned until other CTEscans
      on the same CTE have run to completion, or even in which the leader never
      gets a rescan call at all.
      
      The fix makes the leader specially responsible only for initial creation
      and final destruction of the tuplestore; rescan resets are now a
      symmetrically shared responsibility.  This means that we might reset the
      tuplestore multiple times when restarting a plan subtree containing
      multiple CTEscans; but resetting an already-empty tuplestore is cheap
      enough that that doesn't seem like a problem.
      
      Per report from Adam Mackler; the new regression test cases are based on
      his example query.
      
      Back-patch to 8.4 where CTE scans were introduced.
      4c531693
  6. Aug 15, 2012
    • Bruce Momjian's avatar
      On second thought, explain why date_trunc("week") on interval values is · 083b9133
      Bruce Momjian authored
      not supported in the error message, rather than the docs.
      083b9133
    • Bruce Momjian's avatar
    • Tom Lane's avatar
      Disallow extensions from owning the schema they are assigned to. · 4d642b59
      Tom Lane authored
      This situation creates a dependency loop that confuses pg_dump and probably
      other things.  Moreover, since the mental model is that the extension
      "contains" schemas it owns, but "is contained in" its extschema (even
      though neither is strictly true), having both true at once is confusing for
      people too.  So prevent the situation from being set up.
      
      Reported and patched by Thom Brown.  Back-patch to 9.1 where extensions
      were added.
      4d642b59
    • Bruce Momjian's avatar
      Properly escape usernames in initdb, so names with single-quotes are · a9732965
      Bruce Momjian authored
      supported.  Also add assert to catch future breakage.
      
      Also, improve documentation that "double"-quotes must be used in
      pg_hba.conf (not single quotes).
      a9732965
    • Tom Lane's avatar
      Resurrect the "last ditch" code path in join_search_one_level(). · eb919e8f
      Tom Lane authored
      This essentially reverts commit e54b10a6,
      in which I'd decided that the "last ditch" join logic was useless.  The
      folly of that is now exposed by a report from Pavel Stehule: although the
      function should always find at least one join in a self-contained join
      problem, it can still fail to do so in a sub-problem created by artificial
      from_collapse_limit or join_collapse_limit constraints.  Adjust the
      comments to describe this, and simplify the code a bit to match the new
      coding of the earlier loop in the function.
      
      I'm not terribly happy about this: I still subscribe to the opinion stated
      in the previous commit message that the "last ditch" code can obscure logic
      bugs elsewhere.  But the alternative seems to be to complicate the earlier
      tests for does-this-relation-have-a-join-clause to the point where they can
      tell whether the join clauses link outside the current join sub-problem.
      And that looks messy, slow, and possibly a source of bugs in itself.
      In any case, now is not the time to be inserting experimental code into
      9.2, so let's just go back to the time-tested solution.
      eb919e8f
    • Tom Lane's avatar
      Prevent access to external files/URLs via XML entity references. · 17351fce
      Tom Lane authored
      xml_parse() would attempt to fetch external files or URLs as needed to
      resolve DTD and entity references in an XML value, thus allowing
      unprivileged database users to attempt to fetch data with the privileges
      of the database server.  While the external data wouldn't get returned
      directly to the user, portions of it could be exposed in error messages
      if the data didn't parse as valid XML; and in any case the mere ability
      to check existence of a file might be useful to an attacker.
      
      The ideal solution to this would still allow fetching of references that
      are listed in the host system's XML catalogs, so that documents can be
      validated according to installed DTDs.  However, doing that with the
      available libxml2 APIs appears complex and error-prone, so we're not going
      to risk it in a security patch that necessarily hasn't gotten wide review.
      So this patch merely shuts off all access, causing any external fetch to
      silently expand to an empty string.  A future patch may improve this.
      
      In HEAD and 9.2, also suppress warnings about undefined entities, which
      would otherwise occur as a result of not loading referenced DTDs.  Previous
      branches don't show such warnings anyway, due to different error handling
      arrangements.
      
      Credit to Noah Misch for first reporting the problem, and for much work
      towards a solution, though this simplistic approach was not his preference.
      Also thanks to Daniel Veillard for consultation.
      
      Security: CVE-2012-3489
      17351fce
  7. Aug 14, 2012
  8. Aug 13, 2012
    • 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
  9. Aug 12, 2012
    • 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
    • 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
  10. Aug 11, 2012
    • 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
  11. Aug 10, 2012
    • 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
      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
  12. Aug 09, 2012
  13. Aug 08, 2012
Loading