Skip to content
Snippets Groups Projects
  1. Jun 07, 2012
  2. Jan 29, 2011
  3. Jan 08, 2011
    • Tom Lane's avatar
      Fix GIN to support null keys, empty and null items, and full index scans. · 73912e7f
      Tom Lane authored
      Per my recent proposal(s).  Null key datums can now be returned by
      extractValue and extractQuery functions, and will be stored in the index.
      Also, placeholder entries are made for indexable items that are NULL or
      contain no keys according to extractValue.  This means that the index is
      now always complete, having at least one entry for every indexed heap TID,
      and so we can get rid of the prohibition on full-index scans.  A full-index
      scan is implemented much the same way as partial-match scans were already:
      we build a bitmap representing all the TIDs found in the index, and then
      drive the results off that.
      
      Also, introduce a concept of a "search mode" that can be requested by
      extractQuery when the operator requires matching to empty items (this is
      just as cheap as matching to a single key) or requires a full index scan
      (which is not so cheap, but it sure beats failing or giving wrong answers).
      The behavior remains backward compatible for opclasses that don't return
      any null keys or request a non-default search mode.
      
      Using these features, we can now make the GIN index opclass for anyarray
      behave in a way that matches the actual anyarray operators for &&, <@, @>,
      and = ... which it failed to do before in assorted corner cases.
      
      This commit fixes the core GIN code and ginarrayprocs.c, updates the
      documentation, and adds some simple regression test cases for the new
      behaviors using the array operators.  The tsearch and contrib GIN opclass
      support functions still need to be looked over and probably fixed.
      
      Another thing I intend to fix separately is that this is pretty inefficient
      for cases where more than one scan condition needs a full-index search:
      we'll run duplicate GinScanEntrys, each one of which builds a large bitmap.
      There is some existing logic to merge duplicate GinScanEntrys but it needs
      refactoring to make it work for entries belonging to different scan keys.
      
      Note that most of gin.h has been split out into a new file gin_private.h,
      so that gin.h doesn't export anything that's not supposed to be used by GIN
      opclasses or the rest of the backend.  I did quite a bit of other code
      beautification work as well, mostly fixing comments and choosing more
      appropriate names for things.
      73912e7f
  4. Sep 20, 2010
  5. Aug 17, 2010
  6. Apr 03, 2010
    • Peter Eisentraut's avatar
      Remove unnecessary xref endterm attributes and title ids · 6dcce398
      Peter Eisentraut authored
      The endterm attribute is mainly useful when the toolchain does not support
      automatic link target text generation for a particular situation.  In  the
      past, this was required by the man page tools for all reference page links,
      but that is no longer the case, and it now actually gets in the way of
      proper automatic link text generation.  The only remaining use cases are
      currently xrefs to refsects.
      6dcce398
  7. Apr 09, 2009
  8. Mar 25, 2009
    • Tom Lane's avatar
      Adjust the APIs for GIN opclass support functions to allow the extractQuery() · 87b8db37
      Tom Lane authored
      method to pass extra data to the consistent() and comparePartial() methods.
      This is the core infrastructure needed to support the soon-to-appear
      contrib/btree_gin module.  The APIs are still upward compatible with the
      definitions used in 8.3 and before, although *not* with the previous 8.4devel
      function definitions.
      
      catversion bump for changes in pg_proc entries (although these are just
      cosmetic, since GIN doesn't actually look at the function signature before
      calling it...)
      
      Teodor Sigaev and Oleg Bartunov
      87b8db37
  9. Mar 24, 2009
    • Tom Lane's avatar
      Implement "fastupdate" support for GIN indexes, in which we try to accumulate · ff301d6e
      Tom Lane authored
      multiple index entries in a holding area before adding them to the main index
      structure.  This helps because bulk insert is (usually) significantly faster
      than retail insert for GIN.
      
      This patch also removes GIN support for amgettuple-style index scans.  The
      API defined for amgettuple is difficult to support with fastupdate, and
      the previously committed partial-match feature didn't really work with
      it either.  We might eventually figure a way to put back amgettuple
      support, but it won't happen for 8.4.
      
      catversion bumped because of change in GIN's pg_am entry, and because
      the format of GIN indexes changed on-disk (there's a metapage now,
      and possibly a pending list).
      
      Teodor Sigaev
      ff301d6e
  10. Jul 23, 2008
  11. May 16, 2008
  12. Apr 14, 2008
    • Tom Lane's avatar
      Push index operator lossiness determination down to GIST/GIN opclass · 9b5c8d45
      Tom Lane authored
      "consistent" functions, and remove pg_amop.opreqcheck, as per recent
      discussion.  The main immediate benefit of this is that we no longer need
      8.3's ugly hack of requiring @@@ rather than @@ to test weight-using tsquery
      searches on GIN indexes.  In future it should be possible to optimize some
      other queries better than is done now, by detecting at runtime whether the
      index match is exact or not.
      
      Tom Lane, after an idea of Heikki's, and with some help from Teodor.
      9b5c8d45
  13. Nov 16, 2007
  14. Nov 14, 2007
  15. Feb 16, 2007
  16. Feb 01, 2007
    • Bruce Momjian's avatar
      Wording cleanup for error messages. Also change can't -> cannot. · 8b4ff8b6
      Bruce Momjian authored
      Standard English uses "may", "can", and "might" in different ways:
      
              may - permission, "You may borrow my rake."
      
              can - ability, "I can lift that log."
      
              might - possibility, "It might rain today."
      
      Unfortunately, in conversational English, their use is often mixed, as
      in, "You may use this variable to do X", when in fact, "can" is a better
      choice.  Similarly, "It may crash" is better stated, "It might crash".
      8b4ff8b6
  17. Jan 31, 2007
    • Bruce Momjian's avatar
      Update documentation on may/can/might: · a134ee33
      Bruce Momjian authored
      Standard English uses "may", "can", and "might" in different ways:
      
              may - permission, "You may borrow my rake."
      
              can - ability, "I can lift that log."
      
              might - possibility, "It might rain today."
      
      Unfortunately, in conversational English, their use is often mixed, as
      in, "You may use this variable to do X", when in fact, "can" is a better
      choice.  Similarly, "It may crash" is better stated, "It might crash".
      
      Also update two error messages mentioned in the documenation to match.
      a134ee33
    • Teodor Sigaev's avatar
      Allow GIN's extractQuery method to signal that nothing can satisfy the query. · d4c6da15
      Teodor Sigaev authored
      In this case extractQuery should returns -1 as nentries. This changes
      prototype of extractQuery method to use int32* instead of uint32* for
      nentries argument.
      Based on that gincostestimate may see two corner cases: nothing will be found
      or seqscan should be used.
      
      Per proposal at http://archives.postgresql.org/pgsql-hackers/2007-01/msg01581.php
      
      PS tsearch_core patch should be sightly modified to support changes, but I'm
      waiting a verdict about reviewing of tsearch_core patch.
      d4c6da15
  18. Dec 02, 2006
  19. Nov 30, 2006
  20. Nov 23, 2006
  21. Sep 18, 2006
  22. Sep 14, 2006
  23. Sep 05, 2006
  24. Sep 04, 2006
Loading