Skip to content

struct datatype not supported #58

@aadant

Description

@aadant

Came across this while monkey testing. Not a priority. Reporting in case someone hit this.

use test;
CREATE TABLE datatype_structs_final
(
    id UInt32,
    -- Struct/Tuple
    struct_tuple Tuple(
        name String,
        score Float64,
        metrics Array(Int32),
        meta Map(String, String)       -- Map inside tuple
    )
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO datatype_structs_final VALUES
(
    1,
    tuple(
        'Test Name',                   -- name
        99.95,                         -- score
        [10, 20, 30],                  -- metrics
        map('version', '1.0', 'env', 'prod') -- meta map
    )
);


docker exec -it vector clickhouse-client --query "select * from test.datatype_structs_final into outfile 'test_struct.parquet'  format Parquet"
docker cp vector:test_struct.parquet test_struct.parquet
./ice insert test.datatype_structs_final -p file://test_struct.parquet

Stack trace :

2025-09-04 22:42:25 [main] WARN o.a.i.rest.ErrorHandlers > Unable to parse error response
java.io.UncheckedIOException: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1]
	at org.apache.iceberg.util.JsonUtil.parse(JsonUtil.java:106)
	at org.apache.iceberg.rest.responses.ErrorResponseParser.fromJson(ErrorResponseParser.java:71)
	at org.apache.iceberg.rest.ErrorHandlers$DefaultErrorHandler.parseResponse(ErrorHandlers.java:194)
	at org.apache.iceberg.rest.HTTPClient.throwFailure(HTTPClient.java:195)
	at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:309)
	at org.apache.iceberg.rest.BaseHTTPClient.get(BaseHTTPClient.java:77)
	at org.apache.iceberg.rest.RESTSessionCatalog.fetchConfig(RESTSessionCatalog.java:1089)
	at org.apache.iceberg.rest.RESTSessionCatalog.initialize(RESTSessionCatalog.java:261)
	at org.apache.iceberg.rest.RESTCatalog.initialize(RESTCatalog.java:78)
	at com.altinity.ice.cli.Main.loadCatalog(Main.java:464)
	at com.altinity.ice.cli.Main.loadCatalog(Main.java:430)
	at com.altinity.ice.cli.Main.insert(Main.java:282)
	at com.altinity.ice.cli.Main.lambda$main$1(Main.java:480) [9 skipped]
	at com.altinity.ice.cli.Main.main(Main.java:487) [1 skipped]
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1]
	at org.apache.iceberg.util.JsonUtil.parse(JsonUtil.java:104) [5 skipped]
	at org.apache.iceberg.rest.responses.ErrorResponseParser.fromJson(ErrorResponseParser.java:71)
	at org.apache.iceberg.rest.ErrorHandlers$DefaultErrorHandler.parseResponse(ErrorHandlers.java:194)
	at org.apache.iceberg.rest.HTTPClient.throwFailure(HTTPClient.java:195)
	at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:309)
	at org.apache.iceberg.rest.BaseHTTPClient.get(BaseHTTPClient.java:77)
	... 23 common frames omitted
2025-09-04 22:42:25 [main] ERROR com.altinity.ice.cli.Main > Fatal
org.apache.iceberg.exceptions.RESTException: Unable to process:
	at org.apache.iceberg.rest.ErrorHandlers$DefaultErrorHandler.accept(ErrorHandlers.java:224)
	at org.apache.iceberg.rest.ErrorHandlers$DefaultErrorHandler.accept(ErrorHandlers.java:188)
	at org.apache.iceberg.rest.HTTPClient.throwFailure(HTTPClient.java:225)
	at org.apache.iceberg.rest.HTTPClient.execute(HTTPClient.java:309)
	at org.apache.iceberg.rest.BaseHTTPClient.get(BaseHTTPClient.java:77)
	at org.apache.iceberg.rest.RESTSessionCatalog.fetchConfig(RESTSessionCatalog.java:1089)
	at org.apache.iceberg.rest.RESTSessionCatalog.initialize(RESTSessionCatalog.java:261)
	at org.apache.iceberg.rest.RESTCatalog.initialize(RESTCatalog.java:78)
	at com.altinity.ice.cli.Main.loadCatalog(Main.java:464)
	at com.altinity.ice.cli.Main.loadCatalog(Main.java:430)
	at com.altinity.ice.cli.Main.insert(Main.java:282)
	at com.altinity.ice.cli.Main.lambda$main$1(Main.java:480) [9 skipped]
	at com.altinity.ice.cli.Main.main(Main.java:487) [1 skipped]

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions