mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-22 23:52:03 +00:00
Merge pull request #2004 from yandex/CLICKHOUSE-3616
Prohibited non-UInt8 constants in WHERE
This commit is contained in:
commit
2daf6be96c
@ -25,7 +25,20 @@ ConstantFilterDescription::ConstantFilterDescription(const IColumn & column)
|
|||||||
|
|
||||||
if (column.isColumnConst())
|
if (column.isColumnConst())
|
||||||
{
|
{
|
||||||
if (static_cast<const ColumnConst &>(column).getValue<UInt8>())
|
const ColumnConst & column_const = static_cast<const ColumnConst &>(column);
|
||||||
|
const IColumn & column_nested = column_const.getDataColumn();
|
||||||
|
|
||||||
|
if (!typeid_cast<const ColumnUInt8 *>(&column_nested))
|
||||||
|
{
|
||||||
|
const ColumnNullable * column_nested_nullable = typeid_cast<const ColumnNullable *>(&column_nested);
|
||||||
|
if (!column_nested_nullable || !typeid_cast<const ColumnUInt8 *>(&column_nested_nullable->getNestedColumn()))
|
||||||
|
{
|
||||||
|
throw Exception("Illegal type " + column_nested.getName() + " of column for constant filter. Must be UInt8 or Nullable(UInt8).",
|
||||||
|
ErrorCodes::ILLEGAL_TYPE_OF_COLUMN_FOR_FILTER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (column_const.getValue<UInt64>())
|
||||||
always_true = true;
|
always_true = true;
|
||||||
else
|
else
|
||||||
always_false = true;
|
always_false = true;
|
||||||
|
@ -25,7 +25,7 @@ function pack_unpack_compare()
|
|||||||
|
|
||||||
${CLICKHOUSE_CLIENT} --query "DROP TABLE IF EXISTS test.buf"
|
${CLICKHOUSE_CLIENT} --query "DROP TABLE IF EXISTS test.buf"
|
||||||
${CLICKHOUSE_CLIENT} --query "DROP TABLE IF EXISTS test.buf_file"
|
${CLICKHOUSE_CLIENT} --query "DROP TABLE IF EXISTS test.buf_file"
|
||||||
rm -f "${CLICKHOUSE_TMP}/$buf_file" stderr
|
rm -f "$buf_file" stderr
|
||||||
|
|
||||||
echo $((res_orig - res_db_file)) $((res_orig - res_ch_local1)) $((res_orig - res_ch_local2))
|
echo $((res_orig - res_db_file)) $((res_orig - res_ch_local1)) $((res_orig - res_ch_local2))
|
||||||
}
|
}
|
||||||
|
@ -1 +1,4 @@
|
|||||||
0000-00-00 00:00:00
|
0000-00-00 00:00:00
|
||||||
|
|
||||||
|
0
|
||||||
|
0
|
||||||
|
@ -10,3 +10,15 @@ $CLICKHOUSE_CLIENT --query="SELECT CAST(0 AS Tuple)" 2>/dev/null || true;
|
|||||||
$CLICKHOUSE_CLIENT --query="SELECT CAST(0 AS FixedString)" 2>/dev/null || true;
|
$CLICKHOUSE_CLIENT --query="SELECT CAST(0 AS FixedString)" 2>/dev/null || true;
|
||||||
$CLICKHOUSE_CLIENT --query="SELECT CAST(0 AS Enum)" 2>/dev/null || true;
|
$CLICKHOUSE_CLIENT --query="SELECT CAST(0 AS Enum)" 2>/dev/null || true;
|
||||||
$CLICKHOUSE_CLIENT --query="SELECT CAST(0 AS DateTime)";
|
$CLICKHOUSE_CLIENT --query="SELECT CAST(0 AS DateTime)";
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
($CLICKHOUSE_CLIENT --query="SELECT * FROM system.one WHERE toString(dummy)" 2>/dev/null && echo "Expected failure") || true;
|
||||||
|
($CLICKHOUSE_CLIENT --query="SELECT * FROM system.one WHERE toString(1)" 2>/dev/null && echo "Expected failure") || true;
|
||||||
|
($CLICKHOUSE_CLIENT --query="SELECT * FROM system.one WHERE 256" 2>/dev/null && echo "Expected failure") || true;
|
||||||
|
($CLICKHOUSE_CLIENT --query="SELECT * FROM system.one WHERE -1" 2>/dev/null && echo "Expected failure") || true;
|
||||||
|
($CLICKHOUSE_CLIENT --query="SELECT * FROM system.one WHERE CAST(256 AS Nullable(UInt16))" 2>/dev/null && echo "Expected failure") || true;
|
||||||
|
|
||||||
|
$CLICKHOUSE_CLIENT --query="SELECT * FROM system.one WHERE CAST(NULL AS Nullable(UInt8))"
|
||||||
|
$CLICKHOUSE_CLIENT --query="SELECT * FROM system.one WHERE 255"
|
||||||
|
$CLICKHOUSE_CLIENT --query="SELECT * FROM system.one WHERE CAST(255 AS Nullable(UInt8))"
|
||||||
|
Loading…
Reference in New Issue
Block a user