Skip to content
Snippets Groups Projects
  1. Apr 19, 2012
  2. Apr 18, 2012
  3. Apr 16, 2012
  4. Apr 15, 2012
  5. Apr 14, 2012
  6. Apr 13, 2012
  7. Apr 12, 2012
  8. Apr 11, 2012
    • Tom Lane's avatar
      Silently ignore any nonexistent schemas that are listed in search_path. · 880bfc32
      Tom Lane authored
      Previously we attempted to throw an error or at least warning for missing
      schemas, but this was done inconsistently because of implementation
      restrictions (in many cases, GUC settings are applied outside transactions
      so that we can't do system catalog lookups).  Furthermore, there were
      exceptions to the rule even in the beginning, and we'd been poking more
      and more holes in it as time went on, because it turns out that there are
      lots of use-cases for having some irrelevant items in a common search_path
      value.  It seems better to just adopt a philosophy similar to what's always
      been done with Unix PATH settings, wherein nonexistent or unreadable
      directories are silently ignored.
      
      This commit also fixes the documentation to point out that schemas for
      which the user lacks USAGE privilege are silently ignored.  That's always
      been true but was previously not documented.
      
      This is mostly in response to Robert Haas' complaint that 9.1 started to
      throw errors or warnings for missing schemas in cases where prior releases
      had not.  We won't adopt such a significant behavioral change in a back
      branch, so something different will be needed in 9.1.
      880bfc32
    • Alvaro Herrera's avatar
      Accept postgres:// URIs in libpq connection functions · b035cb9d
      Alvaro Herrera authored
      postgres:// URIs are an attempt to "stop the bleeding" in this general
      area that has been said to occur due to external projects adopting their
      own syntaxes.  The syntaxes supported by this patch:
      
       postgres://[user[:pwd]@][unix-socket][:port[/dbname]][?param1=value1&...]
       postgres://[user[:pwd]@][net-location][:port][/dbname][?param1=value1&...]
      
      should be enough to cover most interesting cases without having to
      resort to "param=value" pairs, but those are provided for the cases that
      need them regardless.
      
      libpq documentation has been shuffled around a bit, to avoid stuffing
      all the format details into the PQconnectdbParams description, which was
      already a bit overwhelming.  The list of keywords has moved to its own
      subsection, and the details on the URI format live in another subsection.
      
      This includes a simple test program, as requested in discussion, to
      ensure that interesting corner cases continue to work appropriately in
      the future.
      
      Author: Alexander Shulgin
      Some tweaking by Álvaro Herrera, Greg Smith, Daniel Farina, Peter Eisentraut
      Reviewed by Robert Haas, Alexey Klyukin (offlist), Heikki Linnakangas,
      Marko Kreen, and others
      
      Oh, it also supports postgresql:// but that's probably just an accident.
      b035cb9d
  9. Apr 10, 2012
    • Tom Lane's avatar
      Measure epoch of timestamp-without-time-zone from local not UTC midnight. · 0d9819f7
      Tom Lane authored
      This patch reverts commit 191ef2b4
      and thereby restores the pre-7.3 behavior of EXTRACT(EPOCH FROM
      timestamp-without-tz).  Per discussion, the more recent behavior was
      misguided on a couple of grounds: it makes it hard to get a
      non-timezone-aware epoch value for a timestamp, and it makes this one
      case dependent on the value of the timezone GUC, which is incompatible
      with having timestamp_part() labeled as immutable.
      
      The other behavior is still available (in all releases) by explicitly
      casting the timestamp to timestamp with time zone before applying EXTRACT.
      
      This will need to be called out as an incompatible change in the 9.2
      release notes.  Although having mutable behavior in a function marked
      immutable is clearly a bug, we're not going to back-patch such a change.
      0d9819f7
    • Heikki Linnakangas's avatar
      Point the URL to PL/py directly to the page about the procedural language. · 442da68f
      Heikki Linnakangas authored
      It used to point to a top-level page that contains client-side tools as
      well. It was hard to find the procedural language there.
      442da68f
    • Heikki Linnakangas's avatar
      Fix typos in docs, some words were doubled. · fb9bc5d9
      Heikki Linnakangas authored
      Thom Brown
      fb9bc5d9
    • Tom Lane's avatar
      Adjust various references to GEQO being non-deterministic. · c94b43ce
      Tom Lane authored
      It's still non-deterministic in some sense ... but given fixed settings
      and identical planning problems, it will now always choose the same plan,
      so we probably shouldn't tar it with that brush.  Per bug #6565 from
      Guillaume Cottenceau.  Back-patch to 9.0 where the behavior was fixed.
      c94b43ce
  10. Apr 09, 2012
  11. Apr 07, 2012
  12. Apr 06, 2012
  13. Apr 05, 2012
    • Robert Haas's avatar
      Allow pg_archivecleanup to strip optional file extensions. · bbc02243
      Robert Haas authored
      Greg Smith and Jaime Casanova, reviewed by Alex Shulgin and myself.
      e
      bbc02243
    • Robert Haas's avatar
      Publish checkpoint timing information to pg_stat_bgwriter. · b736aef2
      Robert Haas authored
      Greg Smith, Peter Geoghegan, and Robert Haas
      b736aef2
    • Robert Haas's avatar
      Correctly explain units used by function-timing stats functions. · 97e26dc6
      Robert Haas authored
      The views are in milliseconds, but the raw functions return
      microseconds.
      97e26dc6
    • Robert Haas's avatar
      Expose track_iotiming data via the statistics collector. · 64482890
      Robert Haas authored
      Ants Aasma's original patch to add timing information for buffer I/O
      requests exposed this data at the relation level, which was judged too
      costly.  I've here exposed it at the database level instead.
      64482890
    • Tom Lane's avatar
      Improve efficiency of dblink by using libpq's new row processor API. · 6f922ef8
      Tom Lane authored
      This patch provides a test case for libpq's row processor API.
      contrib/dblink can deal with very large result sets by dumping them into
      a tuplestore (which can spill to disk) --- but until now, the intermediate
      storage of the query result in a PGresult meant memory bloat for any large
      result.  Now we use a row processor to convert the data to tuple form and
      dump it directly into the tuplestore.
      
      A limitation is that this only works for plain dblink() queries, not
      dblink_send_query() followed by dblink_get_result().  In the latter
      case we don't know the desired tuple rowtype soon enough.  While hack
      solutions to that are possible, a different user-level API would
      probably be a better answer.
      
      Kyotaro Horiguchi, reviewed by Marko Kreen and Tom Lane
      6f922ef8
    • Tom Lane's avatar
      Add a "row processor" API to libpq for better handling of large results. · 92785dac
      Tom Lane authored
      Traditionally libpq has collected an entire query result before passing
      it back to the application.  That provides a simple and transactional API,
      but it's pretty inefficient for large result sets.  This patch allows the
      application to process each row on-the-fly instead of accumulating the
      rows into the PGresult.  Error recovery becomes a bit more complex, but
      often that tradeoff is well worth making.
      
      Kyotaro Horiguchi, reviewed by Marko Kreen and Tom Lane
      92785dac
  14. Apr 03, 2012
  15. Mar 29, 2012
    • Tom Lane's avatar
      Improve contrib/pg_stat_statements to lump "similar" queries together. · 7313cc01
      Tom Lane authored
      pg_stat_statements now hashes selected fields of the analyzed parse tree
      to assign a "fingerprint" to each query, and groups all queries with the
      same fingerprint into a single entry in the pg_stat_statements view.
      In practice it is expected that queries with the same fingerprint will be
      equivalent except for values of literal constants.  To make the display
      more useful, such constants are replaced by "?" in the displayed query
      strings.
      
      This mechanism currently supports only optimizable queries (SELECT,
      INSERT, UPDATE, DELETE).  Utility commands are still matched on the
      basis of their literal query strings.
      
      There remain some open questions about how to deal with utility statements
      that contain optimizable queries (such as EXPLAIN and SELECT INTO) and how
      to deal with expiring speculative hashtable entries that are made to save
      the normalized form of a query string.  However, fixing these issues should
      require only localized changes, and since there are other open patches
      involving contrib/pg_stat_statements, it seems best to go ahead and commit
      what we've got.
      
      Peter Geoghegan, reviewed by Daniel Farina
      7313cc01
  16. Mar 28, 2012
Loading