1. 06 2月, 2007 9 次提交
  2. 05 2月, 2007 3 次提交
    • A
      Pass modern COPY syntax to backend, since copy (query) does not accept old... · 00ade1df
      Andrew Dunstan 提交于
      Pass modern COPY syntax to backend, since copy (query) does not accept old syntax. Per complaint from Michael Fuhr.
      00ade1df
    • T
      Rename MaxTupleSize to MaxHeapTupleSize to clarify that it's not meant to · 23c4978e
      Tom Lane 提交于
      describe the maximum size of index tuples (which is typically AM-dependent
      anyway); and consequently remove the bogus deduction for "special space"
      that was built into it.
      
      Adjust TOAST_TUPLE_THRESHOLD and TOAST_MAX_CHUNK_SIZE to avoid wasting two
      bytes per toast chunk, and to ensure that the calculation correctly tracks any
      future changes in page header size.  The computation had been inaccurate in a
      way that didn't cause any harm except space wastage, but future changes could
      have broken it more drastically.
      
      Fix the calculation of BTMaxItemSize, which was formerly computed as 1 byte
      more than it could safely be.  This didn't cause any harm in practice because
      it's only compared against maxalign'd lengths, but future changes in the size
      of page headers or btree special space could have exposed the problem.
      
      initdb forced because of change in TOAST_MAX_CHUNK_SIZE, which alters the
      storage of toast tables.
      23c4978e
    • T
      Don't MAXALIGN in the checks to decide whether a tuple is over TOAST's · a2e092e1
      Tom Lane 提交于
      threshold for tuple length.  On 4-byte-MAXALIGN machines, the toast code
      creates tuples that have t_len exactly TOAST_TUPLE_THRESHOLD ... but this
      number is not itself maxaligned, so if heap_insert maxaligns t_len before
      comparing to TOAST_TUPLE_THRESHOLD, it'll uselessly recurse back to
      tuptoaster.c, wasting cycles.  (It turns out that this does not happen on
      8-byte-MAXALIGN machines, because for them the outer MAXALIGN in the
      TOAST_MAX_CHUNK_SIZE macro reduces TOAST_MAX_CHUNK_SIZE so that toast tuples
      will be less than TOAST_TUPLE_THRESHOLD in size.  That MAXALIGN is really
      incorrect, but we can't remove it now, see below.)  There isn't any particular
      value in maxaligning before comparing to the thresholds, so just don't do
      that, which saves a small number of cycles in itself.
      
      These numbers should be rejiggered to minimize wasted space on toast-relation
      pages, but we can't do that in the back branches because changing
      TOAST_MAX_CHUNK_SIZE would force an initdb (by changing the contents of toast
      tables).  We can move the toast decision thresholds a bit, though, which is
      what this patch effectively does.
      
      Thanks to Pavan Deolasee for discovering the unintended recursion.
      
      Back-patch into 8.2, but not further, pending more testing.  (HEAD is about
      to get a further patch modifying the thresholds, so it won't help much
      for testing this form of the patch.)
      a2e092e1
  3. 04 2月, 2007 10 次提交
  4. 03 2月, 2007 8 次提交
  5. 02 2月, 2007 10 次提交