[ 
https://issues.apache.org/jira/browse/FLINK-37625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated FLINK-37625:
-----------------------------------
    Labels: pull-request-available  (was: )

> PyFlink Table API skips validation for Rows created with positional arguments
> -----------------------------------------------------------------------------
>
>                 Key: FLINK-37625
>                 URL: https://issues.apache.org/jira/browse/FLINK-37625
>             Project: Flink
>          Issue Type: Bug
>          Components: API / Python
>            Reporter: Mika Naylor
>            Assignee: Mika Naylor
>            Priority: Minor
>              Labels: pull-request-available
>
> When creating a table using {{{}TableEnvironment.from_elements{}}}, the Table 
> API skips type validation on any Row elements that were created using 
> positional arguments, rather than keyword arguments.
>  
> For example, take a table with a single column, whose type is an array of 
> {{{}Row{}}}s. These rows have 2 columns, {{a VARCHAR}} and {{{}b BOOLEAN{}}}. 
> If we create a table with elements where one of these rows has columns in the 
> wrong order:
> {code:java}
> schema = DataTypes.ROW(
>     [
>         DataTypes.FIELD(
>             "col",
>             DataTypes.ARRAY(
>                 DataTypes.ROW(
>                     [
>                         DataTypes.FIELD("a", DataTypes.STRING()),
>                         DataTypes.FIELD("b", DataTypes.BOOLEAN()),
>                     ]
>                 )
>             ),
>         ),
>     ]
> ) 
> elements = [(
>     [("pyflink", True), ("pyflink", False), (True, "pyflink")],
> )] 
> table = self.t_env.from_elements(elements, schema)
> table_result = list(table.execute().collect()){code}
> This results in a type validation error:
> {code:java}
> TypeError: field a in element in array field col: VARCHAR can not accept 
> object True in type <class 'bool'>{code}
> In an example where we use {{Row}} instead of tuples, but with column 
> arguments:
> {code:java}
> elements = [(
>     [Row(a="pyflink", b=True), Row(a="pyflink", b=False), Row(a=True, 
> b="pyflink")],
> )]{code}
> We also get the same type validation error. However, when we use {{Row}} with 
> positional arguments:
> {code:java}
> elements = [(
>     [Row("pyflink", True), Row("pyflink", False), Row(True, "pyflink")],
> )]{code}
> the type validation is skipped, leading to an unpickling error when 
> collecting:
> {code:java}
> >           data = pickle.loads(data)
> E           EOFError: Ran out of input {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to