ydb icon indicating copy to clipboard operation
ydb copied to clipboard

Автоматически конвертировать типы в UPSERT SELECT также как в INSERT

Open uh-zuh opened this issue 2 years ago • 0 comments

Хорошо бы автоматически конвертировать совместимые типы в типы соответствующих колонок таблицы в запросах UPSERT INTO table SELECT также как это делается в запросах INSERT.

Таблица:

CREATE TABLE table4
(
    id Uint64,
    value Utf8,
    PRIMARY KEY (id)
);

Запрос, выполняющийся без ошибок:

INSERT INTO table4 (id, value)
VALUES (123, "test_1");

Запрос фейлится с ошибкой несовпадения типов:

UPSERT INTO table4
SELECT 456 AS id, "test_2" AS value FROM table4 LIMIT 1;

Ошибка:

Type annotation
2:13
At function: KiWriteTable!
3:49
Failed to convert type: List<Struct<'id':Int32,'value':String>> to List<Struct<'id':Uint64?,'value':Utf8?>>
3:49
Consider using explicit CAST or BITCAST to convert from Int32 to Uint64
3:49
Failed to convert 'value': String to Utf8?
3:49
Row type mismatch for table: db.[/ru-central1/b1g7ltu3egp1212u1nca/etnml28to4g9rid6gh2a/table4]

uh-zuh avatar Aug 30 '22 16:08 uh-zuh