Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

parse_oper.c

Blame
    • Tom Lane's avatar
      186cbbda
      Provide hashing support for arrays. · 186cbbda
      Tom Lane authored
      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.
      186cbbda
      History
      Provide hashing support for arrays.
      Tom Lane authored
      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.
    parse_oper.c 31.46 KiB