1. 31 12月, 2006 1 次提交
  2. 30 12月, 2006 1 次提交
  3. 29 12月, 2006 3 次提交
  4. 28 12月, 2006 4 次提交
    • P
      Add send and recv functions for xml type. · ad1425ae
      Peter Eisentraut 提交于
      ad1425ae
    • P
      d9e1c97f
    • T
      Modify local buffer management to request memory for local buffers in blocks · 72619f81
      Tom Lane 提交于
      of increasing size, instead of one at a time.  This reduces the memory
      management overhead when num_temp_buffers is large: in the previous coding
      we would actually waste 50% of the space used for temp buffers, because aset.c
      would round the individual requests up to 16K.  Problem noted while studying
      a performance issue reported by Steven Flatt.
      
      Back-patch as far as 8.1 --- older versions used few enough local buffers
      that the issue isn't significant for them.
      72619f81
    • T
      Improve memory management code to avoid inefficient behavior when a context · c22dea89
      Tom Lane 提交于
      has a small maxBlockSize: the maximum request size that we will treat as a
      "chunk" needs to be limited to fit in maxBlockSize.  Otherwise we will round
      up the request size to the next power of 2, wasting space, which is a bit
      pointless if we aren't going to make the blocks big enough to fit additional
      stuff in them.  The example motivating this is local buffer management, which
      makes repeated allocations of 8K (one BLCKSZ buffer) in TopMemoryContext,
      which has maxBlockSize = 8K because for the most part allocations there are
      small.  This leads to each local buffer actually eating 16K of space, which
      adds up when there are thousands of them.  I intend to change localbuf.c to
      aggregate its requests, which will prevent this particular misbehavior, but
      it seems likely that similar scenarios could arise elsewhere, so fixing the
      core problem seems wise as well.
      c22dea89
  5. 27 12月, 2006 3 次提交
    • T
      Fix failure due to accessing an already-freed tuple descriptor in a plan · 0cbc5b1e
      Tom Lane 提交于
      involving HashAggregate over SubqueryScan (this is the known case, there
      may well be more).  The bug is only latent in releases before 8.2 since they
      didn't try to access tupletable slots' descriptors during ExecDropTupleTable.
      The least bogus fix seems to be to make subqueries share the parent query's
      memory context, so that tupdescs they create will have the same lifespan as
      those of the parent query.  There are comments in the code envisioning going
      even further by not having a separate child EState at all, but that will
      require rethinking executor access to range tables, which I don't want to
      tackle right now.  Per bug report from Jean-Pierre Pelletier.
      0cbc5b1e
    • T
      Repair bug #2839: the various ExecReScan functions need to reset · 68996463
      Tom Lane 提交于
      ps_TupFromTlist in plan nodes that make use of it.  This was being done
      correctly in join nodes and Result nodes but not in any relation-scan nodes.
      Bug would lead to bogus results if a set-returning function appeared in the
      targetlist of a subquery that could be rescanned after partial execution,
      for example a subquery within EXISTS().  Bug has been around forever :-(
      ... surprising it wasn't reported before.
      68996463
    • T
      Repair bug #2836: SPI_execute_plan returned zero if none of the querytrees · fccf99f0
      Tom Lane 提交于
      were marked canSetTag.  While it's certainly correct to return the result
      of the last one that is marked canSetTag, it's less clear what to do when
      none of them are.  Since plpgsql will complain if zero is returned, the
      8.2.0 behavior isn't good.  I've fixed it to restore the prior behavior of
      returning the physically last query's result code when there are no
      canSetTag queries.
      fccf99f0
  6. 25 12月, 2006 1 次提交
    • T
      Bring some order and sanity to error handling in the xml patch. · 57f1630c
      Tom Lane 提交于
      Use a TRY block instead of (inadequate) ad-hoc coding to ensure that
      libxml is cleaned up after a failure.  Report the intended SQLCODE
      instead of defaulting to XX000.  Avoid risking use of a dangling
      pointer by keeping the persistent error buffer in TopMemoryContext.
      Be less trusting that error messages don't contain %.
      
      This patch doesn't do anything about changing the way the messages
      are put together --- this is just about mechanism.
      57f1630c
  7. 24 12月, 2006 2 次提交
  8. 23 12月, 2006 4 次提交
    • T
      Suppress various compiler warnings in new xml code. · 64974613
      Tom Lane 提交于
      64974613
    • B
      Remove unnecessary parentheses in if() statements. · 426030ed
      Bruce Momjian 提交于
      426030ed
    • B
      For GUC values, check for partial string matches on 'on' and 'off', but · 27eeca5c
      Bruce Momjian 提交于
      require at least two characters for uniqueness.   This now matches the
      behavior of other boolean strings we support, per report from Gurjeet
      Singh.
      27eeca5c
    • T
      Restructure operator classes to allow improved handling of cross-data-type · a78fcfb5
      Tom Lane 提交于
      cases.  Operator classes now exist within "operator families".  While most
      families are equivalent to a single class, related classes can be grouped
      into one family to represent the fact that they are semantically compatible.
      Cross-type operators are now naturally adjunct parts of a family, without
      having to wedge them into a particular opclass as we had done originally.
      
      This commit restructures the catalogs and cleans up enough of the fallout so
      that everything still works at least as well as before, but most of the work
      needed to actually improve the planner's behavior will come later.  Also,
      there are not yet CREATE/DROP/ALTER OPERATOR FAMILY commands; the only way
      to create a new family right now is to allow CREATE OPERATOR CLASS to make
      one by default.  I owe some more documentation work, too.  But that can all
      be done in smaller pieces once this infrastructure is in place.
      a78fcfb5
  9. 22 12月, 2006 1 次提交
  10. 19 12月, 2006 1 次提交
  11. 16 12月, 2006 1 次提交
    • T
      Fix some planner bugs exposed by reports from Arjen van der Meijden. These · 281f4018
      Tom Lane 提交于
      are all in new-in-8.2 logic associated with indexability of ScalarArrayOpExpr
      (IN-clauses) or amortization of indexscan costs across repeated indexscans
      on the inside of a nestloop.  In particular:
      
      Fix some logic errors in the estimation for multiple scans induced by a
      ScalarArrayOpExpr indexqual.
      
      Include a small cost component in bitmap index scans to reflect the costs of
      manipulating the bitmap itself; this is mainly to prevent a bitmap scan from
      appearing to have the same cost as a plain indexscan for fetching a single
      tuple.
      
      Also add a per-index-scan-startup CPU cost component; while prior releases
      were clearly too pessimistic about the cost of repeated indexscans, the
      original 8.2 coding allowed the cost of an indexscan to effectively go to zero
      if repeated often enough, which is overly optimistic.
      
      Pay some attention to index correlation when estimating costs for a nestloop
      inner indexscan: this is significant when the plan fetches multiple heap
      tuples per iteration, since high correlation means those tuples are probably
      on the same or adjacent heap pages.
      281f4018
  12. 15 12月, 2006 1 次提交
  13. 13 12月, 2006 2 次提交
  14. 11 12月, 2006 1 次提交
    • T
      Add a paramtypmod field to Param nodes. This is dead weight for Params · 9fa12ddd
      Tom Lane 提交于
      representing externally-supplied values, since the APIs that carry such
      values only specify type not typmod.  However, for PARAM_SUBLINK Params
      it is handy to carry the typmod of the sublink's output column.  This
      is a much cleaner solution for the recently reported 'could not find
      pathkey item to sort' and 'failed to find unique expression in subplan
      tlist' bugs than my original 8.2-compatible patch.  Besides, someday we
      might want to support typmods for external parameters ...
      9fa12ddd
  15. 09 12月, 2006 1 次提交
    • T
      Remove the logId/logSeg fields from pg_control, because they are not needed · 0cb91ccb
      Tom Lane 提交于
      in normal operation, and we can avoid rewriting pg_control at every log
      segment switch if we don't insist that these values be valid.  Reducing
      the number of pg_control updates is a good idea for both performance and
      reliability.  It does make pg_resetxlog's life a bit harder, but that seems
      a good tradeoff; and anyway the change to pg_resetxlog amounts to automating
      something people formerly needed to do by hand, namely look at the existing
      pg_xlog files to make sure the new WAL start point was past them.
      
      In passing, change the wording of xlog.c's "database system was interrupted"
      messages: describe the pg_control timestamp as "last known up at" rather than
      implying it is the exact time of service interruption.  With this change the
      timestamp will generally be the time of the last checkpoint, which could be
      many minutes before the failure; and we've already seen indications that
      people tend to misinterpret the old wording.
      
      initdb forced due to change in pg_control layout.  Simon Riggs and Tom Lane
      0cb91ccb
  16. 08 12月, 2006 3 次提交
  17. 07 12月, 2006 3 次提交
    • T
      Fix planning of SubLinks to ensure that Vars generated from transformation of · b307d7a6
      Tom Lane 提交于
      a sublink's test expression have the correct vartypmod, rather than defaulting
      to -1.  There's at least one place where this is important because we're
      expecting these Vars to be exactly equal() to those appearing in the subplan
      itself.  This is a pretty klugy solution --- it would likely be cleaner to
      change Param nodes to include a typmod field --- but we can't do that in the
      already-released 8.2 branch.
      Per bug report from Hubert Fongarnand.
      b307d7a6
    • N
      Add a txn_start column to pg_stat_activity. This makes it easier to · 886a02d1
      Neil Conway 提交于
      identify long-running transactions. Since we already need to record
      the transaction-start time (e.g. for now()), we don't need any
      additional system calls to report this information.
      
      Catversion bumped, initdb required.
      886a02d1
    • N
      Various improvements to the GUC description strings. Punctuate and · dd740e1f
      Neil Conway 提交于
      capitalize the strings like sentences. Remove unnecessarily
      specific descriptions of the units used by GUC variables, since
      we now allow any reasonable unit to be specified.
      dd740e1f
  18. 05 12月, 2006 1 次提交
  19. 04 12月, 2006 2 次提交
  20. 02 12月, 2006 2 次提交
  21. 01 12月, 2006 2 次提交
    • T
      Minor adjustments to make failures in startup/shutdown behave more cleanly. · 5f60086e
      Tom Lane 提交于
      StartupXLOG and ShutdownXLOG no longer need to be critical sections, because
      in all contexts where they are invoked, elog(ERROR) would be translated to
      elog(FATAL) anyway.  (One change in bgwriter.c is needed to make this true:
      set ExitOnAnyError before trying to exit.  This is a good fix anyway since
      the existing code would have gone into an infinite loop on elog(ERROR) during
      shutdown.)  That avoids a misleading report of PANIC during semi-orderly
      failures.  Modify the postmaster to include the startup process in the set of
      processes that get SIGTERM when a fast shutdown is requested, and also fix it
      to not try to restart the bgwriter if the bgwriter fails while trying to write
      the shutdown checkpoint.  Net result is that "pg_ctl stop -m fast" does
      something reasonable for a system in warm standby mode, and so should Unix
      system shutdown (ie, universal SIGTERM).  Per gripe from Stephen Harris and
      some corner-case testing of my own.
      5f60086e
    • T
      Fix bug with page deletion. If inner page is removed and it tries to · ef148d6b
      Teodor Sigaev 提交于
      remove page on next level linked from next inner page, ginScanToDelete()
      wrongly sets parent page. Bug reveals when many item pointers from index
      was deleted ( several hundred thousands).
      
      Bug is discovered by hubert depesz lubaczewski <depesz@gmail.com>
      
      Suppose, we need rc2 before release...
      ef148d6b