Skip to content
This repository was archived by the owner on Jun 22, 2025. It is now read-only.
This repository was archived by the owner on Jun 22, 2025. It is now read-only.

Cannot parse expression of type LowCardinality(String) #66

@YPermitin

Description

@YPermitin

Доброго дня!

Заметил странное поведение при тестировании своих приложения на недавно вышедшей версии ClickHouse 21.1.2.15.

Например, есть база TestDB с простейшей таблицей:

-- TestDB.ValuesTable definition

CREATE TABLE TestDB.ValuesTable
(

    `TestString1` LowCardinality(String)
)
ENGINE = MergeTree
ORDER BY TestString1
SETTINGS index_granularity = 8192;

Колонка имеет тип LowCardinality(String). Если бы был просто 'String', то никаких проблем нет.
Пишем такой же простой алгоритм вставки нового значения:

            using (ClickHouseConnection connection =
                new ClickHouseConnection(
                    "Host=<Server>;Port=8123;Database=<DBNAME>;Username=default;password=<USERPASSWORD>;"))
            {
                var cmd = connection.CreateCommand();
                cmd.CommandText =
                    @"INSERT INTO ValuesTable (
                        TestString1
                    ) VALUES (
                        {TestString1:String},   
                    )";

                cmd.Parameters.Add(new ClickHouseDbParameter
                {
                    ParameterName = "TestString1",
                    DbType = DbType.String,
                    Value = "Wow, wow!"
                });
                cmd.ExecuteNonQuery();
            }
        }

При попытке выполнения команды появляется ошибка:

ClickHouse.Client.ClickHouseServerException: "Code: 62, e.displayText() = DB::Exception: Cannot parse expression of type LowCardinality(String) here: {TestString1:String},   
                    ) (version 21.1.2.15 (official build))
"

Также может быть ошибка на подобие:

Cast exception String to LowCardinality(String)

Текст уже, к сожалению, не помню, но как-то так.

При этом на версиях ClickHouse 20.x.x.x такой ошибки не было.

Если вставлять значения через класс "ClickHouseBulkCopy", то проблем нет.

Есть ли идеи как такую ошибку обойти, кроме как использовал BULK-операции?
Может какие-то параметры можно указать для подсказки что за тип данных ожидается?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions