aljoscha commented on a change in pull request #14420:
URL: https://github.com/apache/flink/pull/14420#discussion_r545723399
##########
File path:
flink-core/src/test/java/org/apache/flink/testutils/DeeplyEqualsChecker.java
##########
@@ -90,8 +88,6 @@ private boolean deepEquals0(Object e1, Object e2) {
return deepEqualsArray(e1, e2);
} else if (e1 instanceof Tuple && e2 instanceof Tuple) {
return deepEqualsTuple((Tuple) e1, (Tuple) e2);
- } else if (e1 instanceof Row && e2 instanceof Row) {
Review comment:
This is not needed anymore because the Row itself now does the deep
equals, right?
##########
File path:
flink-core/src/main/java/org/apache/flink/api/java/typeutils/runtime/RowSerializer.java
##########
@@ -71,19 +82,34 @@
private final int arity;
+ private final @Nullable LinkedHashMap<String, Integer> positionByName;
+
private transient boolean[] mask;
+ private transient Row reuseRowPositionBased;
+
public RowSerializer(TypeSerializer<?>[] fieldSerializers) {
- this(fieldSerializers, false);
+ this(fieldSerializers, null, false);
+ }
+
+ public RowSerializer(
+ TypeSerializer<?>[] fieldSerializers,
+ @Nullable LinkedHashMap<String, Integer>
positionByName) {
+ this(fieldSerializers, positionByName, false);
}
@SuppressWarnings("unchecked")
- public RowSerializer(TypeSerializer<?>[] fieldSerializers, boolean
legacyModeEnabled) {
+ public RowSerializer(
+ TypeSerializer<?>[] fieldSerializers,
+ @Nullable LinkedHashMap<String, Integer> positionByName,
+ boolean legacyModeEnabled) {
Review comment:
I was wondering if it wouldn't make sense to drop legacy mode now, for
Flink 1.13.
##########
File path:
flink-table/flink-table-runtime-blink/src/main/java/org/apache/flink/table/data/conversion/RowRowConverter.java
##########
@@ -58,22 +67,48 @@ public void open(ClassLoader classLoader) {
public RowData toInternal(Row external) {
final int length = fieldConverters.length;
final GenericRowData genericRow = new
GenericRowData(external.getKind(), length);
- for (int pos = 0; pos < length; pos++) {
- final Object value = external.getField(pos);
- genericRow.setField(pos,
fieldConverters[pos].toInternalOrNull(value));
+
+ final Set<String> fieldNames = external.getFieldNames(false);
Review comment:
It would be interesting to see in benchmarks what the impact of this is,
and of name-based field access in general.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]