This is an automated email from the ASF dual-hosted git repository.
lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-paimon.git
The following commit(s) were added to refs/heads/master by this push:
new e12c6f85c [test] Fix the OrcFormatReadWriteTest (#1778)
e12c6f85c is described below
commit e12c6f85c543abca2cfe0961f8c852d44fe2e603
Author: Aitozi <[email protected]>
AuthorDate: Thu Aug 10 17:56:56 2023 +0800
[test] Fix the OrcFormatReadWriteTest (#1778)
---
.../apache/paimon/format/FormatReadWriteTest.java | 68 ++++++++++++++++------
.../paimon/format/orc/OrcFormatReadWriteTest.java | 4 +-
2 files changed, 53 insertions(+), 19 deletions(-)
diff --git
a/paimon-common/src/test/java/org/apache/paimon/format/FormatReadWriteTest.java
b/paimon-common/src/test/java/org/apache/paimon/format/FormatReadWriteTest.java
index 43194946d..5fe11ae01 100644
---
a/paimon-common/src/test/java/org/apache/paimon/format/FormatReadWriteTest.java
+++
b/paimon-common/src/test/java/org/apache/paimon/format/FormatReadWriteTest.java
@@ -32,6 +32,7 @@ import org.apache.paimon.fs.Path;
import org.apache.paimon.fs.PositionOutputStream;
import org.apache.paimon.fs.local.LocalFileIO;
import org.apache.paimon.reader.RecordReader;
+import org.apache.paimon.types.ArrayType;
import org.apache.paimon.types.DataType;
import org.apache.paimon.types.DataTypes;
import org.apache.paimon.types.RowType;
@@ -235,29 +236,46 @@ public abstract class FormatReadWriteTest {
}
private void validateFullTypesResult(InternalRow actual, InternalRow
expected) {
- if (formatType.equals("avro") || formatType.equals("orc")) {
+ if (formatType.equals("avro")) {
assertThat(actual).isEqualTo(expected);
} else {
RowType rowType = rowTypeForFullTypesTest();
InternalRow.FieldGetter[] fieldGetters = rowType.fieldGetters();
for (int i = 0; i < fieldGetters.length; i++) {
+ String name = rowType.getFieldNames().get(i);
Object actualField = fieldGetters[i].getFieldOrNull(actual);
Object expectedField =
fieldGetters[i].getFieldOrNull(expected);
- System.out.println(i);
- if (i == 3) {
- validateInternalMap((InternalMap) actualField,
(InternalMap) expectedField);
- } else if (i == 4) {
- validateInternalArray(
- (InternalArray) actualField,
- (InternalArray) expectedField,
- DataTypes.STRING());
- } else if (i == 5) {
- validateInternalArray(
- (InternalArray) actualField,
- (InternalArray) expectedField,
- DataTypes.INT());
- } else {
- assertThat(actualField).isEqualTo(expectedField);
+ switch (name) {
+ case "locations":
+ validateInternalMap((InternalMap) actualField,
(InternalMap) expectedField);
+ break;
+ case "strArray":
+ validateInternalArray(
+ (InternalArray) actualField,
+ (InternalArray) expectedField,
+ DataTypes.STRING());
+ break;
+ case "intArray":
+ validateInternalArray(
+ (InternalArray) actualField,
+ (InternalArray) expectedField,
+ DataTypes.INT());
+ break;
+ case "rowArray":
+ validateInternalArray(
+ (InternalArray) actualField,
+ (InternalArray) expectedField,
+ ((ArrayType)
+ rowType.getFields().stream()
+ .filter(f ->
f.name().equals("rowArray"))
+ .findAny()
+ .get()
+ .type())
+ .getElementType());
+ break;
+ default:
+ assertThat(actualField).isEqualTo(expectedField);
+ break;
}
}
}
@@ -265,11 +283,12 @@ public abstract class FormatReadWriteTest {
private void validateInternalMap(InternalMap actualMap, InternalMap
expectedMap) {
validateInternalArray(actualMap.keyArray(), expectedMap.keyArray(),
DataTypes.STRING());
- validateInternalArray(actualMap.valueArray(),
expectedMap.valueArray(), DataTypes.DOUBLE());
+ validateInternalArray(actualMap.valueArray(),
expectedMap.valueArray(), getMapValueType());
}
private void validateInternalArray(
InternalArray actualArray, InternalArray expectedArray, DataType
elementType) {
+ assertThat(actualArray.size()).isEqualTo(expectedArray.size());
switch (elementType.getTypeRoot()) {
case VARCHAR:
for (int i = 0; i < actualArray.size(); i++) {
@@ -282,6 +301,21 @@ public abstract class FormatReadWriteTest {
case INTEGER:
assertThat(actualArray.toIntArray()).isEqualTo(expectedArray.toIntArray());
break;
+ case ROW:
+ InternalArray.ElementGetter getter =
InternalArray.createElementGetter(elementType);
+ RowType rowType = (RowType) elementType;
+ for (int i = 0; i < expectedArray.size(); i++) {
+ InternalRow actual = (InternalRow)
getter.getElementOrNull(actualArray, i);
+ InternalRow expected = (InternalRow)
getter.getElementOrNull(expectedArray, i);
+
assertThat(actual.getFieldCount()).isEqualTo(expected.getFieldCount());
+ for (int j = 0; j < actual.getFieldCount(); j++) {
+ InternalRow.FieldGetter fieldGetter =
+
InternalRow.createFieldGetter(rowType.getTypeAt(j), j);
+ assertThat(fieldGetter.getFieldOrNull(expected))
+ .isEqualTo(fieldGetter.getFieldOrNull(actual));
+ }
+ }
+ break;
default:
throw new UnsupportedOperationException(
"Haven't implemented array comparing for type "
diff --git
a/paimon-format/src/test/java/org/apache/paimon/format/orc/OrcFormatReadWriteTest.java
b/paimon-format/src/test/java/org/apache/paimon/format/orc/OrcFormatReadWriteTest.java
index 3d3d03fcc..3e6805862 100644
---
a/paimon-format/src/test/java/org/apache/paimon/format/orc/OrcFormatReadWriteTest.java
+++
b/paimon-format/src/test/java/org/apache/paimon/format/orc/OrcFormatReadWriteTest.java
@@ -19,8 +19,8 @@
package org.apache.paimon.format.orc;
import org.apache.paimon.format.FileFormat;
+import org.apache.paimon.format.FileFormatFactory;
import org.apache.paimon.format.FormatReadWriteTest;
-import org.apache.paimon.format.avro.AvroFileFormat;
import org.apache.paimon.options.Options;
/** An orc {@link FormatReadWriteTest}. */
@@ -32,6 +32,6 @@ public class OrcFormatReadWriteTest extends
FormatReadWriteTest {
@Override
protected FileFormat fileFormat() {
- return new AvroFileFormat(new Options());
+ return new OrcFileFormat(new FileFormatFactory.FormatContext(new
Options(), 1024));
}
}