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

numeric.c

Blame
    • Tom Lane's avatar
      69c8fbac
      Improve performance of numeric sum(), avg(), stddev(), variance(), etc. · 69c8fbac
      Tom Lane authored
      This patch improves performance of most built-in aggregates that formerly
      used a NUMERIC or NUMERIC array as their transition type; this includes
      not only aggregates on numeric inputs, but some aggregates on integer
      inputs where overflow of an int8 value is a possibility.  The code now
      uses a special-purpose data structure to avoid array construction and
      deconstruction overhead, as well as packing and unpacking overhead for
      numeric values.
      
      These aggregates' transition type is now declared as INTERNAL, since
      it doesn't correspond to any SQL data type.  To keep the planner from
      thinking that that means a lot of storage will be used, we make use
      of the just-added pg_aggregate.aggtransspace feature.  The space estimate
      is set to 128 bytes, which is at least in the right ballpark.
      
      Hadi Moshayedi, reviewed by Pavel Stehule and Tomas Vondra
      69c8fbac
      History
      Improve performance of numeric sum(), avg(), stddev(), variance(), etc.
      Tom Lane authored
      This patch improves performance of most built-in aggregates that formerly
      used a NUMERIC or NUMERIC array as their transition type; this includes
      not only aggregates on numeric inputs, but some aggregates on integer
      inputs where overflow of an int8 value is a possibility.  The code now
      uses a special-purpose data structure to avoid array construction and
      deconstruction overhead, as well as packing and unpacking overhead for
      numeric values.
      
      These aggregates' transition type is now declared as INTERNAL, since
      it doesn't correspond to any SQL data type.  To keep the planner from
      thinking that that means a lot of storage will be used, we make use
      of the just-added pg_aggregate.aggtransspace feature.  The space estimate
      is set to 128 bytes, which is at least in the right ballpark.
      
      Hadi Moshayedi, reviewed by Pavel Stehule and Tomas Vondra