-
Notifications
You must be signed in to change notification settings - Fork 319
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
[Bug report] bucket and truncate are missing width params in Gravitino SortOrder #2921
Comments
…et and truncate functions in Gravitino SortOrder
…et and truncate functions in Gravitino SortOrder
could you provide more context about why should we add |
@caican00 could you provide more information here? |
SortOrder in Iceberg supports FunctionExpression, such as However, in gravitino, when converting an iceberg sortorder with This picture shows the details of the parameters of the And if we want to convert the gravitino sortOrder with
|
@FANNG1 may i ask there is anything else I need to provide? |
ok, I got the context, will review it later. |
… truncate functions in Gravitino SortOrder (#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: #2921 ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? New UTs and ITs.
… truncate functions in Gravitino SortOrder (#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: #2921 ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? New UTs and ITs.
…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.
… truncate functions in Gravitino SortOrder (#3530) ### 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: #2921 ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? New UTs and ITs.
…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.
Version
main branch
Describe what's wrong
bucket and truncate are missing width params in Gravitino SortOrder, as shown in the following picture:
Error message and/or stacktrace
None
How to reproduce
None
Additional context
No response
The text was updated successfully, but these errors were encountered: