Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c2c5827

Browse files
fix
1 parent 31a81c1 commit c2c5827

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

data/src/test/java/org/apache/iceberg/data/RandomGenericData.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,7 @@ public Object list(Types.ListType list, Supplier<Object> elementResult) {
218218

219219
List<Object> result = Lists.newArrayListWithExpectedSize(numElements);
220220
for (int i = 0; i < numElements; i += 1) {
221-
// return null 5% of the time when the value is optional
222-
if (list.isElementOptional() && random.nextInt(20) == 1) {
221+
if (list.isElementOptional() && isNull()) {
223222
result.add(null);
224223
} else {
225224
result.add(elementResult.get());
@@ -251,8 +250,7 @@ public Object map(Types.MapType map, Supplier<Object> keyResult, Supplier<Object
251250

252251
keySet.add(key);
253252

254-
// return null 5% of the time when the value is optional
255-
if (map.isValueOptional() && random.nextInt(20) == 1) {
253+
if (map.isValueOptional() && isNull()) {
256254
result.put(key, null);
257255
} else {
258256
result.put(key, valueResult.get());

data/src/test/java/org/apache/iceberg/data/TestLocalScan.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.nio.ByteOrder;
3737
import java.nio.file.Files;
3838
import java.util.Arrays;
39+
import java.util.Comparator;
3940
import java.util.Iterator;
4041
import java.util.List;
4142
import java.util.Set;
@@ -263,9 +264,36 @@ public void testRandomData() throws IOException {
263264

264265
append.commit();
265266

266-
Set<Record> records = Sets.newHashSet(IcebergGenerics.read(table).build());
267+
RecordComparator comparator = new RecordComparator();
268+
List<Record> records = Lists.newArrayList(IcebergGenerics.read(table).build());
269+
270+
expected.sort(comparator);
271+
records.sort(comparator);
267272
assertThat(records).as("Should produce correct number of records").hasSameSizeAs(expected);
268-
assertThat(records).as("Random record set should match").isEqualTo(Sets.newHashSet(expected));
273+
assertThat(records).as("Random record set should match").isEqualTo(expected);
274+
}
275+
276+
class RecordComparator implements Comparator<Record> {
277+
278+
@Override
279+
public int compare(Record r1, Record r2) {
280+
long idComparison = r1.get(0, Long.class) - r2.get(0, Long.class);
281+
if (idComparison < 0) {
282+
return -1;
283+
} else if (idComparison > 0) {
284+
return 1;
285+
}
286+
287+
if (r1.get(1, String.class) == null) {
288+
return -1;
289+
}
290+
291+
if (r2.get(1, String.class) == null) {
292+
return 1;
293+
}
294+
295+
return r1.get(1, String.class).compareTo(r2.get(1, String.class));
296+
}
269297
}
270298

271299
@TestTemplate

0 commit comments

Comments
 (0)