Skip to content
Snippets Groups Projects
  1. Mar 26, 2015
    • Heikki Linnakangas's avatar
      Fix GiST index-only scans for opclasses with different storage type. · 55b59eda
      Heikki Linnakangas authored
      We cannot use the index's tuple descriptor directly to describe the index
      tuples returned in an index-only scan. That's because the index might use
      a different datatype for the values stored on disk than the type originally
      indexed. As long as they were both pass-by-ref, it worked, but will not work
      for pass-by-value types of different sizes. I noticed this as a crash when I
      started hacking a patch to add fetch methods to btree_gist.
      55b59eda
    • Heikki Linnakangas's avatar
      Add support for index-only scans in GiST. · d04c8ed9
      Heikki Linnakangas authored
      This adds a new GiST opclass method, 'fetch', which is used to reconstruct
      the original Datum from the value stored in the index. Also, the 'canreturn'
      index AM interface function gains a new 'attno' argument. That makes it
      possible to use index-only scans on a multi-column index where some of the
      opclasses support index-only scans but some do not.
      
      This patch adds support in the box and point opclasses. Other opclasses
      can added later as follow-on patches (btree_gist would be particularly
      interesting).
      
      Anastasia Lubennikova, with additional fixes and modifications by me.
      d04c8ed9
  2. Feb 17, 2015
  3. Jan 06, 2015
  4. Dec 22, 2014
  5. May 06, 2014
    • Bruce Momjian's avatar
      pgindent run for 9.4 · 0a783200
      Bruce Momjian authored
      This includes removing tabs after periods in C comments, which was
      applied to back branches, so this change should not effect backpatching.
      0a783200
  6. Jan 07, 2014
  7. May 10, 2013
    • Tom Lane's avatar
      Fix management of fn_extra caching during repeated GiST index scans. · 91715e82
      Tom Lane authored
      Commit d22a09dc introduced official support
      for GiST consistentFns that want to cache data using the FmgrInfo fn_extra
      pointer: the idea was to preserve the cached values across gistrescan(),
      whereas formerly they'd been leaked.  However, there was an oversight in
      that, namely that multiple scan keys might reference the same column's
      consistentFn; the code would result in propagating the same cache value
      into multiple scan keys, resulting in crashes or wrong answers.  Use a
      separate array instead to ensure that each scan key keeps its own state.
      
      Per bug #8143 from Joel Roller.  Back-patch to 9.2 where the bug was
      introduced.
      91715e82
  8. Jan 01, 2013
  9. Jun 10, 2012
  10. Jan 02, 2012
  11. Oct 01, 2011
    • Tom Lane's avatar
      Support GiST index support functions that want to cache data across calls. · d22a09dc
      Tom Lane authored
      pg_trgm was already doing this unofficially, but the implementation hadn't
      been thought through very well and leaked memory.  Restructure the core
      GiST code so that it actually works, and document it.  Ordinarily this
      would have required an extra memory context creation/destruction for each
      GiST index search, but I was able to avoid that in the normal case of a
      non-rescanned search by finessing the handling of the RBTree.  It used to
      have its own context always, but now shares a context with the
      scan-lifespan data structures, unless there is more than one rescan call.
      This should make the added overhead unnoticeable in typical cases.
      d22a09dc
  12. Sep 16, 2011
    • Tom Lane's avatar
      gistendscan() forgot to free so->giststate. · 0a6cc285
      Tom Lane authored
      This oversight led to a massive memory leak --- upwards of 10KB per tuple
      --- during creation-time verification of an exclusion constraint based on a
      GIST index.  In most other scenarios it'd just be a leak of 10KB that would
      be recovered at end of query, so not too significant; though perhaps the
      leak would be noticeable in a situation where a GIST index was being used
      in a nestloop inner indexscan.  In any case, it's a real leak of long
      standing, so patch all supported branches.  Per report from Harald Fuchs.
      0a6cc285
  13. Sep 01, 2011
  14. Apr 13, 2011
    • Tom Lane's avatar
      Pass collations to functions in FunctionCallInfoData, not FmgrInfo. · d64713df
      Tom Lane authored
      Since collation is effectively an argument, not a property of the function,
      FmgrInfo is really the wrong place for it; and this becomes critical in
      cases where a cached FmgrInfo is used for varying purposes that might need
      different collation settings.  Fix by passing it in FunctionCallInfoData
      instead.  In particular this allows a clean fix for bug #5970 (record_cmp
      not working).  This requires touching a bit more code than the original
      method, but nobody ever thought that collations would not be an invasive
      patch...
      d64713df
  15. Apr 10, 2011
  16. Mar 26, 2011
  17. Jan 01, 2011
  18. Dec 04, 2010
    • Tom Lane's avatar
      KNNGIST, otherwise known as order-by-operator support for GIST. · 55450687
      Tom Lane authored
      This commit represents a rather heavily editorialized version of
      Teodor's builtin_knngist_itself-0.8.2 and builtin_knngist_proc-0.8.1
      patches.  I redid the opclass API to add a separate Distance method
      instead of turning the Consistent method into an illogical mess,
      fixed some bit-rot in the rbtree interfaces, and generally worked over
      the code style and comments.
      
      There's still no non-code documentation to speak of, but I'll work on
      that separately.  Some contrib-module changes are also yet to come
      (right now, point <-> point is the only KNN-ified operator).
      
      Teodor Sigaev and Tom Lane
      55450687
  19. Dec 03, 2010
    • Tom Lane's avatar
      Create core infrastructure for KNNGIST. · d583f10b
      Tom Lane authored
      This is a heavily revised version of builtin_knngist_core-0.9.  The
      ordering operators are no longer mixed in with actual quals, which would
      have confused not only humans but significant parts of the planner.
      Instead, ordering operators are carried separately throughout planning and
      execution.
      
      Since the API for ambeginscan and amrescan functions had to be changed
      anyway, this commit takes the opportunity to rationalize that a bit.
      RelationGetIndexScan no longer forces a premature index_rescan call;
      instead, callers of index_beginscan must call index_rescan too.  Aside from
      making the AM-side initialization logic a bit less peculiar, this has the
      advantage that we do not make a useless extra am_rescan call when there are
      runtime key values.  AMs formerly could not assume that the key values
      passed to amrescan were actually valid; now they can.
      
      Teodor Sigaev and Tom Lane
      d583f10b
  20. Sep 20, 2010
  21. Feb 26, 2010
  22. Jan 02, 2010
  23. Jan 01, 2010
    • Tom Lane's avatar
      Support "x IS NOT NULL" clauses as indexscan conditions. This turns out · 29c4ad98
      Tom Lane authored
      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
  24. Jun 11, 2009
  25. Jan 01, 2009
  26. Dec 04, 2008
  27. Oct 20, 2008
  28. Oct 17, 2008
    • Teodor Sigaev's avatar
      During repeated rescan of GiST index it's possible that scan key · beeb3562
      Teodor Sigaev authored
      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
  29. Aug 23, 2008
  30. Jun 19, 2008
  31. May 12, 2008
    • Alvaro Herrera's avatar
      Restructure some header files a bit, in particular heapam.h, by removing some · f8c4d7db
      Alvaro Herrera authored
      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
  32. Jan 01, 2008
  33. Jan 20, 2007
  34. Jan 05, 2007
  35. Oct 04, 2006
  36. Jul 14, 2006
  37. Apr 03, 2006
  38. Mar 05, 2006
  39. Sep 22, 2005
Loading