Fix function neighbor for LowCardinality argument.

This commit is contained in:
Nikolai Kochetov 2021-01-26 13:31:29 +03:00
parent c97469773d
commit d821cf11f8
3 changed files with 45 additions and 0 deletions

View File

@ -50,6 +50,8 @@ public:
bool useDefaultImplementationForConstants() const override { return false; }
bool useDefaultImplementationForLowCardinalityColumns() const override { return false; }
DataTypePtr getReturnTypeImpl(const DataTypes & arguments) const override
{
size_t number_of_arguments = arguments.size();

View File

@ -0,0 +1,43 @@
SELECT
neighbor(n, -2) AS int,
neighbor(s, -2) AS str,
neighbor(lcs, -2) AS lowCstr
FROM
(
SELECT
number % 5 AS n,
toString(n) AS s,
CAST(s, 'LowCardinality(String)') AS lcs
FROM numbers(10)
);
drop table if exists neighbor_test;
CREATE TABLE neighbor_test
(
`rowNr` UInt8,
`val_string` String,
`val_low` LowCardinality(String)
)
ENGINE = MergeTree
PARTITION BY tuple()
ORDER BY rowNr;
INSERT INTO neighbor_test VALUES (1, 'String 1', 'String 1'), (2, 'String 1', 'String 1'), (3, 'String 2', 'String 2');
SELECT
rowNr,
val_string,
neighbor(val_string, -1) AS str_m1,
neighbor(val_string, 1) AS str_p1,
val_low,
neighbor(val_low, -1) AS low_m1,
neighbor(val_low, 1) AS low_p1
FROM
(
SELECT *
FROM neighbor_test
ORDER BY val_string ASC
) format PrettyCompact;
drop table if exists neighbor_test;