1. 07 Aug, 2010 2 commits
    • Bruce Momjian's avatar
      Fix 9.0 release notes vacuum mention, not -> now · 83f5491c
      Bruce Momjian authored
      Peter Fokkinga
      83f5491c
    • Tom Lane's avatar
      Recognize functional dependency on primary keys. This allows a table's · e49ae8d3
      Tom Lane authored
      other columns to be referenced without listing them in GROUP BY, so long as
      the primary key column(s) are listed in GROUP BY.
      
      Eventually we should also allow functional dependency on a UNIQUE constraint
      when the columns are marked NOT NULL, but that has to wait until NOT NULL
      constraints are represented in pg_constraint, because we need to have
      pg_constraint OIDs for all the conditions needed to ensure functional
      dependency.
      
      Peter Eisentraut, reviewed by Alex Hunsaker and Tom Lane
      e49ae8d3
  2. 06 Aug, 2010 6 commits
  3. 05 Aug, 2010 6 commits
    • Tom Lane's avatar
      Add a very specific hint for the case that we're unable to locate a function · 1e4c050b
      Tom Lane authored
      matching a call like f(x, ORDER BY y,z).  It could be that what the user
      really wants is f(x,z ORDER BY y).  We now have pretty conclusive evidence
      that many people won't understand this problem without concrete guidance,
      so give it to them.  Per further discussion of the string_agg() problem.
      1e4c050b
    • Peter Eisentraut's avatar
    • Tom Lane's avatar
      Remove the single-argument form of string_agg(). It added nothing much in · b0c451e1
      Tom Lane authored
      functionality, while creating an ambiguity in usage with ORDER BY that at
      least two people have already gotten seriously confused by.  Also, add an
      opr_sanity test to check that we don't in future violate the newly minted
      policy of not having built-in aggregates with the same name and different
      numbers of parameters.  Per discussion of a complaint from Thom Brown.
      b0c451e1
    • Robert Haas's avatar
      Standardize get_whatever_oid functions for other object types. · fd1843ff
      Robert Haas authored
      - Rename TSParserGetPrsid to get_ts_parser_oid.
      - Rename TSDictionaryGetDictid to get_ts_dict_oid.
      - Rename TSTemplateGetTmplid to get_ts_template_oid.
      - Rename TSConfigGetCfgid to get_ts_config_oid.
      - Rename FindConversionByName to get_conversion_oid.
      - Rename GetConstraintName to get_constraint_oid.
      - Add new functions get_opclass_oid, get_opfamily_oid, get_rewrite_oid,
        get_rewrite_oid_without_relid, get_trigger_oid, and get_cast_oid.
      
      The name of each function matches the corresponding catalog.
      
      Thanks to KaiGai Kohei for the review.
      fd1843ff
    • Robert Haas's avatar
      Standardize get_whatever_oid functions for object types with · 2a6ef344
      Robert Haas authored
      unqualified names.
      
      - Add a missing_ok parameter to get_tablespace_oid.
      - Avoid duplicating get_tablespace_od guts in objectNamesToOids.
      - Add a missing_ok parameter to get_database_oid.
      - Replace get_roleid and get_role_checked with get_role_oid.
      - Add get_namespace_oid, get_language_oid, get_am_oid.
      - Refactor existing code to use new interfaces.
      
      Thanks to KaiGai Kohei for the review.
      2a6ef344
    • Peter Eisentraut's avatar
      Add xmlexists function · 641459f2
      Peter Eisentraut authored
      by Mike Fowler, reviewed by Peter Eisentraut
      641459f2
  4. 04 Aug, 2010 4 commits
  5. 03 Aug, 2010 12 commits
  6. 02 Aug, 2010 6 commits
  7. 01 Aug, 2010 4 commits
    • Tom Lane's avatar
      Fix ANALYZE's ancient deficiency of not trying to collect stats for expression · 67becf8d
      Tom Lane authored
      indexes when the index column type (the opclass opckeytype) is different from
      the expression's datatype.  When coded, this limitation wasn't worth worrying
      about because we had no intelligence to speak of in stats collection for the
      datatypes used by such opclasses.  However, now that there's non-toy
      estimation capability for tsvector queries, it amounts to a bug that ANALYZE
      fails to do this.
      
      The fix changes struct VacAttrStats, and therefore constitutes an API break
      for custom typanalyze functions.  Therefore we can't back-patch it into
      released branches, but it was agreed that 9.0 isn't yet frozen hard enough
      to make such a change unacceptable.  Ergo, back-patch to 9.0 but no further.
      The API break had better be mentioned in 9.0 release notes.
      67becf8d
    • Tom Lane's avatar
      Add some knowledge about prefix matches to tsmatchsel(). It's not terribly · 97532f7c
      Tom Lane authored
      bright, but it beats assuming that a prefix match behaves identically to an
      exact match, which is what the code was doing before :-(.  Noted while
      experimenting with Artur Dobrowski's example.
      97532f7c
    • Tom Lane's avatar
      Fix an additional set of problems in GIN's handling of lossy page pointers. · d4fe61b0
      Tom Lane authored
      Although the key-combining code claimed to work correctly if its input
      contained both lossy and exact pointers for a single page in a single TID
      stream, in fact this did not work, and could not work without pretty
      fundamental redesign.  Modify keyGetItem so that it will not return such a
      stream, by handling lossy-pointer cases a bit more explicitly than we did
      before.
      
      Per followup investigation of a gripe from Artur Dabrowski.
      An example of a query that failed given his data set is
      select count(*) from search_tab where
      (to_tsvector('german', keywords ) @@ to_tsquery('german', 'ee:* | dd:*')) and
      (to_tsvector('german', keywords ) @@ to_tsquery('german', 'aa:*'));
      
      Back-patch to 8.4 where the lossy pointer code was introduced.
      d4fe61b0
    • Tom Lane's avatar
      Rewrite the rbtree routines so that an RBNode is the first field of the · 0454f131
      Tom Lane authored
      struct representing a tree entry, rather than being a separately allocated
      piece of storage.  This API is at least as clean as the old one (if not
      more so --- there were some bizarre choices in there) and it permits a
      very substantial memory savings, on the order of 2X in ginbulk.c's usage.
      
      Also, fix minor memory leaks in code called by ginEntryInsert, in
      particular in ginInsertValue and entryFillRoot, as well as ginEntryInsert
      itself.  These leaks resulted in the GIN index build context continuing
      to bloat even after we'd filled it to maintenance_work_mem and started
      to dump data out to the index.
      
      In combination these fixes restore the GIN index build code to honoring
      the maintenance_work_mem limit about as well as it did in 8.4.  Speed
      seems on par with 8.4 too, maybe even a bit faster, for a non-pathological
      case in which HEAD was formerly slower.
      
      Back-patch to 9.0 so we don't have a performance regression from 8.4.
      0454f131