1. 11 4月, 2012 2 次提交
    • P
      psql: Improve tab completion of WITH · 6b8c99c3
      Peter Eisentraut 提交于
      Only match when WITH is the first word, as WITH may appear in many
      other contexts.
      
      Josh Kupershmidt
      6b8c99c3
    • T
      Measure epoch of timestamp-without-time-zone from local not UTC midnight. · 0d9819f7
      Tom Lane 提交于
      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
  2. 10 4月, 2012 6 次提交
  3. 09 4月, 2012 8 次提交
    • T
      Fix an Assert that turns out to be reachable after all. · 65fd9133
      Tom Lane 提交于
      estimate_num_groups() gets unhappy with
      	create table empty();
      	select * from empty except select * from empty e2;
      I can't see any actual use-case for such a query (and the table is illegal
      per SQL spec), but it seems like a good idea that it not cause an assert
      failure.
      65fd9133
    • T
      Don't bother copying empty support arrays in a zero-column MergeJoin. · d515365a
      Tom Lane 提交于
      The case could not arise when this code was originally written, but it can
      now (since we made zero-column MergeJoins work for the benefit of FULL JOIN
      ON TRUE).  I don't think there is any actual bug here, but we might as well
      treat it consistently with other uses of COPY_POINTER_FIELD().  Per comment
      from Ashutosh Bapat.
      d515365a
    • T
      Save a few cycles while creating "sticky" entries in pg_stat_statements. · e969f9a7
      Tom Lane 提交于
      There's no need to sit there and increment the stats when we know all the
      increments would be zero anyway.  The actual additions might not be very
      expensive, but skipping acquisition of the spinlock seems like a good
      thing.  Pushing the logic about initialization of the usage count down into
      entry_alloc() allows us to do that while making the code actually simpler,
      not more complex.  Expansion on a suggestion by Peter Geoghegan.
      e969f9a7
    • H
      Remove link to ODBCng project from the docs. · 140a4fbf
      Heikki Linnakangas 提交于
      Thom Browne pointed out that the URL was out of date, and Devrim GÜNDÜZ
      pointed out that the project isn't maintained anymore.
      140a4fbf
    • R
      Teach SLRU code to avoid replacing I/O-busy pages. · 3ae5133b
      Robert Haas 提交于
      Patch by me; review by Tom Lane and others.
      3ae5133b
    • T
      Improve management of "sticky" entries in contrib/pg_stat_statements. · d5375491
      Tom Lane 提交于
      This patch addresses a deficiency in the previous pg_stat_statements patch.
      We want to give sticky entries an initial "usage" factor high enough that
      they probably will stick around until their query is completed.  However,
      if the query never completes (eg it gets an error during execution), the
      entry shouldn't persist indefinitely.  Manage this by starting out with
      a usage setting equal to the (approximate) median usage value within the
      whole hashtable, but decaying the value much more aggressively than we
      do for normal entries.
      
      Peter Geoghegan
      d5375491
    • H
      set_stack_base() no longer needs to be called in PostgresMain. · 03529a3f
      Heikki Linnakangas 提交于
      This was a thinko in previous commit. Now that stack base pointer is now set
      in PostmasterMain and SubPostmasterMain, it doesn't need to be set in
      PostgresMain anymore.
      03529a3f
    • H
      Do stack-depth checking in all postmaster children. · ef3883d1
      Heikki Linnakangas 提交于
      We used to only initialize the stack base pointer when starting up a regular
      backend, not in other processes. In particular, autovacuum workers can run
      arbitrary user code, and without stack-depth checking, infinite recursion
      in e.g an index expression will bring down the whole cluster.
      
      The comment about PL/Java using set_stack_base() is not yet true. As the
      code stands, PL/java still modifies the stack_base_ptr variable directly.
      However, it's been discussed in the PL/Java mailing list that it should be
      changed to use the function, because PL/Java is currently oblivious to the
      register stack used on Itanium. There's another issues with PL/Java, namely
      that the stack base pointer it sets is not really the base of the stack, it
      could be something close to the bottom of the stack. That's a separate issue
      that might need some further changes to this code, but that's a different
      story.
      
      Backpatch to all supported releases.
      ef3883d1
  4. 08 4月, 2012 4 次提交
  5. 07 4月, 2012 7 次提交
    • T
      Update URL for pgtclng project. · d75829a6
      Tom Lane 提交于
      Thom Brown
      d75829a6
    • T
      Fix misleading output from gin_desc(). · 0ab4db52
      Tom Lane 提交于
      XLOG_GIN_UPDATE_META_PAGE and XLOG_GIN_DELETE_LISTPAGE records were printed
      with a list link field labeled as "blkno", which was confusing, especially
      when the link was empty (InvalidBlockNumber).  Print the metapage block
      number instead, since that's what's actually being updated.  We could
      include the link values too as a separate field, but not clear it's worth
      the trouble.
      
      Back-patch to 8.4 where the dubious code was added.
      0ab4db52
    • T
      Fix broken comparetup_datum code. · 17b985b1
      Tom Lane 提交于
      Commit 337b6f5e contained the entirely
      fanciful assumption that it had made comparetup_datum unreachable.
      Reported and patched by Takashi Yamamoto.
      
      Fix up some not terribly accurate/useful comments from that commit, too.
      17b985b1
    • P
      Fix some typos in the documentation · 6c41948c
      Peter Eisentraut 提交于
      Thom Brown
      6c41948c
    • P
      25028a27
    • T
      Dept of second thoughts: improve the API for AnalyzeForeignTable. · cea49fe8
      Tom Lane 提交于
      If we make the initially-called function return the table physical-size
      estimate, acquire_inherited_sample_rows will be able to use that to
      allocate numbers of samples among child tables, when the day comes that
      we want to support foreign tables in inheritance trees.
      cea49fe8
    • T
      Allow statistics to be collected for foreign tables. · 263d9de6
      Tom Lane 提交于
      ANALYZE now accepts foreign tables and allows the table's FDW to control
      how the sample rows are collected.  (But only manual ANALYZEs will touch
      foreign tables, for the moment, since among other things it's not very
      clear how to handle remote permissions checks in an auto-analyze.)
      
      contrib/file_fdw is extended to support this.
      
      Etsuro Fujita, reviewed by Shigeru Hanada, some further tweaking by me.
      263d9de6
  6. 06 4月, 2012 7 次提交
  7. 05 4月, 2012 6 次提交
    • R
      Correctly explain units used by function-timing stats functions. · 97e26dc6
      Robert Haas 提交于
      The views are in milliseconds, but the raw functions return
      microseconds.
      97e26dc6
    • R
      Expose track_iotiming data via the statistics collector. · 64482890
      Robert Haas 提交于
      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
    • T
      Fix plpgsql named-cursor-parameter feature for variable name conflicts. · 05dbd4a7
      Tom Lane 提交于
      The parser got confused if a cursor parameter had the same name as
      a plpgsql variable.  Reported and diagnosed by Yeb Havinga, though
      this isn't exactly his proposed fix.
      
      Also, some mostly-but-not-entirely-cosmetic adjustments to the original
      named-cursor-parameter patch, for code readability and better error
      diagnostics.
      05dbd4a7
    • T
      Improve efficiency of dblink by using libpq's new row processor API. · 6f922ef8
      Tom Lane 提交于
      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
    • T
      Add a "row processor" API to libpq for better handling of large results. · 92785dac
      Tom Lane 提交于
      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
    • T
      Remove useless PGRES_COPY_BOTH "support" in psql. · cb917e15
      Tom Lane 提交于
      There is no existing or foreseeable case in which psql should see a
      PGRES_COPY_BOTH PQresultStatus; and if such a case ever emerges, it's a
      pretty good bet that these code fragments wouldn't do the right thing
      anyway.  Remove them, and let the existing default cases do the appropriate
      thing, namely emit an "unexpected PQresultStatus" bleat.
      
      Noted while working on libpq row processor patch, for which I was
      considering adding a PGRES_SUSPENDED status code --- the same default-case
      treatment would be appropriate for that.
      cb917e15