Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#2921] fix(catalog-lakehouse-iceberg): Add width param to bucket and truncate functions in Gravitino SortOrder #3530

Merged
merged 1 commit into from
May 23, 2024

Commits on May 23, 2024

  1. [apache#2921] fix(catalog-lakehouse-iceberg): Add width param to buck…

    …et and truncate functions in Gravitino SortOrder (apache#2928)
    
    Add width param to bucket and truncate functions in Gravitino SortOrder.
    for example:
    change `bucket([id]) `to `bucket(10, id)`
    change `truncate([name]) `to `truncate(2, name)`
    
    SortOrder in Iceberg supports `FunctionExpression`, such as `year,
    month, bucket, truncate, etc`.
    `truncate` and `bucket` functions both have two parameters, such as
    `bucket(10, col1), truncate(2, col2)`.
    
    However, in gravitino, when converting an iceberg sortorder with
    `bucket` or `truncate` to gravitino sortOrder, there is only one
    parameter in `bucket` and `truncate` functions.
    
    This picture shows the details of the parameters of the `bucket` and
    `truncate` functions in gravitino sortorder, we can test it in
    `com.datastrato.gravitino.catalog.lakehouse.iceberg.converter.TestFromIcebergSortOrder#testFromSortOrder`
    
    ![image](https://github.com/datastrato/gravitino/assets/94670132/06fd65f5-7d33-4197-8871-dda02fd70a26)
    
    And if we want to convert the gravitino sortOrder with `bucket` or
    `truncate` to iceberg sortOrder, we will get the following error as the
    first param is missing.
    ```
    java.lang.IllegalArgumentException: Bucket sort should have 2 arguments
    
    	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:143)
    	at com.datastrato.gravitino.catalog.lakehouse.iceberg.converter.ToIcebergSortOrder.toSortOrder(ToIcebergSortOrder.java:56)
    	at com.datastrato.gravitino.catalog.lakehouse.iceberg.converter.TestFromIcebergSortOrder.testFromSortOrder(TestFromIcebergSortOrder.java:86)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
    	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
    ```
    
    Fix: apache#2921
    
    No
    
    New UTs and ITs.
    caican00 committed May 23, 2024
    Configuration menu
    Copy the full SHA
    3654b15 View commit details
    Browse the repository at this point in the history