[ASTERIXDB-2969][TEST] Fix duplicate alias bug in array index RQG query-gen
- user model changes: no
- storage format changes: no
- interface changes: no
There was an issue with the query generation portion of the array index
RQG test. This has been fixed by only generating unique endpoint indexed
field names.
Change-Id: I9109210690439fe332b14e7bd79f1b09aa4096bf
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/13343
Reviewed-by: Ian Maxon <imaxon@uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/array/ArrayDataset.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/array/ArrayDataset.java
index d943953..16088b2 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/array/ArrayDataset.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/array/ArrayDataset.java
@@ -38,8 +38,9 @@
public static final String[] VALUES_FOR_ADDITIONAL_GROUPS = new String[] { "1", "2", "3", "4", "5" };
public static final String[] VALUES_FOR_ADDITIONAL_FIELDS = new String[] { "1", "2" };
- public static final String[] CONTAINER_OBJECT_NAMES = new String[] { "container_object_1", "container_object_2" };
public static final String[] CONTAINED_OBJECT_NAMES = new String[] { "contained_object_1", "contained_object_2" };
+ public static final String[] CONTAINER_OBJECT_NAMES = new String[] { "container_object_A", "container_object_B",
+ "container_object_C", "container_object_D", "container_object_E" };
private String fromBaseQuery;
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/array/ValueSupplierFactory.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/array/ValueSupplierFactory.java
index efacf78..0d63f12 100644
--- a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/array/ValueSupplierFactory.java
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/array/ValueSupplierFactory.java
@@ -44,6 +44,7 @@
private class BaseArrayIndexValueSupplier extends ArrayIndex.Builder.ValueSupplier {
private final Set<BaseWisconsinTable.Field> consumedFields = new LinkedHashSet<>();
+ private final Set<String> consumedContainedNames = new LinkedHashSet<>();
@Override
public BaseWisconsinTable.Field getAtomicBaseField() {
@@ -78,8 +79,16 @@
}
fieldName.add(baseField.fieldName);
if (randomGenerator.nextBoolean()) {
- int index = randomGenerator.nextInt(ArrayDataset.CONTAINED_OBJECT_NAMES.length);
- fieldName.add(ArrayDataset.CONTAINED_OBJECT_NAMES[index]);
+ // Three tries to generate a unique contained name. Otherwise, we default to no contained name.
+ for (int i = 0; i < 3; i++) {
+ int index = randomGenerator.nextInt(ArrayDataset.CONTAINED_OBJECT_NAMES.length);
+ String containedName = ArrayDataset.CONTAINED_OBJECT_NAMES[index];
+ if (!consumedContainedNames.contains(containedName)) {
+ fieldName.add(containedName);
+ consumedContainedNames.add(containedName);
+ break;
+ }
+ }
}
return fieldName;
}