gene-db commented on code in PR #11324: URL: https://github.com/apache/iceberg/pull/11324#discussion_r1805378000
########## api/src/main/java/org/apache/iceberg/VariantLike.java: ########## @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.iceberg; + +import java.math.BigDecimal; + +/** + * Interface for accessing Variant fields. + * + * <p>This interface supports accessing data in top-level fields, not in nested fields. + */ +public interface VariantLike { + int size(); + + VariantLike getFieldByKey(String key); Review Comment: I think this will depend on how the path navigation would work. In Spark, we parse the path string in Spark, and do the final cast in Spark. This is because parsing and casting semantics are related to the Spark engine. This means, Spark parses the path string, then uses each element of the path to repeatedly retrieve/navigate the variant (via util function), until we reach the end. Then Spark will take the final variant and do the cast. I don't think there would be a big performance difference if we just passed in a list/array of path elements to a util function, and have the utility do the entire path navigation. In the end, Spark would still want to do the final cast within Spark. I'm not sure how this class will be used in Iceberg, but the APIs will probably be determined by the usage requirements. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org