Yunfeng Zhou created FLINK-32494:
------------------------------------
Summary: Cannot convert list literal to Table with PyFlink
Key: FLINK-32494
URL: https://issues.apache.org/jira/browse/FLINK-32494
Project: Flink
Issue Type: Bug
Components: API / Python
Affects Versions: 1.16.1
Reporter: Yunfeng Zhou
During my attempt to convert a list or array to a PyFlink Table using the
following program
{code:python}
from pyflink.datastream import StreamExecutionEnvironment
from pyflink.java_gateway import get_gateway
from pyflink.table import (
expressions as native_flink_expr,
StreamTableEnvironment,
)
from pyflink.table.types import DataTypes
if __name__ == "__main__":
env = StreamExecutionEnvironment.get_execution_environment()
t_env = StreamTableEnvironment.create(env)
table = t_env.from_elements([(1, ), (2, ), (3, )])
# table = table.add_or_replace_columns(
# native_flink_expr.lit([], DataTypes.ARRAY(DataTypes.INT()).not_null())
# )
table = table.add_or_replace_columns(
native_flink_expr.lit(get_gateway().new_array(get_gateway().jvm.java.lang.Integer,
0))
)
table.execute().print()
{code}
The following exception would be thrown
{code}
ClassCastException: [Ljava.lang.Integer; cannot be cast to java.util.List
{code}
If I use the following code to create the literal expression along with the
program above
{code:python}
table = table.add_or_replace_columns(
native_flink_expr.lit([], DataTypes.ARRAY(DataTypes.INT()).not_null())
)
{code}
The following exception would be thrown
{code}
Data type 'ARRAY<INT> NOT NULL' with conversion class '[Ljava.lang.Integer;'
does not support a value literal of class 'java.util.ArrayList'.
{code}
As PyFlink does not provide a document explaining how to create Table with list
literals, and my attempts described above both fail, there might be some bug in
PyFlink with this function.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)