1. 02 1月, 2010 1 次提交
    • T
      Support "x IS NOT NULL" clauses as indexscan conditions. This turns out · 29c4ad98
      Tom Lane 提交于
      to be just a minor extension of the previous patch that made "x IS NULL"
      indexable, because we can treat the IS NOT NULL condition as if it were
      "x < NULL" or "x > NULL" (depending on the index's NULLS FIRST/LAST option),
      just like IS NULL is treated like "x = NULL".  Aside from any possible
      usefulness in its own right, this is an important improvement for
      index-optimized MAX/MIN aggregates: it is now reliably possible to get
      a column's min or max value cheaply, even when there are a lot of nulls
      cluttering the interesting end of the index.
      29c4ad98
  2. 11 6月, 2009 1 次提交
  3. 02 1月, 2009 1 次提交
  4. 04 12月, 2008 1 次提交
  5. 20 10月, 2008 1 次提交
  6. 18 10月, 2008 1 次提交
    • T
      During repeated rescan of GiST index it's possible that scan key · beeb3562
      Teodor Sigaev 提交于
      is NULL but SK_SEARCHNULL is not set. Add checking IS NULL of keys
      to set during key initialization. If key is NULL and SK_SEARCHNULL is not
      set then nothnig can be satisfied.
      With assert-enabled compilation that causes coredump.
      
      Bug was introduced in 8.3 by support of IS NULL index scan.
      beeb3562
  7. 23 8月, 2008 1 次提交
  8. 19 6月, 2008 1 次提交
  9. 12 5月, 2008 1 次提交
    • A
      Restructure some header files a bit, in particular heapam.h, by removing some · f8c4d7db
      Alvaro Herrera 提交于
      unnecessary #include lines in it.  Also, move some tuple routine prototypes and
      macros to htup.h, which allows removal of heapam.h inclusion from some .c
      files.
      
      For this to work, a new header file access/sysattr.h needed to be created,
      initially containing attribute numbers of system columns, for pg_dump usage.
      
      While at it, make contrib ltree, intarray and hstore header files more
      consistent with our header style.
      f8c4d7db
  10. 02 1月, 2008 1 次提交
  11. 21 1月, 2007 1 次提交
  12. 06 1月, 2007 1 次提交
  13. 04 10月, 2006 1 次提交
  14. 14 7月, 2006 1 次提交
  15. 03 4月, 2006 1 次提交
  16. 05 3月, 2006 1 次提交
  17. 23 9月, 2005 2 次提交
  18. 27 6月, 2005 1 次提交
    • T
      Concurrency for GiST · e8cab5fe
      Teodor Sigaev 提交于
      - full concurrency for insert/update/select/vacuum:
              - select and vacuum never locks more than one page simultaneously
              - select (gettuple) hasn't any lock across it's calls
              - insert never locks more than two page simultaneously:
                      - during search of leaf to insert it locks only one page
                        simultaneously
                      - while walk upward to the root it locked only parent (may be
                        non-direct parent) and child. One of them X-lock, another may
                        be S- or X-lock
      - 'vacuum full' locks index
      - improve gistgetmulti
      - simplify XLOG records
      
      Fix bug in index_beginscan_internal: LockRelation may clean
        rd_aminfo structure, so move GET_REL_PROCEDURE after LockRelation
      e8cab5fe
  19. 17 5月, 2005 2 次提交
    • N
      Cleanup GiST header files. Since GiST extensions are often written as · c891e05f
      Neil Conway 提交于
      external projects, we should be careful about what parts of the GiST
      API are considered implementation details, and which are part of the
      public API. Therefore, I've moved internal-only declarations into
      gist_private.h -- future backward-incompatible changes to gist.h should
      be made with care, to avoid needlessly breaking external GiST extensions.
      
      Also did some related header cleanup: remove some unnecessary #includes
      from gist.h, and remove some unused definitions: isAttByVal(), _gistdump(),
      and GISTNStrategies.
      c891e05f
    • N
      GiST improvements: · eda6dd32
      Neil Conway 提交于
      - make sure we always invoke user-supplied GiST methods in a short-lived
        memory context. This means the backend isn't exposed to any memory leaks
        that be in those methods (in fact, it is probably a net loss for most
        GiST methods to bother manually freeing memory now). This also means
        we can do away with a lot of ugly manual memory management in the
        GiST code itself.
      
      - keep the current page of a GiST index scan pinned, rather than doing a
        ReadBuffer() for each tuple produced by the scan. Since ReadBuffer() is
        expensive, this is a perf. win
      
      - implement dead tuple killing for GiST indexes (which is easy to do, now
        that we keep a pin on the current scan page). Now all the builtin indexes
        implement dead tuple killing.
      
      - cleanup a lot of ugly code in GiST
      eda6dd32
  20. 01 1月, 2005 1 次提交
    • P
      · 2ff50159
      PostgreSQL Daemon 提交于
      Tag appropriate files for rc3
      
      Also performed an initial run through of upgrading our Copyright date to
      extend to 2005 ... first run here was very simple ... change everything
      where: grep 1996-2004 && the word 'Copyright' ... scanned through the
      generated list with 'less' first, and after, to make sure that I only
      picked up the right entries ...
      2ff50159
  21. 29 8月, 2004 2 次提交
  22. 17 7月, 2004 1 次提交
    • T
      Invent ResourceOwner mechanism as per my recent proposal, and use it to · fe548629
      Tom Lane 提交于
      keep track of portal-related resources separately from transaction-related
      resources.  This allows cursors to work in a somewhat sane fashion with
      nested transactions.  For now, cursor behavior is non-subtransactional,
      that is a cursor's state does not roll back if you abort a subtransaction
      that fetched from the cursor.  We might want to change that later.
      fe548629
  23. 01 7月, 2004 1 次提交
  24. 08 1月, 2004 1 次提交
  25. 30 11月, 2003 1 次提交
    • P
      · 969685ad
      PostgreSQL Daemon 提交于
      $Header: -> $PostgreSQL Changes ...
      969685ad
  26. 13 11月, 2003 1 次提交
    • T
      Cross-data-type comparisons are now indexable by btrees, pursuant to my · fa5c8a05
      Tom Lane 提交于
      pghackers proposal of 8-Nov.  All the existing cross-type comparison
      operators (int2/int4/int8 and float4/float8) have appropriate support.
      The original proposal of storing the right-hand-side datatype as part of
      the primary key for pg_amop and pg_amproc got modified a bit in the event;
      it is easier to store zero as the 'default' case and only store a nonzero
      when the operator is actually cross-type.  Along the way, remove the
      long-since-defunct bigbox_ops operator class.
      fa5c8a05
  27. 10 11月, 2003 1 次提交
    • T
      Add operator strategy and comparison-value datatype fields to ScanKey. · c1d62bfd
      Tom Lane 提交于
      Remove the 'strategy map' code, which was a large amount of mechanism
      that no longer had any use except reverse-mapping from procedure OID to
      strategy number.  Passing the strategy number to the index AM in the
      first place is simpler and faster.
      This is a preliminary step in planned support for cross-datatype index
      operations.  I'm committing it now since the ScanKeyEntryInitialize()
      API change touches quite a lot of files, and I want to commit those
      changes before the tree drifts under me.
      c1d62bfd
  28. 04 8月, 2003 2 次提交
  29. 28 7月, 2003 1 次提交
  30. 24 3月, 2003 1 次提交
  31. 21 6月, 2002 1 次提交
  32. 21 5月, 2002 1 次提交
    • T
      Restructure indexscan API (index_beginscan, index_getnext) per · 44fbe20d
      Tom Lane 提交于
      yesterday's proposal to pghackers.  Also remove unnecessary parameters
      to heap_beginscan, heap_rescan.  I modified pg_proc.h to reflect the
      new numbers of parameters for the AM interface routines, but did not
      force an initdb because nothing actually looks at those fields.
      44fbe20d
  33. 05 3月, 2002 1 次提交
    • B
      I was digging through the GiST code, and figured I'd fix up some of the · 276fc7ce
      Bruce Momjian 提交于
      "bad smell" in that code. Stuff like function parameters that aren't
      used, typos in the comments, comparison between signed and unsigned
      ints, etc.
      
      Attached is a pretty trivial patch; it compiles, but beyond that
      completely untested. Unless anyone sees any problems, please apply for
      7.3.
      
      Neil Conway
      276fc7ce
  34. 25 10月, 2001 1 次提交
  35. 23 8月, 2001 1 次提交
  36. 16 7月, 2001 1 次提交
    • T
      Restructure index AM interface for index building and index tuple deletion, · c8076f09
      Tom Lane 提交于
      per previous discussion on pghackers.  Most of the duplicate code in
      different AMs' ambuild routines has been moved out to a common routine
      in index.c; this means that all index types now do the right things about
      inserting recently-dead tuples, etc.  (I also removed support for EXTEND
      INDEX in the ambuild routines, since that's about to go away anyway, and
      it cluttered the code a lot.)  The retail indextuple deletion routines have
      been replaced by a "bulk delete" routine in which the indexscan is inside
      the access method.  I haven't pushed this change as far as it should go yet,
      but it should allow considerable simplification of the internal bookkeeping
      for deletions.  Also, add flag columns to pg_am to eliminate various
      hardcoded tests on AM OIDs, and remove unused pg_am columns.
      
      Fix rtree and gist index types to not attempt to store NULLs; before this,
      gist usually crashed, while rtree managed not to crash but computed wacko
      bounding boxes for NULL entries (which might have had something to do with
      the performance problems we've heard about occasionally).
      
      Add AtEOXact routines to hash, rtree, and gist, all of which have static
      state that needs to be reset after an error.  We discovered this need long
      ago for btree, but missed the other guys.
      
      Oh, one more thing: concurrent VACUUM is now the default.
      c8076f09