Skip to content
Snippets Groups Projects
  1. Feb 16, 2011
    • Tom Lane's avatar
      Add backwards-compatible declarations of some core GIN support functions. · 6595dd04
      Tom Lane authored
      These are needed to support reloading dumps of 9.0 installations containing
      contrib/intarray or contrib/tsearch2.  Since not only regular dump/reload
      but binary upgrade would fail, it seems worth the trouble to carry these
      stubs for awhile.  Note that the contrib opclasses referencing these
      functions will still work fine, since GIN doesn't actually pay any
      attention to the declared signature of a support function.
      6595dd04
  2. Feb 14, 2011
    • Tom Lane's avatar
      Avoid use of CREATE OR REPLACE FUNCTION in extension installation files. · 029fac22
      Tom Lane authored
      It was never terribly consistent to use OR REPLACE (because of the lack of
      comparable functionality for data types, operators, etc), and
      experimentation shows that it's now positively pernicious in the extension
      world.  We really want a failure to occur if there are any conflicts, else
      it's unclear what the extension-ownership state of the conflicted object
      ought to be.  Most of the time, CREATE EXTENSION will fail anyway because
      of conflicts on other object types, but an extension defining only
      functions can succeed, with bad results.
      029fac22
    • Tom Lane's avatar
      Convert contrib modules to use the extension facility. · 629b3af2
      Tom Lane authored
      This isn't fully tested as yet, in particular I'm not sure that the
      "foo--unpackaged--1.0.sql" scripts are OK.  But it's time to get some
      buildfarm cycles on it.
      
      sepgsql is not converted to an extension, mainly because it seems to
      require a very nonstandard installation process.
      
      Dimitri Fontaine and Tom Lane
      629b3af2
  3. Jan 27, 2011
    • Tom Lane's avatar
      Prevent buffer overrun while parsing an integer in a "query_int" value. · 7ccb6dc2
      Tom Lane authored
      contrib/intarray's gettoken() uses a fixed-size buffer to collect an
      integer's digits, and did not guard against overrunning the buffer.
      This is at least a backend crash risk, and in principle might allow
      arbitrary code execution.  The code didn't check for overflow of the
      integer value either, which while not presenting a crash risk was still
      bad.
      
      Thanks to Apple Inc's security team for reporting this issue and supplying
      the fix.
      
      Security: CVE-2010-4015
      7ccb6dc2
  4. Jan 09, 2011
    • Tom Lane's avatar
      Fix assorted corner-case bugs in contrib/intarray. · fdf2dbda
      Tom Lane authored
      The array containment operators now behave per mathematical expectation
      for empty arrays (ie, an empty array is contained in anything).
      Both these operators and the query_int operators now work as expected in
      GiST and GIN index searches, rather than having corner cases where the
      index searches gave different answers.
      
      Also, fix unexpected failures where the operators would claim that an array
      contained nulls, when in fact there was no longer any null present (similar
      to bug #5784).  The restriction to not have nulls is still there, as
      removing it would take a lot of added code complexity and probably slow
      things down significantly.
      
      Also, remove the arbitrary restriction to 1-D arrays; unlike the other
      restriction, this was buying us nothing performance-wise.
      
      Assorted cosmetic improvements and marginal performance improvements, too.
      fdf2dbda
  5. Jan 08, 2011
  6. Dec 19, 2010
    • Tom Lane's avatar
      Fix erroneous parsing of tsquery input "... & !(subexpression) | ..." · abc10262
      Tom Lane authored
      After parsing a parenthesized subexpression, we must pop all pending
      ANDs and NOTs off the stack, just like the case for a simple operand.
      Per bug #5793.
      
      Also fix clones of this routine in contrib/intarray and contrib/ltree,
      where input of types query_int and ltxtquery had the same problem.
      
      Back-patch to all supported versions.
      abc10262
  7. Nov 23, 2010
  8. Sep 22, 2010
  9. Sep 20, 2010
  10. Aug 19, 2010
  11. Mar 25, 2010
    • Tom Lane's avatar
      Fix ginint4_queryextract() to actually do what it was intended to do for an · 5ceb13c8
      Tom Lane authored
      unsatisfiable query, such as indexcol && empty_array.  It should return -1
      to tell GIN no scan is required; but silly typo disabled the logic for that,
      resulting in unnecessary "GIN indexes do not support whole-index scans" error.
      Per bug report from Jeff Trout.
      
      Back-patch to 8.3 where the logic was introduced.
      5ceb13c8
  12. Jun 11, 2009
  13. Jun 07, 2009
    • Tom Lane's avatar
      Revert my patch of 2009-04-04 that removed contrib/intarray's definitions of · 156475a5
      Tom Lane authored
      the <@ and @> operators.  These are not in fact equivalent to the built-in
      anyarray operators of the same names, because they have different behavior for
      empty arrays, namely they don't think empty arrays are contained in anything.
      That is mathematically wrong, no doubt, but until we can persuade GIN indexes
      to implement the mathematical definition we should probably not change this.
      Another reason for not changing it now is that we can't yet ensure the
      opclasses will be updated correctly in a dump-and-reload upgrade.  Per
      recent discussions.
      156475a5
  14. Apr 05, 2009
    • Tom Lane's avatar
      Remove contrib/intarray's definitions of the <@ and @> operators, so that they · 65e758a4
      Tom Lane authored
      don't cause confusion with the built-in anyarray versions of those operators.
      Adjust the module's index opclasses to support the built-in operators in place
      of the private ones.
      
      The private implementations are still available under their historical
      names @ and ~, so no functionality is lost.  Some quick testing suggests
      that they offer no real benefit over the core operators, however.
      
      Per a complaint from Rusty Conover.
      65e758a4
  15. 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
  16. May 17, 2008
    • Andrew Dunstan's avatar
      Add $PostgreSQL$ markers to a lot of files that were missing them. · 53972b46
      Andrew Dunstan authored
      This particular batch was just for *.c and *.h file.
      
      The changes were made with the following 2 commands:
      
      find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \) -prune \) -o  \( -name '*.[ch]'  \) \( -exec grep -q '\$PostgreSQL' {} \; -o -print \) | while read file ; do head -n 1 < $file | grep -q '^/\*' && echo $file; done | xargs -l sed -i -e '1s/^\// /' -e '1i/*\n * $PostgreSQL:$ \n *'
      
      find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \) -prune \) -o  \( -name '*.[ch]'  \) \( -exec grep -q '\$PostgreSQL' {} \; -o -print \) | xargs -l sed -i -e '1i/*\n * $PostgreSQL:$ \n */'
      53972b46
  17. 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
  18. 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
  19. Mar 25, 2008
    • Tom Lane's avatar
      Simplify and standardize conversions between TEXT datums and ordinary C · 220db7cc
      Tom Lane authored
      strings.  This patch introduces four support functions cstring_to_text,
      cstring_to_text_with_len, text_to_cstring, and text_to_cstring_buffer, and
      two macros CStringGetTextDatum and TextDatumGetCString.  A number of
      existing macros that provided variants on these themes were removed.
      
      Most of the places that need to make such conversions now require just one
      function or macro call, in place of the multiple notational layers that used
      to be needed.  There are no longer any direct calls of textout or textin,
      and we got most of the places that were using handmade conversions via
      memcpy (there may be a few still lurking, though).
      
      This commit doesn't make any serious effort to eliminate transient memory
      leaks caused by detoasting toasted text objects before they reach
      text_to_cstring.  We changed PG_GETARG_TEXT_P to PG_GETARG_TEXT_PP in a few
      places where it was easy, but much more could be done.
      
      Brendan Jurd and Tom Lane
      220db7cc
  20. Nov 16, 2007
  21. Nov 15, 2007
  22. Nov 13, 2007
  23. Nov 11, 2007
  24. Sep 30, 2007
  25. Sep 14, 2007
  26. Jun 27, 2007
  27. Apr 06, 2007
    • Tom Lane's avatar
      Support varlena fields with single-byte headers and unaligned storage. · 3e23b68d
      Tom Lane authored
      This commit breaks any code that assumes that the mere act of forming a tuple
      (without writing it to disk) does not "toast" any fields.  While all available
      regression tests pass, I'm not totally sure that we've fixed every nook and
      cranny, especially in contrib.
      
      Greg Stark with some help from Tom Lane
      3e23b68d
  28. Feb 28, 2007
    • Tom Lane's avatar
      Fix up several contrib modules that were using varlena datatypes in not-so-obvious · 9f652d43
      Tom Lane authored
      ways.  I'm not totally sure that I caught everything, but at least now they pass
      their regression tests with VARSIZE/SET_VARSIZE defined to reverse byte order.
      9f652d43
    • Tom Lane's avatar
      Replace direct assignments to VARATT_SIZEP(x) with SET_VARSIZE(x, len). · 234a02b2
      Tom Lane authored
      Get rid of VARATT_SIZE and VARATT_DATA, which were simply redundant with
      VARSIZE and VARDATA, and as a consequence almost no code was using the
      longer names.  Rename the length fields of struct varlena and various
      derived structures to catch anyplace that was accessing them directly;
      and clean up various places so caught.  In itself this patch doesn't
      change any behavior at all, but it is necessary infrastructure if we hope
      to play any games with the representation of varlena headers.
      Greg Stark and Tom Lane
      234a02b2
  29. Feb 07, 2007
  30. Jan 31, 2007
  31. Jan 26, 2007
    • Neil Conway's avatar
      Squelch some VC++ compiler warnings. Mark float literals with the "f" · 8ff2bcce
      Neil Conway authored
      suffix, to distinguish them from doubles. Make some function declarations
      and definitions use the "const" qualifier for arguments consistently.
      Ignore warning 4102 ("unreferenced label"), because such warnings
      are always emitted by bison-generated code. Patch from Magnus Hagander.
      8ff2bcce
  32. Dec 23, 2006
    • Tom Lane's avatar
      Restructure operator classes to allow improved handling of cross-data-type · a78fcfb5
      Tom Lane authored
      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
Loading