Merge pull request #25410 from vdimir/issue-21730

This commit is contained in:
Vladimir 2021-06-18 11:00:26 +03:00 committed by GitHub
commit 51e5a019ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 4 deletions

View File

@ -1,18 +1,19 @@
#include <Columns/ColumnFixedString.h>
#include <Columns/ColumnLowCardinality.h>
#include <Columns/ColumnUnique.h>
#include <Columns/ColumnFixedString.h>
#include <Columns/ColumnsCommon.h>
#include <Common/HashTable/HashMap.h>
#include <Common/typeid_cast.h>
#include <Common/assert_cast.h>
#include <Common/typeid_cast.h>
#include <Core/Field.h>
#include <Core/TypeListNumber.h>
#include <DataTypes/DataTypeDate.h>
#include <DataTypes/DataTypeDateTime.h>
#include <DataTypes/DataTypeFactory.h>
#include <DataTypes/DataTypeInterval.h>
#include <DataTypes/DataTypeLowCardinality.h>
#include <DataTypes/DataTypeNullable.h>
#include <DataTypes/DataTypesNumber.h>
#include <DataTypes/DataTypeDate.h>
#include <DataTypes/DataTypeDateTime.h>
#include <DataTypes/Serializations/SerializationLowCardinality.h>
#include <Parsers/IAST.h>
@ -81,6 +82,8 @@ MutableColumnUniquePtr DataTypeLowCardinality::createColumnUniqueImpl(const IDat
return creator(static_cast<ColumnVector<UInt32> *>(nullptr));
else if (which.isUUID())
return creator(static_cast<ColumnVector<UUID> *>(nullptr));
else if (which.isInterval())
return creator(static_cast<DataTypeInterval::ColumnType *>(nullptr));
else if (which.isInt() || which.isUInt() || which.isFloat())
{
MutableColumnUniquePtr column;

View File

@ -0,0 +1,6 @@
1 LowCardinality(IntervalMinute)
2 LowCardinality(IntervalMinute)
1 LowCardinality(IntervalDay)
2 LowCardinality(IntervalDay)
61f0c404-5cb3-11e7-907b-a6006ad3dba2 LowCardinality(UUID)
2 LowCardinality(String)

View File

@ -0,0 +1,20 @@
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
CREATE TABLE t1 (`x` UInt32, `lc` LowCardinality(String) ) ENGINE = Memory;
INSERT INTO t1 VALUES (1, '1'), (2, '2');
SELECT toIntervalMinute(lc) as e, toTypeName(e) FROM t1;
SELECT toIntervalDay(lc) as e, toTypeName(e) FROM t1;
CREATE TABLE t2 (`x` UInt32, `lc` LowCardinality(String) ) ENGINE = Memory;
INSERT INTO t2 VALUES (1, '61f0c404-5cb3-11e7-907b-a6006ad3dba2');
SELECT toUUID(lc) as e, toTypeName(e) FROM t2;
INSERT INTO t2 VALUES (2, '2');
SELECT toIntervalMinute(lc), toTypeName(materialize(r.lc)) FROM t1 AS l INNER JOIN t2 as r USING (lc);
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;