@@ -763,7 +763,14 @@ inline uint64_t TreeNode::getUintVal()
763
763
case CalpontSystemCatalog::DECIMAL:
764
764
case CalpontSystemCatalog::UDECIMAL:
765
765
{
766
- return (uint64_t )(fResult .decimalVal .value / pow ((double )10 , fResult .decimalVal .scale ));
766
+ if (fResultType .colWidth == datatypes::MAXDECIMALWIDTH)
767
+ {
768
+ return static_cast <uint64_t >(fResult .decimalVal .getIntegralPart ());
769
+ }
770
+ else
771
+ {
772
+ return (uint64_t )(fResult .decimalVal .value / pow ((double )10 , fResult .decimalVal .scale ));
773
+ }
767
774
}
768
775
769
776
case CalpontSystemCatalog::DATE:
@@ -829,8 +836,16 @@ inline float TreeNode::getFloatVal()
829
836
return (float )fResult .doubleVal ;
830
837
831
838
case CalpontSystemCatalog::DECIMAL:
839
+ case CalpontSystemCatalog::UDECIMAL:
832
840
{
833
- return (fResult .decimalVal .value / pow ((double )10 , fResult .decimalVal .scale ));
841
+ if (fResultType .colWidth == datatypes::MAXDECIMALWIDTH)
842
+ {
843
+ return static_cast <float >(fResult .decimalVal );
844
+ }
845
+ else
846
+ {
847
+ return (fResult .decimalVal .value / pow ((double )10 , fResult .decimalVal .scale ));
848
+ }
834
849
}
835
850
836
851
case CalpontSystemCatalog::DATE:
@@ -974,8 +989,15 @@ inline long double TreeNode::getLongDoubleVal()
974
989
case CalpontSystemCatalog::DECIMAL:
975
990
case CalpontSystemCatalog::UDECIMAL:
976
991
{
977
- // this may not be accurate. if this is problematic, change to pre-calculated power array.
978
- return (long double )(fResult .decimalVal .value / pow ((long double )10 , fResult .decimalVal .scale ));
992
+ if (fResultType .colWidth == datatypes::MAXDECIMALWIDTH)
993
+ {
994
+ return static_cast <long double >(fResult .decimalVal );
995
+ }
996
+ else
997
+ {
998
+ // this may not be accurate. if this is problematic, change to pre-calculated power array.
999
+ return (long double )(fResult .decimalVal .value / pow ((long double )10 , fResult .decimalVal .scale ));
1000
+ }
979
1001
}
980
1002
981
1003
case CalpontSystemCatalog::DATE:
0 commit comments