Re: pgsql: Provide hashing support for arrays. - Mailing list pgsql-committers

From Bruce Momjian
Subject Re: pgsql: Provide hashing support for arrays.
Date
Msg-id 201011242246.oAOMkNR02010@momjian.us
Whole thread Raw
In response to pgsql: Provide hashing support for arrays.  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-committers
I assume this completes this TODO item, so I have marked it as done:

    Incomplete itemAllow hashing to be used on arrays, if the element type
    is hashable

    http://archives.postgresql.org/message-id/11087.1244905821@sss.pgh.pa.us

---------------------------------------------------------------------------

Tom Lane wrote:
> Provide hashing support for arrays.
>
> The core of this patch is hash_array() and associated typcache
> infrastructure, which works just about exactly like the existing support
> for array comparison.
>
> In addition I did some work to ensure that the planner won't think that an
> array type is hashable unless its element type is hashable, and similarly
> for sorting.  This includes adding a datatype parameter to op_hashjoinable
> and op_mergejoinable, and adding an explicit "hashable" flag to
> SortGroupClause.  The lack of a cross-check on the element type was a
> pre-existing bug in mergejoin support --- but it didn't matter so much
> before, because if you couldn't sort the element type there wasn't any good
> alternative to failing anyhow.  Now that we have the alternative of hashing
> the array type, there are cases where we can avoid a failure by being picky
> at the planner stage, so it's time to be picky.
>
> The issue of exactly how to combine the per-element hash values to produce
> an array hash is still open for discussion, but the rest of this is pretty
> solid, so I'll commit it as-is.
>
> Branch
> ------
> master
>
> Details
> -------
> http://git.postgresql.org/gitweb?p=postgresql.git;a=commitdiff;h=186cbbda8f8dc5e42f68fc7892f206a76d56a20f
>
> Modified Files
> --------------
> src/backend/commands/analyze.c          |    3 +-
> src/backend/nodes/copyfuncs.c           |    1 +
> src/backend/nodes/equalfuncs.c          |    1 +
> src/backend/nodes/outfuncs.c            |    1 +
> src/backend/nodes/readfuncs.c           |    1 +
> src/backend/optimizer/path/equivclass.c |    4 +-
> src/backend/optimizer/plan/createplan.c |    1 +
> src/backend/optimizer/plan/initsplan.c  |    9 ++-
> src/backend/optimizer/plan/planagg.c    |    1 +
> src/backend/optimizer/plan/subselect.c  |   39 ++++++++---
> src/backend/optimizer/util/pathnode.c   |    7 ++-
> src/backend/optimizer/util/tlist.c      |    8 +--
> src/backend/parser/analyze.c            |    5 +-
> src/backend/parser/parse_clause.c       |   23 +++++--
> src/backend/parser/parse_oper.c         |   51 ++++++++-------
> src/backend/utils/adt/arrayfuncs.c      |  111 +++++++++++++++++++++++++++++++
> src/backend/utils/cache/lsyscache.c     |   75 +++++++++++++++++----
> src/backend/utils/cache/typcache.c      |   71 +++++++++++++++++---
> src/include/catalog/catversion.h        |    2 +-
> src/include/catalog/pg_amop.h           |    2 +
> src/include/catalog/pg_amproc.h         |    1 +
> src/include/catalog/pg_opclass.h        |    1 +
> src/include/catalog/pg_operator.h       |    2 +-
> src/include/catalog/pg_opfamily.h       |    1 +
> src/include/catalog/pg_proc.h           |    3 +
> src/include/nodes/parsenodes.h          |    8 ++
> src/include/parser/parse_oper.h         |    3 +-
> src/include/utils/array.h               |    1 +
> src/include/utils/lsyscache.h           |    4 +-
> src/include/utils/typcache.h            |   23 ++++---
> 30 files changed, 375 insertions(+), 88 deletions(-)
>
>
> --
> Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-committers

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +

pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: Re: pgsql: Remove useless whitespace at end of lines
Next
From: Magnus Hagander
Date:
Subject: Re: pgsql: Remove useless whitespace at end of lines