diff --git a/dbcon/execplan/treenode.h b/dbcon/execplan/treenode.h index 25ee452b5..fc74cf0e3 100644 --- a/dbcon/execplan/treenode.h +++ b/dbcon/execplan/treenode.h @@ -771,10 +771,10 @@ inline uint64_t TreeNode::getUintVal() case CalpontSystemCatalog::UINT: return fResult.uintVal; case CalpontSystemCatalog::FLOAT: - case CalpontSystemCatalog::UFLOAT: return (uint64_t)fResult.floatVal; + case CalpontSystemCatalog::UFLOAT: return (uint64_t)std::llround(fResult.floatVal); case CalpontSystemCatalog::DOUBLE: - case CalpontSystemCatalog::UDOUBLE: return (uint64_t)fResult.doubleVal; + case CalpontSystemCatalog::UDOUBLE: return (uint64_t)std::llround(fResult.doubleVal); case CalpontSystemCatalog::LONGDOUBLE: return (uint64_t)fResult.longDoubleVal; diff --git a/mysql-test/columnstore/bugfixes/mcol_4622.result b/mysql-test/columnstore/bugfixes/mcol_4622.result new file mode 100644 index 000000000..942066127 --- /dev/null +++ b/mysql-test/columnstore/bugfixes/mcol_4622.result @@ -0,0 +1,17 @@ +DROP DATABASE IF EXISTS mcol_4622; +CREATE DATABASE mcol_4622; +USE mcol_4622; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a VARCHAR(32), d FLOAT) ENGINE=ColumnStore; +INSERT INTO t1 VALUES ('aaaa', 1.5); +SELECT LEFT(a, d) FROM t1; +LEFT(a, d) +aa +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (a VARCHAR(32), d DOUBLE) ENGINE=ColumnStore; +INSERT INTO t1 VALUES ('aaaa', 1.5); +SELECT LEFT(a, d) FROM t1; +LEFT(a, d) +aa +DROP TABLE IF EXISTS t1; +DROP DATABASE mcol_4622; diff --git a/mysql-test/columnstore/bugfixes/mcol_4622.test b/mysql-test/columnstore/bugfixes/mcol_4622.test new file mode 100644 index 000000000..8d2898d02 --- /dev/null +++ b/mysql-test/columnstore/bugfixes/mcol_4622.test @@ -0,0 +1,28 @@ +-- source ../include/have_columnstore.inc +--disable_warnings +DROP DATABASE IF EXISTS mcol_4622; +--enable_warnings +CREATE DATABASE mcol_4622; +USE mcol_4622; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings +CREATE TABLE t1 (a VARCHAR(32), d FLOAT) ENGINE=ColumnStore; +INSERT INTO t1 VALUES ('aaaa', 1.5); +SELECT LEFT(a, d) FROM t1; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings +CREATE TABLE t1 (a VARCHAR(32), d DOUBLE) ENGINE=ColumnStore; +INSERT INTO t1 VALUES ('aaaa', 1.5); +SELECT LEFT(a, d) FROM t1; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +--disable_warnings +DROP DATABASE mcol_4622; +--enable_warnings