forked from apache/gravitino
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[apache#2921] fix(catalog-lakehouse-iceberg): Add width param to buck…
…et and truncate functions in Gravitino SortOrder (apache#2928) ### What changes were proposed in this pull request? 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)` ### Why are the changes needed? 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 ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? New UTs and ITs.
- Loading branch information
Showing
7 changed files
with
204 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.