Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.7.2
Description
Since the `RowTypeInfo#equals()` does not consider the fieldNames , when process data with RowTypeInfo type there may comes an error of the field name.
String [] fields = new String []{"first", "second"}; TypeInformation<?>[] types = new TypeInformation[]{ Types.ROW_NAMED(new String[]{"first001"}, Types.INT), Types.ROW_NAMED(new String[]{"second002"}, Types.INT) }; StreamExecutionEnvironment execEnv = StreamExecutionEnvironment.getExecutionEnvironment(); StreamTableEnvironment env = StreamTableEnvironment.getTableEnvironment(execEnv); SimpleProcessionTimeSource streamTableSource = new SimpleProcessionTimeSource(fields, types); env.registerTableSource("testSource", streamTableSource); Table sourceTable = env.scan("testSource"); System.out.println("Source table schema : "); sourceTable.printSchema();
The table shcema will be
Source table schema : root |-- first: Row(first001: Integer) |-- second: Row(first001: Integer) |-- timestamp: TimeIndicatorTypeInfo(proctime)
the second field has the same name with the first field.
So, we should consider the fieldnames in RowTypeInfo#equals()