- MCOL-4527 Simple query performace is degraded between 5.4 and 5.5
xxx_nopad_bin collations are now around 30% faster on simple queries like:
SELECT * FROM t1 WHERE short_char_column_nopad_bin = 'literal'
The gain is achieved by comparing two short CHAR values as uint64_t.
Note, this patch does not affect xxx_bin collations!
It wouldn't be correct to apply the same improvement for xxx_bin
collations (i.e. with PAD SPACE attribute), because it would change
the way how trailing spaces are compared.
- MCOL-4539 WHERE short_char_column='literal' ignores the collation on a huge table
Only the first thread used a correct collation when performing:
WHERE short_char_char='literal'
Other (15) threads used the server default collation, because
the charsetNumber attribute was not copyed during cloning.
- This patch also adds mtr/basic/suite.opt, so "mtr" can run without --extern.
A non-JOIN condition like `WHERE c1=c2` (with c1 and c2 being columns of the
same table) was not collation-aware yet after the main patches for MCOL-4064.
Additionally fixing StrFilterCmd::compare*() to address this.
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.
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
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.
Introduced fDecimalOverflowCheck to enable/disable overflow check.
Add support into a FunctionColumn.
Low level scanning crashes on medium sized data sets.
2. Set Decimal precision in SimpleColumn::evaluate().
3. Add support for int128_t in ConstantColumn.
4. Set IDB_Decimal::s128Value in buildDecimalColumn().
5. Use width 16 as first if predicate for branching based on decimal width.
Binary NULL magic now consists of a series of BINARYEMPTYROW-s + BINARYNULL
in the end.
ByteStream now has hexbyte alias.
Added ColumnCommand::getEmptyRowValue to support 16 byte EMPTY values.
TupleAggregateStep class method and buildAggregateColumn() now properly set result data type.
doSum() now handles DECIMAL(38) in approprate manner.
Low-level null related methods for new binary-based datatypes now handles magic values for
binary-based DT.