1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-12-18 13:54:11 +03:00
Commit Graph

5453 Commits

Author SHA1 Message Date
Roman Nozdrin
64ab03b092 Merge pull request #1617 from tntnatbry/MCOL-4188-having-fixes
MCOL-4188 Regression fixes for MCOL-641.
2020-11-25 10:18:52 +03:00
Gagan Goel
c5d4a918ee MCOL-4188 Regression fixes for MCOL-641.
1. In TupleAggregateStep::configDeliveredRowGroup(), use
jobInfo.projectionCols instead of jobInfo.nonConstCols
for setting scale and precision if the source column is
wide decimal.

2. Tighten rules for wide decimal processing. Specifically:
  a. Replace (precision > INT64MAXPRECISION) checks with
     (precision > INT64MAXPRECISION && precision <= INT128MAXPRECISION)
  b. At places where (colWidth == MAXDECIMALWIDTH) is not enough to
     determine if a column is wide decimal or not, also add a check on
     type being DECIMAL/UDECIMAL.
2020-11-24 20:15:33 -05:00
Roman Nozdrin
d33f1b36b4 MCOL-4394 Followup 2020-11-23 15:50:59 +00:00
Roman Nozdrin
c707f72f0c Merge pull request #1614 from drrtuy/fix_UTs
Fixes for Decimal multiplication overflow check and RowGroup UTs
2020-11-23 12:24:26 +03:00
Roman Nozdrin
5ba6737965 Fixes for Decimal multiplication overflow check and RowGroup UTs 2020-11-22 17:55:22 +00:00
Gagan Goel
995cadef2d MCOL-641 Fix alter table add wide decimal column.
This patch also removes CalpontSystemCatalog::BINARY and
ddlpackage::DDL_BINARY that were added during the initial
stages of the work on MCOL-641.
2020-11-20 19:49:54 -05:00
Roman Nozdrin
ba4156fe13 Merge pull request #1607 from drrtuy/MCOL-4394
MCOL-4394 __float128 related code had been moved into a separate file
2020-11-20 11:50:54 +03:00
Roman Nozdrin
ac52d10b49 Merge pull request #1611 from mariadb-corporation/develop-bar-mcol-4174
A fix for MCOL-4174 Review/refactor frontend/connector code
2020-11-20 11:50:18 +03:00
Alexander Barkov
61b55127ac A fix for MCOL-4174 Review/refactor frontend/connector code
- The code in ha_mcs_partition.cpp erroneously printed data
  to a temporary ostringstream "oss" instead of "output".

- The left-side adjustfield (applied when printing the range values)
  unintentionally disappeared during MCOL-4174 refactoring.
  Restoring left adjustfield in TypeHandler::PrintPartitionValue*().
2020-11-20 10:23:13 +04:00
Gagan Goel
820703d2d0 Merge pull request #1568 from dhall-MariaDB/MCOL-4255-dev
MCOL-4255 dev fix ROUND(datecolumn)
2020-11-19 18:19:07 -05:00
David Hall
1b7fea9a12 MCOL-4255 dev fix ROUND(datecolumn)
The behavior of Server changed
2020-11-19 17:10:40 -06:00
Gagan Goel
8603c8f780 Merge pull request #1606 from dhall-MariaDB/MCOL-4397-dev
MCOL-4397 dev call refreshShm() for calshowpartitions
2020-11-19 17:02:25 -05:00
David Hall
f742a55cd6 MCOL-4397 dev call refreshShm() for calshowpartitions 2020-11-19 13:49:10 -06:00
Roman Nozdrin
178be69bc4 MCOL-4394 __float128 related code had been moved into a separate file
Trim to double and to long double conversions for Decimal
2020-11-19 12:08:18 +00:00
Roman Nozdrin
23af547fb8 Merge pull request #1604 from mariadb-corporation/MCOL-641_back
MCOL-641
2020-11-19 14:31:58 +03:00
Alexander Barkov
61a8ba786e Merge pull request #1602 from drrtuy/disable_i386_dev
Disable MCS on i386/i686
2020-11-19 14:42:28 +04:00
Roman Nozdrin
aa44bca473 A pack of fixes for compilation errors and warnings for all platforms
Add libdatatypes.so into debian packaging
2020-11-19 10:21:45 +00:00
Roman Nozdrin
31e0909552 Merge for 13264feb7 that is the fix for multiple LDI issues described in MCOL-4320/4364/4370 2020-11-18 13:53:16 +00:00
Roman Nozdrin
58495d0d2f MCOL-4387 Convert dataconvert::decimalToString() into VDecimal and TSInt128 methods 2020-11-18 13:53:16 +00:00
Gagan Goel
007b8a5082 MCOL-4188 Fix regressions in CEIL()/CHAR() for narrow decimals.
In addition, a regression in a WHERE clause with a WF field
as the LHS and an addition operation on two WF fields on the RHS
is also fixed. The issue was SimpleColumn::getDecimalVal() was
setting precision = 19, with the value of one of the operands of the
addition operation being set in VDecimal::value instead of
VDecimal::s128Value. addSubtractExecute() in mcs_decimal.cpp makes the
assumption that if precision > 18 and precision <= 38, we need to
fetch the wide s128Value, not the narrow value field. So we are
fixing the precision set in SimpleColumn::getDecimalVal().
2020-11-18 13:53:16 +00:00
Gagan Goel
6fd7916c56 MCOL-4188 Fix regression in a union subquery involving a numeric field.
Since we now perform type promotion to wide decimals for aggregations
involving numeric fields, we need to check for wide decimal in
in and out ROWs and call the appropriate setter and getter functions.
2020-11-18 13:53:16 +00:00
Alexander Barkov
3d7f5c6fd1 MCOL-4377 Split DataConvert::convertColumnData() 2020-11-18 13:53:16 +00:00
Roman Nozdrin
c00daa93bd MCOL-4172 MultiDistinctRowAggregation didn't honor multiple UDAF in projection
::doUDAF() doesn't crash anymore trying to access fRGContextColl[] elements
that doesn't exist running RowAggregationMultiDistinct::doAggregate()
2020-11-18 13:53:15 +00:00
Roman Nozdrin
f24fd41310 Fix constexpr compilation issues in centos 7 2020-11-18 13:53:15 +00:00
Roman Nozdrin
15b1bfa709 Fix fallthrough compilation warnings 2020-11-18 13:53:15 +00:00
Roman Nozdrin
3eb26c0d4a MCOL-4313 Introduced TSInt128 that is a storage class for int128
Removed uint128 from joblist/lbidlist.*

Another toString() method for wide-decimal that is EMPTY/NULL aware

Unified decimal processing in WF functions

Fixed a potential issue in EqualCompData::operator() for
    wide-decimal processing

Fixed some signedness warnings
2020-11-18 13:53:15 +00:00
Alexander Barkov
d5c6645ba1 Adding mcs_basic_types.h
For now it consists of only:

using int128_t = __int128;
using uint128_t = unsigned __int128;

All new privitive data types should go into this file in the future.
2020-11-18 13:53:15 +00:00
Alexander Barkov
916950d1e9 Fixing RelWithDebInfo warnings introduced in MCOL-4174 2020-11-18 13:53:15 +00:00
Alexander Barkov
129d5b5a0f MCOL-4174 Review/refactor frontend/connector code 2020-11-18 13:53:15 +00:00
Gagan Goel
68244ab957 MCOL-641 Fix regression in aggregate distinct on narrow decimal.
The else if block in Row::equals() was incorrectly getting triggered
for narrow decimals earlier. We now specifically check if the column
is a wide decimal. Furthermore, we need to dereference the int128_t
pointers for equality comparison.
2020-11-18 13:52:20 +00:00
Gagan Goel
1f4a781704 MCOL-641 Fixes for arithmetic operations.
1. Perform type promotion to wide decimal if the result
   of an arithmetic operation has a precision > 18.
2. Only set the decimal width of an arithmetic operation to wide
   if both the LHS and RHS of the operation are decimal types.
2020-11-18 13:52:20 +00:00
Roman Nozdrin
844472d812 MCOL-4313 Very fragile but high speed approach with inline ASM
GCC compiler uses aligned versions of SIMD instructions expecting
aligned memory blocks that is hard to implement now
2020-11-18 13:52:20 +00:00
Gagan Goel
7d3d828790 MCOL-641 This commit fixes regression introduced by an earlier
commit for group_concat() on a narrow decimal field.
2020-11-18 13:52:20 +00:00
Roman Nozdrin
8de9764f84 MCOL-4172 Add support for wide-DECIMAL into statistical aggregate and regr_* UDAF functions
The patch fixes wrong results returned when multiple UDAF exist in projection

aggregate over wide decimal literals now works
2020-11-18 13:52:20 +00:00
Roman Nozdrin
f7002e20b5 ::writeRow now treats WR_BINARY as int128 for 16 bytes DT only
WF avg uses const & as arguments types

Removed BINARY from DDL parser
2020-11-18 13:52:20 +00:00
Gagan Goel
88e106f018 MCOL-641 Ternary operation with different datatype of the two
resulting expressions cannot be used as a template argument.
This is because the template instantiation happens at compile time
and cannot depend on the runtime value of the evaluating expression.
2020-11-18 13:52:20 +00:00
Roman Nozdrin
1c3a34a3d0 Dataconvert::decimalToString badly fails w/o 20th member of mcs_pow_10 so I returned it
WF::percentile runtime threw an exception b/c of wrong DT deduced from its argument

Replaced literals with constants

Tought WF_sum_avg::checkSumLimit to use refs instead of values
2020-11-18 13:52:20 +00:00
David Hall
af80081c94 MCOL-4171 Some fixes 2020-11-18 13:52:20 +00:00
David Hall
5b8aba0005 MCOL-4171 use const ref when passing int128
It saves a pico second or two.
2020-11-18 13:52:20 +00:00
David Hall
2d044fd7f1 MCOL-4171 Fix comments in bytestream.h 2020-11-18 13:52:19 +00:00
David Hall
c4d8516a47 MCOL-4171 Window functions with decimal(38) 2020-11-18 13:52:19 +00:00
Gagan Goel
62c1c1e0e2 Remove hi_val/lo_val data members from EMCasualPartition_struct
and use the union members instead.
2020-11-18 13:52:19 +00:00
Roman Nozdrin
1588ebe439 MCOL-641 Clean up primitives code
Add int128_t support into ByteStream

Fixed UTs broken after collation patch
2020-11-18 13:52:19 +00:00
David Hall
638202417f MCOL-4171 2020-11-18 13:52:19 +00:00
Gagan Goel
5287e6860b MCOL-641 Upgrade code for extent map from v4 to v5.
v5 (current) version of the extent map supports int128_t min/max
values. This commit provides upgrade capability to load_brm program
that when reads an extent map saved to disk earlier with save_brm,
with a EM_MAGIC_V4 entry, converts it to the current v5 "wider"
extent map.
2020-11-18 13:52:19 +00:00
Gagan Goel
d3bc68b02f MCOL-641 Refactor initial extent elimination support.
This commit also adds support in TupleHashJoinStep::forwardCPData,
although we currently do not support wide decimals as join keys.

Row estimation to determine large-side of the join is also updated.
2020-11-18 13:52:19 +00:00
Roman Nozdrin
ca53b6348a MCOL-641 A bit lost during rebase 2020-11-18 13:51:55 +00:00
Gagan Goel
6aea838360 MCOL-641 Add support for functions (Part 2). 2020-11-18 13:51:55 +00:00
Roman Nozdrin
bd0d5af123 Merge fixes. 2020-11-18 13:51:26 +00:00
Roman Nozdrin
8c02802ac1 MCOL-641 Fix the cpimport issue when tables contains wide-DECIMAL and other types. 2020-11-18 13:51:26 +00:00