Closed Jax-YHH closed 3 weeks ago
Currently Proton does not support nullable modifiers for some external types. eg:
DB::Exception: Nested type array(string) cannot be inside Nullable type.
DB::Exception: Nested type low_cardinality(string) cannot be inside Nullable type.
Proton does not support LowCardinality(String) column values be INSERTed from client as ColumnString
The geometric type needs to be enabled on the Proton side, and a compilation option has been added to skip gtest.
/// file path: src/Columns/ColumnNullable.cpp
ColumnNullable::ColumnNullable(MutableColumnPtr && nested_column_, MutableColumnPtr && null_map_)
: nested_column(std::move(nested_column_)), null_map(std::move(null_map_))
{
// ....
if (!getNestedColumn().canBeInsideNullable())
throw Exception{getNestedColumn().getName() + " cannot be inside Nullable column", ErrorCodes::ILLEGAL_COLUMN};
// ....
}
All nested types don't implement the canBeInsideNullable()
interface, and it returns a false default.
Now the Proton server supports casting from string type to low_cardinality type, and the client can use the ColumnString type to insert into the Proton server's LowCardinality(String) type. The same for fixed_string type.
Proton server has disabled geometric types,so just skip test cases of geometric types now.
2 low_cardinality(string) column values can not be INSERTed from client as ColumnString 2024.07.25 10:23:21.419784 [ 1810168 ] {119a13d5-18e1-4df7-b680-792fe680fbd5} : Logical error: 'Bad cast from type DB::ColumnString to DB::ColumnLowCardinality'.
3 point, ring, polygon multi_polygon are not yet supported by proton-server 2024.07.25 10:34:14.631465 [ 1820856 ] {a66074f5-f54c-459c-86d5-ef8908073e1d} executeQuery: Code: 50. DB::Exception: Unknown data type family: point. Maybe you meant: ['uint']. (UNKNOWN_TYPE) (version 2.3.3) (from 127.0.0.1:51442) (in query: CREATE TEMPORARY STREAM IF NOT EXISTS temporary_roundtrip_table (id uint32, col point) ENGINE = Memory;)
...