Altinity / Altinity/ice

struct datatype not supported

Open
#58 2 comments 0 reactions 1 assignee View on GitHub

@xieandrew is already working on this.

Since Jan 27, 2026.

Dominant language
Java
Stars
35
Forks
7
Avg merge
5d 12h
Merged PRs (30d)
2

Description

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]

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.