1. 22 7月, 2003 1 次提交
  2. 20 7月, 2003 1 次提交
  3. 18 7月, 2003 1 次提交
    • T
      Repair boundary-case bug introduced by patch of two months ago that · 8cf63ba9
      Tom Lane 提交于
      fixed incorrect initial setting of StartUpID.  The logic in XLogWrite()
      expects that Write->curridx is advanced to the next page as soon as
      LogwrtResult points to the end of the current page, but StartupXLOG()
      failed to make that happen when the old WAL ended exactly on a page
      boundary.  Per trouble report from Hannu Krosing.
      8cf63ba9
  4. 27 6月, 2003 1 次提交
  5. 23 6月, 2003 1 次提交
    • T
      Revise hash join and hash aggregation code to use the same datatype- · bff0422b
      Tom Lane 提交于
      specific hash functions used by hash indexes, rather than the old
      not-datatype-aware ComputeHashFunc routine.  This makes it safe to do
      hash joining on several datatypes that previously couldn't use hashing.
      The sets of datatypes that are hash indexable and hash joinable are now
      exactly the same, whereas before each had some that weren't in the other.
      bff0422b
  6. 16 6月, 2003 1 次提交
  7. 12 6月, 2003 1 次提交
    • B
      This patch extracts page buffer pooling and the simple · 0abe7431
      Bruce Momjian 提交于
      least-recently-used strategy from clog.c into slru.c.  It doesn't
      change any visible behaviour and passes all regression tests plus a
      TruncateCLOG test done manually.
      
      Apart from refactoring I made a little change to SlruRecentlyUsed,
      formerly ClogRecentlyUsed:  It now skips incrementing lru_counts, if
      slotno is already the LRU slot, thus saving a few CPU cycles.  To make
      this work, lru_counts are initialised to 1 in SimpleLruInit.
      
      SimpleLru will be used by pg_subtrans (part of the nested transactions
      project), so the main purpose of this patch is to avoid future code
      duplication.
      
      Manfred Koizar
      0abe7431
  8. 28 5月, 2003 1 次提交
  9. 27 5月, 2003 1 次提交
    • T
      Make sure printtup() always sends the number of columns previously · 8c43300c
      Tom Lane 提交于
      advertised in RowDescription message.  Depending on the physical tuple's
      column count is not really correct, since according to heap_getattr()
      conventions the tuple may be short some columns, which will automatically
      get read as nulls.  Problem has been latent since forever, but was only
      exposed by recent change to skip a projection step in SELECT * FROM...
      8c43300c
  10. 22 5月, 2003 1 次提交
    • T
      Repair sometimes-incorrect computation of StartUpID after a crash, per · 39e98d95
      Tom Lane 提交于
      example from Rao Kumar.  This is a very corner corner-case, requiring
      a minimum of three closely-spaced database crashes and an unlucky
      positioning of the second recovery's checkpoint record before you'd notice
      any problem.  But the consequences are dire enough that it's a must-fix.
      39e98d95
  11. 15 5月, 2003 1 次提交
  12. 14 5月, 2003 2 次提交
  13. 13 5月, 2003 1 次提交
  14. 11 5月, 2003 1 次提交
  15. 10 5月, 2003 1 次提交
  16. 09 5月, 2003 1 次提交
    • T
      Update 3.0 protocol support to match recent agreements about how to · c0a8c3ac
      Tom Lane 提交于
      handle multiple 'formats' for data I/O.  Restructure CommandDest and
      DestReceiver stuff one more time (it's finally starting to look a bit
      clean though).  Code now matches latest 3.0 protocol document as far
      as message formats go --- but there is no support for binary I/O yet.
      c0a8c3ac
  17. 07 5月, 2003 1 次提交
    • T
      Restructure command destination handling so that we pass around · 79913910
      Tom Lane 提交于
      DestReceiver pointers instead of just CommandDest values.  The DestReceiver
      is made at the point where the destination is selected, rather than
      deep inside the executor.  This cleans up the original kluge implementation
      of tstoreReceiver.c, and makes it easy to support retrieving results
      from utility statements inside portals.  Thus, you can now do fun things
      like Bind and Execute a FETCH or EXPLAIN command, and it'll all work
      as expected (e.g., you can Describe the portal, or use Execute's count
      parameter to suspend the output partway through).  Implementation involves
      stuffing the utility command's output into a Tuplestore, which would be
      kind of annoying for huge output sets, but should be quite acceptable
      for typical uses of utility commands.
      79913910
  18. 06 5月, 2003 1 次提交
    • T
      Implement feature of new FE/BE protocol whereby RowDescription identifies · 2cf57c8f
      Tom Lane 提交于
      the column by table OID and column number, if it's a simple column
      reference.  Along the way, get rid of reskey/reskeyop fields in Resdoms.
      Turns out that representation was not convenient for either the planner
      or the executor; we can make the planner deliver exactly what the
      executor wants with no more effort.
      initdb forced due to change in stored rule representation.
      2cf57c8f
  19. 05 5月, 2003 1 次提交
  20. 03 5月, 2003 4 次提交
  21. 27 4月, 2003 1 次提交
  22. 26 4月, 2003 1 次提交
    • T
      In the continuing saga of FE/BE protocol revisions, add reporting of · 9cbaf721
      Tom Lane 提交于
      initial values and runtime changes in selected parameters.  This gets
      rid of the need for an initial 'select pg_client_encoding()' query in
      libpq, bringing us back to one message transmitted in each direction
      for a standard connection startup.  To allow server version to be sent
      using the same GUC mechanism that handles other parameters, invent the
      concept of a never-settable GUC parameter: you can 'show server_version'
      but it's not settable by any GUC input source.  Create 'lc_collate' and
      'lc_ctype' never-settable parameters so that people can find out these
      settings without need for pg_controldata.  (These side ideas were all
      discussed some time ago in pgsql-hackers, but not yet implemented.)
      9cbaf721
  23. 22 4月, 2003 1 次提交
    • T
      Another round of protocol changes. Backend-to-frontend messages now all · 5ed27e35
      Tom Lane 提交于
      have length words.  COPY OUT reimplemented per new protocol: it doesn't
      need \. anymore, thank goodness.  COPY BINARY to/from frontend works,
      at least as far as the backend is concerned --- libpq's PQgetline API
      is not up to snuff, and will have to be replaced with something that is
      null-safe.  libpq uses message length words for performance improvement
      (no cycles wasted rescanning long messages), but not yet for error
      recovery.
      5ed27e35
  24. 18 4月, 2003 1 次提交
  25. 15 4月, 2003 1 次提交
  26. 28 3月, 2003 1 次提交
    • B
      This patch implements holdable cursors, following the proposal · 54f7338f
      Bruce Momjian 提交于
      (materialization into a tuple store) discussed on pgsql-hackers earlier.
      I've updated the documentation and the regression tests.
      
      Notes on the implementation:
      
      - I needed to change the tuple store API slightly -- it assumes that it
      won't be used to hold data across transaction boundaries, so the temp
      files that it uses for on-disk storage are automatically reclaimed at
      end-of-transaction. I added a flag to tuplestore_begin_heap() to control
      this behavior. Is changing the tuple store API in this fashion OK?
      
      - in order to store executor results in a tuple store, I added a new
      CommandDest. This works well for the most part, with one exception: the
      current DestFunction API doesn't provide enough information to allow the
      Executor to store results into an arbitrary tuple store (where the
      particular tuple store to use is chosen by the call site of
      ExecutorRun). To workaround this, I've temporarily hacked up a solution
      that works, but is not ideal: since the receiveTuple DestFunction is
      passed the portal name, we can use that to lookup the Portal data
      structure for the cursor and then use that to get at the tuple store the
      Portal is using. This unnecessarily ties the Portal code with the
      tupleReceiver code, but it works...
      
      The proper fix for this is probably to change the DestFunction API --
      Tom suggested passing the full QueryDesc to the receiveTuple function.
      In that case, callers of ExecutorRun could "subclass" QueryDesc to add
      any additional fields that their particular CommandDest needed to get
      access to. This approach would work, but I'd like to think about it for
      a little bit longer before deciding which route to go. In the mean time,
      the code works fine, so I don't think a fix is urgent.
      
      - (semi-related) I added a NO SCROLL keyword to DECLARE CURSOR, and
      adjusted the behavior of SCROLL in accordance with the discussion on
      -hackers.
      
      - (unrelated) Cleaned up some SGML markup in sql.sgml, copy.sgml
      
      Neil Conway
      54f7338f
  27. 25 3月, 2003 1 次提交
  28. 24 3月, 2003 1 次提交
  29. 21 3月, 2003 1 次提交
  30. 15 3月, 2003 1 次提交
  31. 11 3月, 2003 1 次提交
  32. 05 3月, 2003 1 次提交
    • T
      Reimplement free-space-map management as per recent discussions. · 391eb5e5
      Tom Lane 提交于
      Adjustable threshold is gone in favor of keeping track of total requested
      page storage and doling out proportional fractions to each relation
      (with a minimum amount per relation, and some quantization of the results
      to avoid thrashing with small changes in page counts).  Provide special-
      case code for indexes so as not to waste space storing useless page
      free space counts.  Restructure internal data storage to be a flat array
      instead of list-of-chunks; this may cost a little more work in data
      copying when reorganizing, but allows binary search to be used during
      lookup_fsm_page_entry().
      391eb5e5
  33. 24 2月, 2003 4 次提交