mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-26 19:50:51 +00:00
Fix if
This commit is contained in:
parent
902624cb7b
commit
3b9ab3f1be
@ -604,7 +604,6 @@ private:
|
|||||||
const ColumnUInt8 * cond_col, Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count)
|
const ColumnUInt8 * cond_col, Block & block, const ColumnNumbers & arguments, size_t result, size_t input_rows_count)
|
||||||
{
|
{
|
||||||
/// Convert both columns to the common type (if needed).
|
/// Convert both columns to the common type (if needed).
|
||||||
|
|
||||||
const ColumnWithTypeAndName & arg1 = block.getByPosition(arguments[1]);
|
const ColumnWithTypeAndName & arg1 = block.getByPosition(arguments[1]);
|
||||||
const ColumnWithTypeAndName & arg2 = block.getByPosition(arguments[2]);
|
const ColumnWithTypeAndName & arg2 = block.getByPosition(arguments[2]);
|
||||||
|
|
||||||
@ -765,10 +764,22 @@ private:
|
|||||||
return ColumnNullable::create(materialized, ColumnUInt8::create(column->size(), 0));
|
return ColumnNullable::create(materialized, ColumnUInt8::create(column->size(), 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
static ColumnPtr getNestedColumn(const ColumnPtr & column)
|
/// Return nested column recursively removing Nullable, examples:
|
||||||
|
/// Nullable(size = 1, Int32(size = 1), UInt8(size = 1)) -> Int32(size = 1)
|
||||||
|
/// Const(size = 0, Nullable(size = 1, Int32(size = 1), UInt8(size = 1))) ->
|
||||||
|
/// Const(size = 0, Int32(size = 1))
|
||||||
|
static ColumnPtr recursiveGetNestedColumnWithoutNullable(const ColumnPtr & column)
|
||||||
{
|
{
|
||||||
if (const auto * nullable = checkAndGetColumn<ColumnNullable>(*column))
|
if (const auto * nullable = checkAndGetColumn<ColumnNullable>(*column))
|
||||||
|
{
|
||||||
|
/// Nullable cannot contain Nullable
|
||||||
return nullable->getNestedColumnPtr();
|
return nullable->getNestedColumnPtr();
|
||||||
|
}
|
||||||
|
else if (const auto * column_const = checkAndGetColumn<ColumnConst>(*column))
|
||||||
|
{
|
||||||
|
/// Save Constant, but remove Nullable
|
||||||
|
return ColumnConst::create(recursiveGetNestedColumnWithoutNullable(column_const->getDataColumnPtr()), column->size());
|
||||||
|
}
|
||||||
|
|
||||||
return column;
|
return column;
|
||||||
}
|
}
|
||||||
@ -826,12 +837,12 @@ private:
|
|||||||
{
|
{
|
||||||
arg_cond,
|
arg_cond,
|
||||||
{
|
{
|
||||||
getNestedColumn(arg_then.column),
|
recursiveGetNestedColumnWithoutNullable(arg_then.column),
|
||||||
removeNullable(arg_then.type),
|
removeNullable(arg_then.type),
|
||||||
""
|
""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
getNestedColumn(arg_else.column),
|
recursiveGetNestedColumnWithoutNullable(arg_else.column),
|
||||||
removeNullable(arg_else.type),
|
removeNullable(arg_else.type),
|
||||||
""
|
""
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user