mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 17:44:23 +00:00
string to date is not monotonic
This commit is contained in:
parent
cbe9878e9e
commit
d9de96716a
@ -1518,13 +1518,27 @@ struct ToDateMonotonicity
|
|||||||
else if (
|
else if (
|
||||||
(which.isUInt() && ((left.isNull() || left.get<UInt64>() < 0xFFFF) && (right.isNull() || right.get<UInt64>() >= 0xFFFF)))
|
(which.isUInt() && ((left.isNull() || left.get<UInt64>() < 0xFFFF) && (right.isNull() || right.get<UInt64>() >= 0xFFFF)))
|
||||||
|| (which.isInt() && ((left.isNull() || left.get<Int64>() < 0xFFFF) && (right.isNull() || right.get<Int64>() >= 0xFFFF)))
|
|| (which.isInt() && ((left.isNull() || left.get<Int64>() < 0xFFFF) && (right.isNull() || right.get<Int64>() >= 0xFFFF)))
|
||||||
|| (which.isFloat() && ((left.isNull() || left.get<Float64>() < 0xFFFF) && (right.isNull() || right.get<Float64>() >= 0xFFFF))))
|
|| (which.isFloat() && ((left.isNull() || left.get<Float64>() < 0xFFFF) && (right.isNull() || right.get<Float64>() >= 0xFFFF)))
|
||||||
|
|| !type.isValueRepresentedByNumber())
|
||||||
return {};
|
return {};
|
||||||
else
|
else
|
||||||
return {true, true, true};
|
return {true, true, true};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ToDateTimeMonotonicity
|
||||||
|
{
|
||||||
|
static bool has() { return true; }
|
||||||
|
|
||||||
|
static IFunction::Monotonicity get(const IDataType & type, const Field &, const Field &)
|
||||||
|
{
|
||||||
|
if (type.isValueRepresentedByNumber())
|
||||||
|
return {true, true, true};
|
||||||
|
else
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/** The monotonicity for the `toString` function is mainly determined for test purposes.
|
/** The monotonicity for the `toString` function is mainly determined for test purposes.
|
||||||
* It is doubtful that anyone is looking to optimize queries with conditions `toString(CounterID) = 34`.
|
* It is doubtful that anyone is looking to optimize queries with conditions `toString(CounterID) = 34`.
|
||||||
*/
|
*/
|
||||||
@ -1592,7 +1606,7 @@ using FunctionToInt64 = FunctionConvert<DataTypeInt64, NameToInt64, ToNumberMono
|
|||||||
using FunctionToFloat32 = FunctionConvert<DataTypeFloat32, NameToFloat32, ToNumberMonotonicity<Float32>>;
|
using FunctionToFloat32 = FunctionConvert<DataTypeFloat32, NameToFloat32, ToNumberMonotonicity<Float32>>;
|
||||||
using FunctionToFloat64 = FunctionConvert<DataTypeFloat64, NameToFloat64, ToNumberMonotonicity<Float64>>;
|
using FunctionToFloat64 = FunctionConvert<DataTypeFloat64, NameToFloat64, ToNumberMonotonicity<Float64>>;
|
||||||
using FunctionToDate = FunctionConvert<DataTypeDate, NameToDate, ToDateMonotonicity>;
|
using FunctionToDate = FunctionConvert<DataTypeDate, NameToDate, ToDateMonotonicity>;
|
||||||
using FunctionToDateTime = FunctionConvert<DataTypeDateTime, NameToDateTime, PositiveMonotonicity>;
|
using FunctionToDateTime = FunctionConvert<DataTypeDateTime, NameToDateTime, ToDateTimeMonotonicity>;
|
||||||
using FunctionToDateTime64 = FunctionConvert<DataTypeDateTime64, NameToDateTime64, UnknownMonotonicity>;
|
using FunctionToDateTime64 = FunctionConvert<DataTypeDateTime64, NameToDateTime64, UnknownMonotonicity>;
|
||||||
using FunctionToUUID = FunctionConvert<DataTypeUUID, NameToUUID, ToNumberMonotonicity<UInt128>>;
|
using FunctionToUUID = FunctionConvert<DataTypeUUID, NameToUUID, ToNumberMonotonicity<UInt128>>;
|
||||||
using FunctionToString = FunctionConvert<DataTypeString, NameToString, ToStringMonotonicity>;
|
using FunctionToString = FunctionConvert<DataTypeString, NameToString, ToStringMonotonicity>;
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
0
|
0
|
||||||
1970-01-01 2106-02-07 1970-04-11 1970-01-01 2106-02-07
|
1970-01-01 2106-02-07 1970-04-11 1970-01-01 2106-02-07
|
||||||
|
1970-01-01 03:00:00 2106-02-07 09:28:15 1970-01-01 03:16:40
|
||||||
|
Loading…
Reference in New Issue
Block a user