From d95639d0351cec72a26446588a7529aec4f94475 Mon Sep 17 00:00:00 2001 From: KaiGai Kohei Date: Thu, 27 Jul 2023 15:06:37 +0900 Subject: [PATCH] bugfix: wrong catalog definition at sum(float2/float4) reported at #615 This commit also fixes the problem to cast float2 -> float8 on GPU devices. --- src/float2.h | 2 +- src/gpu_preagg.c | 4 ++-- src/sql/pg_strom--5.0.sql | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/float2.h b/src/float2.h index 270e27cf3..3234a71e5 100644 --- a/src/float2.h +++ b/src/float2.h @@ -242,7 +242,7 @@ fp16_to_fp32(float2_t fp16val) } INLINE_FUNCTION(float8_t) -fp16_to_fp64(half_t fp16val) +fp16_to_fp64(float2_t fp16val) { #ifndef EMULATE_FLOAT2 return (float8_t)fp16val; diff --git a/src/gpu_preagg.c b/src/gpu_preagg.c index 9ce270468..e4dd8f2a9 100644 --- a/src/gpu_preagg.c +++ b/src/gpu_preagg.c @@ -214,12 +214,12 @@ static aggfunc_catalog_t aggfunc_catalog_array[] = { }, {"sum(float2)", "c:sum(float8)", - "s:psum(float4)", + "s:psum(float8)", KAGG_ACTION__PSUM_FP, false }, {"sum(float4)", "s:sum_f4(float8)", - "s:psum(float4)", + "s:psum(float8)", KAGG_ACTION__PSUM_FP, false }, {"sum(float8)", diff --git a/src/sql/pg_strom--5.0.sql b/src/sql/pg_strom--5.0.sql index 4fb18ee32..d5d367385 100644 --- a/src/sql/pg_strom--5.0.sql +++ b/src/sql/pg_strom--5.0.sql @@ -2898,9 +2898,9 @@ CREATE FUNCTION pgstrom.psum(int8) LANGUAGE C STRICT PARALLEL SAFE; CREATE FUNCTION pgstrom.psum(float4) - RETURNS float4 - AS 'MODULE_PATHNAME','pgstrom_partial_sum_asis' - LANGUAGE C STRICT PARALLEL SAFE; + RETURNS float8 + AS 'ftod' + LANGUAGE internal STRICT PARALLEL SAFE; CREATE FUNCTION pgstrom.psum(float8) RETURNS float8