From da3cc95077609f476cb9d768f28b9fd1f591da60 Mon Sep 17 00:00:00 2001 From: Aleksei Antipovskii Date: Tue, 2 Sep 2025 02:40:52 +0200 Subject: [PATCH] Prefer to use floating point instead of decimal to match server behaviour. --- utils/dataconvert/dataconvert.cpp | 33 ++++++------------------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/utils/dataconvert/dataconvert.cpp b/utils/dataconvert/dataconvert.cpp index 44f671447..86e0174df 100644 --- a/utils/dataconvert/dataconvert.cpp +++ b/utils/dataconvert/dataconvert.cpp @@ -2949,7 +2949,7 @@ void DataConvert::joinColTypeForUnion(datatypes::SystemCatalog::TypeHolderStd& u case datatypes::SystemCatalog::UINT: case datatypes::SystemCatalog::UBIGINT: case datatypes::SystemCatalog::UDECIMAL: - + { if (type.scale != 0 && (unionedType.scale != 0 || isDecimal(unionedType.colDataType))) { const unsigned int digitsBeforeDecimal = type.precision - type.scale; @@ -3012,7 +3012,7 @@ void DataConvert::joinColTypeForUnion(datatypes::SystemCatalog::TypeHolderStd& u } break; - + } case datatypes::SystemCatalog::DATE: unionedType.colDataType = datatypes::SystemCatalog::CHAR; unionedType.colWidth = 20; @@ -3042,10 +3042,6 @@ void DataConvert::joinColTypeForUnion(datatypes::SystemCatalog::TypeHolderStd& u case datatypes::SystemCatalog::UFLOAT: case datatypes::SystemCatalog::UDOUBLE: case datatypes::SystemCatalog::LONGDOUBLE: - if (datatypes::isWideDecimalType(type.colDataType, type.colWidth)) - unionedType = type; - break; - default: break; } @@ -3249,21 +3245,13 @@ void DataConvert::joinColTypeForUnion(datatypes::SystemCatalog::TypeHolderStd& u case datatypes::SystemCatalog::UBIGINT: case datatypes::SystemCatalog::UFLOAT: case datatypes::SystemCatalog::UDOUBLE: + case datatypes::SystemCatalog::DECIMAL: + case datatypes::SystemCatalog::UDECIMAL: unionedType.colDataType = datatypes::SystemCatalog::DOUBLE; unionedType.scale = 0; unionedType.colWidth = sizeof(double); break; - case datatypes::SystemCatalog::DECIMAL: - case datatypes::SystemCatalog::UDECIMAL: - if (unionedType.colWidth != datatypes::MAXDECIMALWIDTH) - { - unionedType.colDataType = datatypes::SystemCatalog::DOUBLE; - unionedType.scale = 0; - unionedType.colWidth = sizeof(double); - } - break; - default: break; } @@ -3313,23 +3301,14 @@ void DataConvert::joinColTypeForUnion(datatypes::SystemCatalog::TypeHolderStd& u case datatypes::SystemCatalog::UFLOAT: case datatypes::SystemCatalog::UDOUBLE: case datatypes::SystemCatalog::LONGDOUBLE: + case datatypes::SystemCatalog::DECIMAL: + case datatypes::SystemCatalog::UDECIMAL: unionedType.colDataType = datatypes::SystemCatalog::LONGDOUBLE; unionedType.scale = (type.scale > unionedType.scale) ? type.scale : unionedType.scale; unionedType.colWidth = sizeof(long double); unionedType.precision = -1; break; - case datatypes::SystemCatalog::DECIMAL: - case datatypes::SystemCatalog::UDECIMAL: - if (unionedType.colWidth != datatypes::MAXDECIMALWIDTH) - { - unionedType.colDataType = datatypes::SystemCatalog::LONGDOUBLE; - unionedType.scale = (type.scale > unionedType.scale) ? type.scale : unionedType.scale; - unionedType.colWidth = sizeof(long double); - unionedType.precision = -1; - } - break; - default: break; }