[
https://issues.apache.org/jira/browse/DRILL-6603?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16549200#comment-16549200
]
ASF GitHub Bot commented on DRILL-6603:
---------------------------------------
vvysotskyi closed pull request #1387: DRILL-6603: Set num_nulls for parquet
statistics to -1 when actual number is not defined.
URL: https://github.com/apache/drill/pull/1387
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/stat/ParquetPredicatesHelper.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/stat/ParquetPredicatesHelper.java
index de4df1f5b97..f02976b35c1 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/expr/stat/ParquetPredicatesHelper.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/expr/stat/ParquetPredicatesHelper.java
@@ -54,7 +54,7 @@ static boolean isAllNulls(Statistics stat, long rowCount) {
* @return <tt>true</tt> if the parquet file does not have nulls and
<tt>false</tt> otherwise
*/
static boolean hasNoNulls(Statistics stat) {
- return stat.getNumNulls() <= 0;
+ return stat.getNumNulls() == 0;
}
}
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScanStatistics.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScanStatistics.java
index 5a3e0c2e4be..f7d56871951 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScanStatistics.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetGroupScanStatistics.java
@@ -89,12 +89,12 @@ public void collect(List<RowGroupInfo> rowGroupInfos,
ParquetTableMetadataBase p
SchemaPath schemaPath = SchemaPath.getCompoundPath(column.getName());
Long previousCount = columnValueCounts.get(schemaPath);
if (previousCount != null) {
- if (previousCount != GroupScan.NO_COLUMN_STATS && column.getNulls()
!= null) {
+ if (previousCount != GroupScan.NO_COLUMN_STATS &&
column.isNumNullsSet()) {
Long newCount = rowCount - column.getNulls();
columnValueCounts.put(schemaPath,
columnValueCounts.get(schemaPath) + newCount);
}
} else {
- if (column.getNulls() != null) {
+ if (column.isNumNullsSet()) {
Long newCount = rowCount - column.getNulls();
columnValueCounts.put(schemaPath, newCount);
} else {
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/Metadata.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/Metadata.java
index 225916999d1..b92f647eac7 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/Metadata.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/Metadata.java
@@ -64,7 +64,6 @@
import java.io.OutputStream;
import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@@ -447,47 +446,40 @@ private ParquetFileMetadata_v3
getParquetFileMetadata_v3(ParquetTableMetadata_v3
logger.debug(containsCorruptDates.toString());
}
for (BlockMetaData rowGroup : metadata.getBlocks()) {
- List<ColumnMetadata_v3> columnMetadataList = Lists.newArrayList();
+ List<ColumnMetadata_v3> columnMetadataList = new ArrayList<>();
long length = 0;
for (ColumnChunkMetaData col : rowGroup.getColumns()) {
- ColumnMetadata_v3 columnMetadata;
-
- boolean statsAvailable = (col.getStatistics() != null &&
!col.getStatistics().isEmpty());
-
Statistics<?> stats = col.getStatistics();
String[] columnName = col.getPath().toArray();
SchemaPath columnSchemaName = SchemaPath.getCompoundPath(columnName);
ColTypeInfo colTypeInfo = colTypeInfoMap.get(columnSchemaName);
ColumnTypeMetadata_v3 columnTypeMetadata =
- new ColumnTypeMetadata_v3(columnName, col.getType(),
colTypeInfo.originalType,
+ new ColumnTypeMetadata_v3(columnName,
col.getPrimitiveType().getPrimitiveTypeName(), colTypeInfo.originalType,
colTypeInfo.precision, colTypeInfo.scale,
colTypeInfo.repetitionLevel, colTypeInfo.definitionLevel);
if (parquetTableMetadata.columnTypeInfo == null) {
parquetTableMetadata.columnTypeInfo = new ConcurrentHashMap<>();
}
+ parquetTableMetadata.columnTypeInfo.put(new
ColumnTypeMetadata_v3.Key(columnTypeMetadata.name), columnTypeMetadata);
+
// Save the column schema info. We'll merge it into one list
- parquetTableMetadata.columnTypeInfo
- .put(new ColumnTypeMetadata_v3.Key(columnTypeMetadata.name),
columnTypeMetadata);
+ Object minValue = null;
+ Object maxValue = null;
+ long numNulls = -1;
+ boolean statsAvailable = stats != null && !stats.isEmpty();
if (statsAvailable) {
- // Write stats when they are not null
- Object minValue = null;
- Object maxValue = null;
if (stats.hasNonNullValue()) {
minValue = stats.genericGetMin();
maxValue = stats.genericGetMax();
- if (containsCorruptDates ==
ParquetReaderUtility.DateCorruptionStatus.META_SHOWS_CORRUPTION
- && columnTypeMetadata.originalType == OriginalType.DATE) {
+ if (containsCorruptDates ==
ParquetReaderUtility.DateCorruptionStatus.META_SHOWS_CORRUPTION &&
columnTypeMetadata.originalType == OriginalType.DATE) {
minValue =
ParquetReaderUtility.autoCorrectCorruptedDate((Integer) minValue);
maxValue =
ParquetReaderUtility.autoCorrectCorruptedDate((Integer) maxValue);
}
-
}
- columnMetadata =
- new ColumnMetadata_v3(columnTypeMetadata.name, col.getType(),
minValue, maxValue, stats.getNumNulls());
- } else {
- columnMetadata = new ColumnMetadata_v3(columnTypeMetadata.name,
col.getType(), null, null, null);
+ numNulls = stats.getNumNulls();
}
+ ColumnMetadata_v3 columnMetadata = new
ColumnMetadata_v3(columnTypeMetadata.name,
col.getPrimitiveType().getPrimitiveTypeName(), minValue, maxValue, numNulls);
columnMetadataList.add(columnMetadata);
length += col.getTotalSize();
}
@@ -632,12 +624,7 @@ private void readBlockMeta(Path path, boolean dirsOnly,
MetadataContext metaCont
List<? extends ParquetFileMetadata> files =
parquetTableMetadata.getFiles();
for (ParquetFileMetadata file : files) {
List<? extends RowGroupMetadata> rowGroups = file.getRowGroups();
- for (Iterator<? extends RowGroupMetadata> iter =
rowGroups.iterator(); iter.hasNext(); ) {
- RowGroupMetadata r = iter.next();
- if (r.getRowCount() == 0) {
- iter.remove();
- }
- }
+ rowGroups.removeIf(r -> r.getRowCount() == 0);
}
}
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/MetadataBase.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/MetadataBase.java
index d7d56c36edf..bed8be67ab5 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/MetadataBase.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/MetadataBase.java
@@ -45,10 +45,7 @@
* <p>
* Note: keep metadata versions synchronized with {@link
MetadataVersion.Constants}
*/
- @JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
- include = JsonTypeInfo.As.PROPERTY,
- property = "metadata_version",
- visible = true)
+ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "metadata_version",
visible = true)
@JsonSubTypes({
@JsonSubTypes.Type(value = Metadata_V1.ParquetTableMetadata_v1.class,
name = V1),
@JsonSubTypes.Type(value = Metadata_V2.ParquetTableMetadata_v2.class,
name = V2),
@@ -108,6 +105,18 @@
public static abstract class ColumnMetadata {
+
+ /**
+ * Number of nulls is considered to be valid if its value is not null and
-1.
+ *
+ * @return true if nulls value is defined, false otherwise
+ */
+ @JsonIgnore
+ public boolean isNumNullsSet() {
+ Long nulls = getNulls();
+ return nulls != null && nulls != -1;
+ }
+
public abstract String[] getName();
public abstract Long getNulls();
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/Metadata_V3.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/Metadata_V3.java
index f378a703c44..4bb07f78f6d 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/Metadata_V3.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/metadata/Metadata_V3.java
@@ -21,10 +21,6 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.KeyDeserializer;
import com.fasterxml.jackson.databind.SerializerProvider;
@@ -317,8 +313,7 @@ public DeSerializer() {
}
@Override
- public Object deserializeKey(String key,
com.fasterxml.jackson.databind.DeserializationContext ctxt)
- throws IOException,
com.fasterxml.jackson.core.JsonProcessingException {
+ public Object deserializeKey(String key,
com.fasterxml.jackson.databind.DeserializationContext ctxt) {
// key string should contain '`' char if the field was serialized as
SchemaPath object
if (key.contains("`")) {
return new Key(SchemaPath.parseFromString(key));
@@ -391,10 +386,10 @@ public ColumnMetadata_v3(String[] name,
PrimitiveType.PrimitiveTypeName primitiv
*/
@Override
public boolean hasSingleValue(long rowCount) {
- if (nulls != null) {
+ if (isNumNullsSet()) {
if (minValue != null) {
// Objects.deepEquals() is used here, since min and max may be byte
arrays
- return Objects.deepEquals(minValue, maxValue) && (nulls == 0 ||
nulls == rowCount);
+ return (nulls == 0 || nulls == rowCount) &&
Objects.deepEquals(minValue, maxValue);
} else {
return nulls == rowCount && maxValue == null;
}
@@ -418,19 +413,10 @@ public boolean hasSingleValue(long rowCount) {
return null;
}
- public static class DeSerializer extends
JsonDeserializer<ColumnMetadata_v3> {
- @Override public ColumnMetadata_v3 deserialize(JsonParser jp,
DeserializationContext ctxt)
- throws IOException, JsonProcessingException {
- return null;
- }
- }
-
-
// We use a custom serializer and write only non null values.
public static class Serializer extends JsonSerializer<ColumnMetadata_v3> {
@Override
- public void serialize(ColumnMetadata_v3 value, JsonGenerator jgen,
SerializerProvider provider)
- throws IOException, JsonProcessingException {
+ public void serialize(ColumnMetadata_v3 value, JsonGenerator jgen,
SerializerProvider provider) throws IOException {
jgen.writeStartObject();
jgen.writeArrayFieldStart("name");
for (String n : value.name) {
diff --git
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/stat/ParquetMetaStatCollector.java
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/stat/ParquetMetaStatCollector.java
index 933d8ee0eb8..437074ebd05 100644
---
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/stat/ParquetMetaStatCollector.java
+++
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/stat/ParquetMetaStatCollector.java
@@ -95,7 +95,7 @@ public ParquetMetaStatCollector(ParquetTableMetadataBase
parquetTableMetadata,
if (columnMetadata != null) {
final Object min = columnMetadata.getMinValue();
final Object max = columnMetadata.getMaxValue();
- final Long numNull = columnMetadata.getNulls();
+ final long numNulls = columnMetadata.getNulls() == null ? -1 :
columnMetadata.getNulls();
primitiveType =
this.parquetTableMetadata.getPrimitiveType(columnMetadata.getName());
originalType =
this.parquetTableMetadata.getOriginalType(columnMetadata.getName());
@@ -109,7 +109,7 @@ public ParquetMetaStatCollector(ParquetTableMetadataBase
parquetTableMetadata,
precision = columnTypeInfo.precision;
}
- statMap.put(field, getStat(min, max, numNull, primitiveType,
originalType, scale, precision));
+ statMap.put(field, getStat(min, max, numNulls, primitiveType,
originalType, scale, precision));
} else {
final String columnName = field.getRootSegment().getPath();
if (implicitColValues.containsKey(columnName)) {
@@ -137,24 +137,21 @@ public ParquetMetaStatCollector(ParquetTableMetadataBase
parquetTableMetadata,
*
* @param min min value for statistics
* @param max max value for statistics
- * @param numNull num_nulls for statistics
+ * @param numNulls num_nulls for statistics
* @param primitiveType type that determines statistics class
* @param originalType type that determines statistics class
* @param scale scale value (used for DECIMAL type)
* @param precision precision value (used for DECIMAL type)
* @return column statistics
*/
- private ColumnStatistics getStat(Object min, Object max, Long numNull,
+ private ColumnStatistics getStat(Object min, Object max, long numNulls,
PrimitiveType.PrimitiveTypeName
primitiveType, OriginalType originalType,
int scale, int precision) {
Statistics stat = Statistics.getStatsBasedOnType(primitiveType);
Statistics convertedStat = stat;
TypeProtos.MajorType type = ParquetReaderUtility.getType(primitiveType,
originalType, scale, precision);
-
- if (numNull != null) {
- stat.setNumNulls(numNull);
- }
+ stat.setNumNulls(numNulls);
if (min != null && max != null ) {
switch (type.getMinorType()) {
diff --git
a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/TestConvertCountToDirectScan.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/TestConvertCountToDirectScan.java
index cb7f22ce4fb..fd2c1b22292 100644
---
a/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/TestConvertCountToDirectScan.java
+++
b/exec/java-exec/src/test/java/org/apache/drill/exec/planner/logical/TestConvertCountToDirectScan.java
@@ -35,21 +35,16 @@ public static void setupTestFiles() {
}
@Test
- public void ensureCaseDoesntConvertToDirectScan() throws Exception {
+ public void ensureCaseDoesNotConvertToDirectScan() throws Exception {
testPlanMatchingPatterns(
"select count(case when n_name = 'ALGERIA' and n_regionkey = 2 then
n_nationkey else null end) as cnt\n" +
- "from dfs.`directcount.parquet`",
- new String[] { "CASE" },
- new String[]{});
+ "from dfs.`directcount.parquet`", new String[]{"CASE"});
}
@Test
public void ensureConvertSimpleCountToDirectScan() throws Exception {
- final String sql = "select count(*) as cnt from cp.`tpch/nation.parquet`";
- testPlanMatchingPatterns(
- sql,
- new String[] { "DynamicPojoRecordReader" },
- new String[]{});
+ String sql = "select count(*) as cnt from cp.`tpch/nation.parquet`";
+ testPlanMatchingPatterns(sql, new String[]{"DynamicPojoRecordReader"});
testBuilder()
.sqlQuery(sql)
@@ -61,11 +56,8 @@ public void ensureConvertSimpleCountToDirectScan() throws
Exception {
@Test
public void ensureConvertSimpleCountConstToDirectScan() throws Exception {
- final String sql = "select count(100) as cnt from
cp.`tpch/nation.parquet`";
- testPlanMatchingPatterns(
- sql,
- new String[] { "DynamicPojoRecordReader" },
- new String[]{});
+ String sql = "select count(100) as cnt from cp.`tpch/nation.parquet`";
+ testPlanMatchingPatterns(sql, new String[]{"DynamicPojoRecordReader"});
testBuilder()
.sqlQuery(sql)
@@ -77,11 +69,8 @@ public void ensureConvertSimpleCountConstToDirectScan()
throws Exception {
@Test
public void ensureConvertSimpleCountConstExprToDirectScan() throws Exception
{
- final String sql = "select count(1 + 2) as cnt from
cp.`tpch/nation.parquet`";
- testPlanMatchingPatterns(
- sql,
- new String[] { "DynamicPojoRecordReader" },
- new String[]{});
+ String sql = "select count(1 + 2) as cnt from cp.`tpch/nation.parquet`";
+ testPlanMatchingPatterns(sql, new String[]{"DynamicPojoRecordReader"});
testBuilder()
.sqlQuery(sql)
@@ -93,11 +82,8 @@ public void ensureConvertSimpleCountConstExprToDirectScan()
throws Exception {
@Test
public void ensureDoesNotConvertForDirectoryColumns() throws Exception {
- final String sql = "select count(dir0) as cnt from
cp.`tpch/nation.parquet`";
- testPlanMatchingPatterns(
- sql,
- new String[] { "ParquetGroupScan" },
- new String[]{});
+ String sql = "select count(dir0) as cnt from cp.`tpch/nation.parquet`";
+ testPlanMatchingPatterns(sql, new String[]{"ParquetGroupScan"});
testBuilder()
.sqlQuery(sql)
@@ -109,11 +95,8 @@ public void ensureDoesNotConvertForDirectoryColumns()
throws Exception {
@Test
public void ensureConvertForImplicitColumns() throws Exception {
- final String sql = "select count(fqn) as cnt from
cp.`tpch/nation.parquet`";
- testPlanMatchingPatterns(
- sql,
- new String[] { "DynamicPojoRecordReader" },
- new String[]{});
+ String sql = "select count(fqn) as cnt from cp.`tpch/nation.parquet`";
+ testPlanMatchingPatterns(sql, new String[]{"DynamicPojoRecordReader"});
testBuilder()
.sqlQuery(sql)
@@ -126,25 +109,22 @@ public void ensureConvertForImplicitColumns() throws
Exception {
@Test
public void ensureConvertForSeveralColumns() throws Exception {
test("use dfs.tmp");
- final String tableName = "parquet_table_counts";
+ String tableName = "parquet_table_counts";
try {
- final String newFqnColumnName = "new_fqn";
+ String newFqnColumnName = "new_fqn";
test("alter session set `%s` = '%s'",
ExecConstants.IMPLICIT_FQN_COLUMN_LABEL, newFqnColumnName);
test("create table %s as select * from
cp.`parquet/alltypes_optional.parquet`", tableName);
test("refresh table metadata %s", tableName);
- final String sql = String.format("select\n" +
+ String sql = String.format("select\n" +
"count(%s) as implicit_count,\n" +
"count(*) as star_count,\n" +
"count(col_int) as int_column_count,\n" +
"count(col_vrchr) as vrchr_column_count\n" +
"from %s", newFqnColumnName, tableName);
- testPlanMatchingPatterns(
- sql,
- new String[] { "DynamicPojoRecordReader" },
- new String[]{});
+ testPlanMatchingPatterns(sql, new String[]{"DynamicPojoRecordReader"});
testBuilder()
.sqlQuery(sql)
@@ -159,4 +139,28 @@ public void ensureConvertForSeveralColumns() throws
Exception {
}
}
+ @Test
+ public void ensureCorrectCountWithMissingStatistics() throws Exception {
+ test("use dfs.tmp");
+ String tableName = "wide_str_table";
+ try {
+ // table will contain two partitions: one - with null value, second -
with non null value
+ test("create table %s partition by (col_str) as select * from
cp.`parquet/wide_string.parquet`", tableName);
+
+ String query = String.format("select count(col_str) as cnt_str, count(*)
as cnt_total from %s", tableName);
+
+ // direct scan should not be applied since we don't have statistics
+ testPlanMatchingPatterns(query, null, new
String[]{"DynamicPojoRecordReader"});
+
+ testBuilder()
+ .sqlQuery(query)
+ .unOrdered()
+ .baselineColumns("cnt_str", "cnt_total")
+ .baselineValues(1L, 2L)
+ .go();
+ } finally {
+ test("drop table if exists %s", tableName);
+ }
+ }
+
}
diff --git
a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetFilterPushDown.java
b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetFilterPushDown.java
index 3bbd39713ba..c871cccf719 100644
---
a/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetFilterPushDown.java
+++
b/exec/java-exec/src/test/java/org/apache/drill/exec/store/parquet/TestParquetFilterPushDown.java
@@ -454,6 +454,38 @@ public void testMultiRowGroup() throws Exception {
PlanTestBase.testPlanMatchingPatterns(sql, expectedPlan);
}
+ @Test
+ public void testWithMissingStatistics() throws Exception {
+ /*
+ wide_string.parquet
+
+ Schema:
+ message root {
+ optional binary col_str (UTF8);
+ }
+
+ Content:
+ first row -> `a` character repeated 2050 times
+ second row -> null
+ */
+ String tableName = "wide_string_table";
+ java.nio.file.Path wideStringFilePath = Paths.get("parquet",
"wide_string.parquet");
+ dirTestWatcher.copyResourceToRoot(wideStringFilePath, Paths.get(tableName,
"0_0_0.parquet"));
+ dirTestWatcher.copyResourceToRoot(wideStringFilePath, Paths.get(tableName,
"0_0_1.parquet"));
+
+ String query = String.format("select count(1) as cnt from dfs.`%s` where
col_str is null", tableName);
+
+ String[] expectedPlan = {"numRowGroups=2"};
+ PlanTestBase.testPlanMatchingPatterns(query, expectedPlan);
+
+ testBuilder()
+ .sqlQuery(query)
+ .unOrdered()
+ .baselineColumns("cnt")
+ .baselineValues(2L)
+ .go();
+ }
+
//////////////////////////////////////////////////////////////////////////////////////////////////
// Some test helper functions.
//////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/exec/java-exec/src/test/resources/parquet/wide_string.parquet
b/exec/java-exec/src/test/resources/parquet/wide_string.parquet
new file mode 100644
index 00000000000..a783bb8a263
Binary files /dev/null and
b/exec/java-exec/src/test/resources/parquet/wide_string.parquet differ
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Filter pushdown for a null value eliminates all except one rowgroup
> -------------------------------------------------------------------
>
> Key: DRILL-6603
> URL: https://issues.apache.org/jira/browse/DRILL-6603
> Project: Apache Drill
> Issue Type: Bug
> Components: Query Planning & Optimization, Storage - Parquet
> Affects Versions: 1.14.0
> Reporter: Robert Hou
> Assignee: Arina Ielchiieva
> Priority: Blocker
> Labels: ready-to-commit
> Fix For: 1.14.0
>
>
> Query is:
>
> /root/drillAutomation/framework-master/framework/resources/Advanced/data-shapes/wide-columns/5000/100000rows/parquet/q67.q
> {code:sql}
> select * from widestrings where str_var is null and dec_var_prec5_sc2 between
> 10 and 15
> {code}
> This query should return 5 rows. It is missing 3 rows.
> {code:bash}
> 1664 IaYIEviH tJHD
> 6nF33QQJn1p4uuTELHOR2z0FCzMK35JkNeDRKCduYKUiPaXFgwftf4Ciidk2d7IXxyrCoX56Vsb
> ITcI9yxPpd3Gu6zkk2kktmZv9oHxMVE1ccVh2iGzU7greQuUEJ1oYFHGzGN9MEeKc5DqbHHT0F65NF1LE88CAudZW5bv6AiIj2D714q72g8ULd2WaazavWBQ6PgdKax
>
> 5kVvGkt9czWgZOH9CfT0ApOWUWZlQcvtVC2UumK6Q8tmE5f5yjKhTqvXOiistNIMo4K1NqG8U5t9V33b3h9Hk1ymyeGNMrb5Is1jB5nL9zlpyx3y46WoxV9GornIyrLw
> W4wxtVsbj2yFYuU65RdDzkNKezE0LsPtpXeEpJeFoFSP
> lF0wj8xSQg1wx5cfOMXBGNA1nvqTELCPCEzUvFj8hXQ3gANHJ9bOt7QFZhxWLlBhCevbqA40IgJntlf0cAJM6V562fpGd16Trt3mI4YQUOkf3luTVRcBJRpIdoP3ZzgvhnVrgfblboAFMZ8CzCaH7QrZf02fPtYJlBAdoJB6DMjqh6mbkphod1QGYOkE0jqLMCnKoZSpOG9Rk9dIFdlkIrvea0f1KDGAuAlYiTTsdgU4R6CowbVNfEyjIv0Wp1CXC6SzM1Vex6Ye7CrRptvn92SOQCsAElScXa1EuErruEAyIEvtWraXL5X42RxTBsH3TZTR6NVuUcpObKbVIx0kLTdbxIElf33x31QwXUfUVZ
> T4zHEpu6f4mLR6N9uLVG0Fza
> Glq3UxixhgxPXgZpQt9GqT3HJXHEn9F0KGaxhC9VCqSk119HrrJuMpHiYS34MCkw1iFhGFUsRKI3fTFaByicJeCIkjFwn2cr74lONdco4AAFdGGVN1cMgJmlOxUZE0Okv68DocVXUMSXCdcTBBmGL2h2gDIagThjo8sVXORponMNTrXEP068Zy7pNkVJyW10EoZwqE2IIcoKdixYsJvPc0mRWnk3gfSmB6uHWgKvgGq4yzzbGp3NT01z8IRYKbmSXTmLyk9rJjUYatoIi
>
> 757C2F0Yq0gceouo3LMaz9h4eyiC9psNiL3aoxquqrisayOjPs5esQzoY2iVmVZ7evrVCfxhe2AATFgTvk8Ek78y8s4nVNztlyluIrckfLbnOa25r1h9emJzooVV0Xj945xj5jAUHTZU9kCHKnmkcpEo0a7BdELbL0IvQlitXxbZBS86PlCltLGpLs
> fmYeUzJfpp0Cql3MAECSQQbW4ErwWScaZ5D
> rPfbbDZbF2m2ZtSPNn81G5zZBxfHgpuSm4UVrdd24NlLeG1mxwv
> zU1PbpjSCqbn8rUCWqn5LFafTrmSdtrCuFaknTpqmk1wR9cLnPF3cD xvh0EqSwvCmCTK9xCpZkJF
> 4WnBX6w5vg7gQkjvF1GOqP3LeV3qbJc
> SO68S2UrCBNYQKdWyq4HeGG3TTuFF4x74nWkPPi0txEGiGDoYRxPvEQzWyhZ8SHpHZ3
> 0UpHpuLWEXIO6VZlPJd4uC IaDEIaB
> rkCJ8TaIVvaBIf0t8FGY8MgXTWzKdUBkOcQawbODXRLEtdGABTnOqftRSfUSpdojmlwRIs8xJIKaxK9wSL67DKahL6E7CvDBaQx20G0o7u
>
> rMaponV4OZmHE45vaeAqfLSyWlNL4UvOstiDPaDd8nI08g9MSKFtYYxt3RxvydGxCtaYfgsl3KxjN5VHnAxkvChVlvdS2Yd8IBA
> 0dZwblnKUBibdQSgxcypDbRCPeAaOr169L9mrMv82w0V1Ndyt3qK
> wcpv5nKeO8P9kbVlWY9bGi9nxCVs804WBZMA9vc7AT4h7Jp0OsaHbJx0qyFyAnXP lu
> MMsOa28VxSW8thiTfIcx2qkdFN1KXrXpU4uo lxUOcJhH0HlyX6kLKhCnVqpG
> tFP93c5jJ7FdeSujFvxPgo1rQSN9DHXk4DR6nytgBrn2oGcM58zadRNaqoIL2wmWygQsnk7Euzypbg4KhlTICBl1mpb0JwbI7uaCudGcDNWIBMerY
> WgjahuC3QjIFd48o78CQSgqgQjzpHzdELrqMCKaKfdW4ihpHCA0sqNBYGQxxd
> T8iTWorOODkg5Kc7m4gPut8tuzEMOQus1xdajv9PqS8F7xwzAWyhymyYBJ8505HxZDuSFqBXSkpxGDh21fiBHkeKBC9RZp7r
> yD7i6xvRh47Vln0IxvnwcpahLltLr12yL0sDu9LXxHNAHU4gyvHud5J5xXJPD7r5xHXvtNOSiXVl
> hkBBib1k4IO9YjCgModazXNudTx2Mr8ccq6
> kNLKwnrwGdssm3JYyjBsUcXyLMHpS7vncUeKSw2rov4Hg4gTZU8sJMJMAJvu8d6IDJYMHULwrawKOhK8rDTP6sk9Hv27mCG8Gf9inG38Pik7AfnEtUIiZZozEsiSkWvAA7YiHlNDUuL3OX2FRgt2qu9T7zXtQkhon8uSv5FncUq17XB9idflAO0rWIK57HoilaXgIDrzG61kfSKZXpdKuwBVsRNmgJVDSedRsSihlcVDdZ7bmqsgzbvKhFri8lSh8ez6ttlXgF8h4wJ2985bVw5PUmLdeGjlbfrLF0f22vqGi11qz2GUltrjBmmBSrbCLpFUkwqqpATRoQEwo27qi5XwHYWWBqPN9rxF
>
> orktFM5SRwG2IJmx8li8sRRchYnNYQgH7iuwKqd69jJJTwwdYla2296Lhw88YHzL60aq2XomN0BNNSoY8cALvy0QIHZpCFd3EmBojr46d6c8nBYMXJLlgKNzklk8vMTKrjAgBQevUH4U7gbQpOIWVf7Tx2BIXkdRGwQYHAuJzU5gtDuDqhuddXkGdACMmp0tgJVP2tpMW05Z3OGs6jYKb5xtqHotIJd7tUM33J85fRYOEIoGOaRblZr7RF82nSOSpPQnDgnVUhJ1j
> mCY1ofeqG7QqeV6LTdRyRPgiiPwHF1Xgpb3feAJ804NmX7xOkDPvw0WeqxrSVMCto
> r8E64UsRFypZ
> wtzVAlTJKgTMpzA4xeuVXuk85mpEJTIQpNxPjU3vgAacENiejcRs68Y85Ncb5ymC3fD0WAyh23VIsy
> GqaCV9hIFrAs tMM2zlkqpoBsSwgODBEsizaJkb4ZOWJj3Z2Wttr08YPpXSO6
> IhQKD5SHqNXEDNar2UVZwFZbg1YJccvsjWEtfm0AUZ
> 3KHMUb3X1F3tWqIYrZucrsjUp2xfaGtqnsij4q7CRWhRucucjyKcKmiaGE7XllzVGPeHWmbtAFku355JLB2OlBXdsgWMVZFcaCOHff6OlSECOgdLGBSL297kgCVKLzDEvxS
>
> T4rb5neHQffvmAHOzdIuDGw1559XGVHwzz5lLoc3iSicYlwZTKN2VUOQPHRSqTI1hMJmgTcUaO3LEHyxL2so3EedaU9BSaTaA3kPefKSdu
> ibaW3h1
> WKkznSnlmVjhLzq5e5ywYzwA26EusRtJmAAiiSrYG20uO7ejp1AlorSgOAfM9B5qxQAqaDqQMUlvhlu7SjK46egz5kK3xtcoUfyxyUwAonh3iv
>
> VJPXdvxm8ZuZbnm82xLkh4MeWbClb0jH5E42m9aFp8GrSQzAwhzciocZJABwerP1sfITnG6EMyPKdl7FBIjJKjNcFOVabzQX966h6WYnAOKuaYdJWNGgKOISIcR6OwHIaUWjqV9w84VYxXutZJ1rRlbeUPT8ygTZmFk2FK2Ix02rBzt0nFkiTNmoZSilSzSOxSF
> iwtXmtDRtjrQPQCVKlZM3KrYjiJfOem8PIOA8wadL0lHN87gpEqUsrvpohZ8FRW
> ILoeDeWeBYO94JOrYv7JdirgNH7MBdmrMQOrBPpY6bdX3is62JWMm9c0Xv7jyEVdq3hkSsJLWEr4Gu8TZBfjrd9rVX0gqjlQZsk30UwEDjvtfufkYcJj2sGbJ3HzJdIh1MCHIoPb1YyacfzEvnQsnlQagfRu51vSF8qehDJ2AtCezy6hOdwberI4qgP8HMuBKRjoyN91ipykonft9himO44rJtkiREFA9opJA9jKWM8kYzICDmE2
> D3pZcmMGyUEyCY K7IEITWxzmISenhl1Ext2wzZxJoQcfLNU 8rmXNFLwxnJCEYq4bNrEn9IQw
> 6xhgjw8roQVEgL8NZTxtlcve8RAyLILFdfNsvvg7qa700PCc
> ZDX5BRZtdW9eweK3icrBR6bxsnbXqnwk6ZDIe8qx
> Gd0lbF5OFc5q1hgpSCi5VUAZr3qepzmwhsYGXILwKrDobtkjkHyacqBOjPVDSqukvmdzjKfPRBi
> 2GyOpnS6kvXjOUESvWBH1c AyOybXn4Zo55XF8ssFbjte6VzBTX
> GsBfyfS8gUwJBGW4oeJTnkX0sm0IIdw7H8n9L0IPFdGGEjji1qKokLyYQ0pkwUGmflenBCMekn3ib7rTfqoIQrp24psdlBVKN4vpfTX8fXiOVt5kUj1fd
> SMYUs8ilfzoz9kUsP79Cvp0jiWJ7Ako1EXJfhdPjlFbk2CwoL8SC
> oJ50I9qGMGWMIvjf3axMIY4M2kcYoYcC3O6WO0X55hDXNz0Dvlo
> O8rPg9jk4534WpxWwJ5IbH7TpiVUMLum7LcwV1k
> MrFQC07S86hVLikbG2cUcX2TQJkEC4or7ozP9vvtkZABiStExrYXe6YD1qE9GV0TQx9icryf3mDSGgLSqb57qFxmgzPG9hA3J5c0Spcw4HMVHeD9F4XhSS3ekcN7
> 6nVA7muxzVu3axi YtMz8OSVgnpbGI0c15N4GeZ56YALB7vKtTdiRXPWdeFdkuZd69
> DSEtshwypCKJyLD9Qvu
> sBQP8AfTPnIcStGEzxFjJFKtbEM5qCVDXDbCHtZwb1vy6XjfzRKXwt2xC3vQOC9AmFIQxjocuCLd7lAVzU1KqON3E5B6W56s18wnBlMNaYuILYIdjKM36WJN88Zdi0Hpdrr8Wygit
> h6XkhoZcSiHiQZ OJ0K0B3mNOZP nullnull null
> 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
> 125 13.70 (1 occurence(s))
> 89937
> XdiWhwde96BS3OiXQMsLe8HbX0GXS4MUUuUETQgK0OQmGGSj5naYO3B64tbWrMboVQtjS1dIiNXykA17T4OdD3elsojkpVlonIrYupky5BvcuszCJYXFiyx9YNxtqSE7omuT6FZtCYxy74lx
> PljFbdR0hnc0 bHvXd02ATs eyQEJ6W0OIWPogwZNMEdoMKVwBhrqWyGwvufnbVuL
> v0u8FuqxAF8b0FqUMlowJB48Akb6MAHXRCJ5UusfRE7pJcC69An6ozrWMWJj87EE2XHquUgi2mGgO8WPFqmHnjGnH0Be5G7FuKCAYJ9sEr8fmMUoAu5OFi0CQBHIZbhW5n1HJur
> m6DcIokJqEAS
> Uzw1QBi6e4rtze5H8IBhrnIFHrAVr50Pts4UIloB0l51P65YFyRxVAc1esKn9JD4lHSOSKvJm09AEEwGdB3YyPUoNYw4RCA6uq45m3EeIHhtRj198fFtyXOVn5HseUY4wVEi4CYxNdK8M1dD0M74Li9jtl9UhLYAhJj
>
> tn9uzd5gIKhPueQjUKtojIr8I3INtfGfG1LO6CJrSpxiI5AiqccvRXs9eTQmaPeVojwXgALBFowYfO1NQc6u5MAtyQ78F2dt
> 729rXqVYdc0bYb
> chl2YatkMMRjlyK5y8C4gfiEN4jwJRUCCRAYl7i901rAbAqNJQtIlh0qGxr4xY7O6Tiy607JBUb51H2E9nsQ3oE1tBiOaCng7DBv9yOyJZIfOC4SXbQoxrVB
>
> t0BZoSXTaOss7VIKBmufZxeabjbJ3wuQT2t4xghA8lZuX1ZYYvnscL341wlk8DMRsFrmQCXcjL2beETfq3lYhpOc7Zu347yb6Nw7G6HD7A4KhjiqQUCFQZ
> ajG6VR2Gwt5WQ09lHFoO9lbaYNWGaMAYy0
> zUiOh4wypda1qEd1sKsYAqfcyxaGgHthrMfcIRE064DVXo5zetPQHfNvF1sNqWUcKMCQq9H5mLpoIMQOoRQgJVfbIXND9gdoDAb64znqiBFqkXLBjKg2Eke
> d5YmgPzjiS easuQpU2BlGCO6bZxJBSwiCIev85vJxRi8qtlmjvZr0XxXPIoeHJEb3HRwR4KULev
> GrO17VMiww3EPpuSWyTjYYShu7PQPBsY4cM2djQrdGy36cJk0orYEFr2oOTEk6QsfetbDD2
> kc7Re81qxidjPn7ZuO2wTrDgxPQpPnpNxbD5PUv9WI1BV9pqDNpgLPaEOi8TimtgLCYJ5ChtdGcjF26kPgTeDWvRDrZGzIL4WgEAhA2BklrCraz5jAhXzhd8pFVEEfk1WgJD4CPsWUUhDaDpzpm50z9ZT
> ZJ3dz0z1lh
> o0byKNf6JdnMFCELOVGqbVTIdoji7HqOeOE5PagbSs38Zlb3JuVhswkBU4xl2gWvYuFBdHPxYIR4s697A3in2M5cEJc5DErqCVn9gvgfTMfZigECmcepgIMav2H6geaOWroGA9A61Xxe47gJCUEvw2SIgbZsWlXBNrBoki4
> XS mhspt3wqCmX fn
> CyfJyJxYtwrYPLyhpbjq7t7E8s0Ti2fkpzHN8o8zRMsNc8wnga6eDncTkc0DrKZJ9YmkhkNSMkhUcSyOCgRsGmH9Ckk
> F4MdyqLAEu IcY7
> 3kmo2EJYskHq8u0ztQfzOasy71YkMtduNzBNCnOAkvqIjAaAgEWElwtyJ8Me5KiWDfU6oKYkC7H04LKGXjIfxlmiYqx38Zz2J7PNbWLEsrqlhgLBZLoGS8
>
> HEilDzqi2HyuGaTXU6TvTLwmhXpUh6Fz01NnyfqfocibA89vo1dOO4hjWlkkrDngkohRqSaN1ro780VcHqCkaRN9Jz17eekkXnsKuTTsgteKrrM
> QySD vpkxcZXimB46E11J9gDgU9ipdEqoX9TMcuxNuHR7vCZ9NCsJezxOgI3uOdF3zKKT
> cc7cY7yi8r8cPCSTf9O813BRjbWhijrNYpZCwSIr27iUw6XH2IDVCQSMK5Q467 4EpQN0ksz
> Q3i9pZYhpfDmKU0ZXCabGLqbmr9zlumkvLKDZWStWXveIwOc2abt60hUHeRpds5ULZunIKGkVKC3O5ObOefLIOEiTIWscVKViiV3Z2BXD4Xbt
> 81CFghS
> LyFuSWTQNuTrdSmArgPnAFvKhkzrRNtogak0zPBMoacVpvlWOh9KxJ42gKVHJ6DqGBaU3iaEtzZIF85JpF2L8alri
> hmjTxXJnwsEBzQAyAA2cE4n27L4upDBaVHVfn17O qOXjfK0HvvNe25sq8O5DQuNFTzB
> Ztypdm4wWHE rX1LAbQAMqdit8APv
> CN6Ddl2JgHg60myKKao0Wxh6SR5YRsWBVDfWb9eFiAh0fe3EO1EN0KROEGik3rZv1Hl a6nJSLg
> DXc
> u7qJOvypDNmpDwUWi79068VN9kxuYOECfiqCwPpRiuFwWW8rLC3yJ3JbMaDIsXej7GTRmq5zXLf
> mPaYgz41XAyT2t0o52udbSUwxZeXh4eTnunkBD4ipo0B4U977K9aURoP8LeT7JervLSLHhMzmyDFQqFLkCRKeVdU5Pph9DTiatTGjH60E2ECTC4c2xwePWwus5qAWdyzotJfJHE7tF4Gmx
> kuq5A5YMdB0vFutf8gyCf m9VlkQIcGrO5ZSmM
> dpnPRRnZq8mA9O659o5nPJUMqDRJ6wDc84uyYr
> AFh7n9UHBvD4InToKwVjiGIRQfqr3kfyhXvf1KXIeRW98c4 VqXSgcB5HU
> yJlVOsv0fnN4zdFCyme07Qmw2gG8hQE zWnYgcK02rMSBR2TUNlNmcZl
> 1KPa2PiScPrA0xcfVmhJeJbpVY qWkKND9swbx5Mms
> XQfswEQ31K6xJ1UAUIUhhYqT7JnRF6zAqwCIjKRwT5shD0YR46Mm 2DH9aV90k9jGkjB982
> vNh0aEkd07s 4fmsJOD QZjEM3PFoHdg2XeW2lPgJrl
> jIzKQ1UbApvJl33RQdvY71Dy4VkE6RfZ74nbGU3KypUgulC2rCWYC6Kfcp5Ktkwzf8IvrbtXFi5uC6o8sA0pQpnf6jhSdTHfIWGZSsuRgFG4msE2pReo2Dbw8C3TFbxMBbbYGCg8Cyi03Eq0MGcUwa8oJ35WA
>
> VePPn7YugLdm4EKPiUet7X42VCLlTWIQXkZP5yExTsITBPVO69OSd2HIrYaJHRzbVWJDdHwCd5TIshG1EsZBBeC93WIKBU2AAkIqhGA3znAZWAJAX8O5FVzgWQu1oM3IdaX3lINxntUF
> SWT7n43RYPNrc1K6d
> In8eSGr5oAJFwR8GAkylrIKpmd0gFt7BZWyYJrsKeNGNXgL57ytIqnrWxi2mQHkaAWDroZg8BICLw4IKR9wHAkD9xPxO7861ANJ4WspqwlaEUrJzDYFDQPEh18FIkuvSWNYJ7scQXxBiSZoLZDWaDY5D2d1lbpIRjKOwtGJkiyTFfnEz9I1g8fS4u9TEP6Pdt7O6vH1A762ClY1nyHhLvhDpvCFAKvOi5WV6rpc7PR3ywhw6kjX1UvDLBzcXT49NuciEGD9JtgckEWw7shxiwg3OPqvOYjtC75Cm543VANWSkxegubI8HSGYaC3hfp66wEwTJNAvjai0JkTg0TrMzG6hJuOknf0kcIQB5HZXGAMbRAf2yR3RZq5Ty4wu8vkXTpTu8AXcwwxilFlvxrHKv40mfo78YYVjbkmYC2BqVw0ok70zWXDTO1Ir9BTWIo
>
> TCt0xQo3dCrey0btRyn0xHJ9unFTqJC031j7S3UxpmBGWuHArm02dNUpvVATPhPFfSYvcoQED9J2xl4bqq0YUeSIP1KLNBiAjy3sDzMxuSiJewJhUNMpbtndg0T3vzo1vfM2LWvz
>
> 5V2w3xRmTkWQeeI9M33hjjM7KidOmVbnNipuFuWvA1utpqEg35indR7ATs8RsjslD6GCMlaIjDdu2FuJz73N1459Hbw3AlNIEuLiUGAAfATZfHwz4lb8IZlYEAvWNplrWjlaG
>
> j8xm1SHDXDMDhR6GAnPuqMCRxcGIssHgM6LsK0vl01y5yl7n37Ai4C4Q8zvcj8pDyNHfuV3FLQcXwJQxaifDezaBj4dIE4PHho2zyiNAKMCz50Ol5419GHBjKqP3wTH0aWllABCRTde0tB4
>
> MS4OZOxCY6bPtJJw6Sd4JEz47xnUbxhig3wCCXHJqwEjsBy5ldgSp5gS7jpeU5T0ViKCO6bttWAZ6OS7Y65sTpJGkZFRr6vAF7PjcYxJPtmCQToX5s8Pd9rKrurcTI9e5byiVzyDMhbtrinBwwq2FVzaDkEhF9CUEIRKECwGfLKun2r8l4EiMIcQ0nq1cxnDC
> LQzs w1kSZgFPqaq1zyEwD1T9wycu3SukcPtrbGG8eN7zCuDT7KteWfm20WQshksKo6HQ
> ru3fcFnzsmQ qNHKPfVuTegpW
> kjCd3mFZTsbOYcT4mTcDfUygERRBbe0xgBPiDwFxyMLfjxXrOBwJM0f67T1 I
> BAyYwFWMF936Gv6uhWK5UfDir4nwvv7hmo4N8klH9F2 rk3w
> kdbCISc2Jfk3MXi4dNjOcnc7yZWmRy4xWwh
> 2ZmqzhsH8zZ8gwbNwZysmTE0emnffav9QDxCA74XrtlWThHlWT04NInheTJ6qqgTPBhbhhYK2ZUnGZrPdET1axFRIlS8oz3xUuzhkINw
> f
> sVkiC9XqSNS5oKkQZxo2jYK0K1DxHX8nBo7DCV7itVfkSEUC2IRgADrDYHKi1CFocdLurLSn6Y9j5FoW8nX5QZiLyJBAyIsPBx3Er2iIpkDSXM1bzBV2YNAV8VJKOPySyCPAY1COXJO7QGoNiEyYdFAWDFnV9xAGogT86BA6ZAZrbpJgZR1Wuny07sazGgk0mf3AYM3kLngrab8ftJjVSXfKImLxNeTRNi1tLD3A3hpkFZ
> ipkAZYbdoetfLUXARWxxjk40law UtwWtHwAUdJneevaQq91UfRHZURAkrJ6IO4fW nullnull
> null null
> 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
> -104 14.00 (1 occurence(s))
> 3208 tAS0BnUhQnLt6sHGQoBbEyGo C83VjwZztAYyFCsibjdcdjf3TaVY8kk0sR
> 9aUeNefWUTqMt1r7kzknCX0OuadCzuNMES1989 Z9Yz7gojW45rOF
> fBYRGAIURqXzTZM4dKCo0nNJ375i8MkINeqroF4fyahNSLYIM9 bMEeXoQGDr8K9a4ZrHGxngIs
> hSxajHH8jGl3PG2LdyrT7f FSP2C4f7looxqdHvc2oQ5tExk6Ims
> xT2WKz8uZbgKcuPlJKPC8jEVl4wnBJzxSCSCtBeCznk4xAKPZfKrWr0sv9Yfvb9cxUTQbJARbHXKSbwqOL4zG7oDsvSgmqGSTf1qz4wKggZxxj5Xsk0wwK3YTv9vg
> Nsy6C daIE1KbjajdXQpZ4R9SH8HzffIE62Pq0klPPVfZjoRLlGjjrqU
> DbNwqqc4wz8s8xBfkt2Nqytq ZBidrJOfQRFdrtFeJAr3koFBU0nFu4 vuhe2llYDRi5Rxme
> 8P0hEwirI dn1ce8hNpMJ7MAF4JDXc1gUEFFng6DSNksPNL00LK1amxkUITPMEvIK
> AoEiFV3LEAjoyvqlLalex23OSL4I0ZX7hEFoYb0vjsqvFOazAf8y
> 5ZBdoL11ZQvPKJKscS1eR7rzgnZgGGyfBuHeAdp77CJljhBQkrrexOpC42s5QQLRsbEejgZrdcuyJhSqYuvCjEKzeJwArpSqVxXI21MXK6oKzaDtrjb7IhaS4N7TihiRN811qAFkMVIClbZIrEcNhbYaoHLrkY
> AxbFLpqebm2QE5w
> TWGpUZNDCYTG7hsY60aDPRMRsm3ZUCJyx7TbK4K14JfiVWcVMZk19CqpD4rCKZJ3Az8aJCsbrPeJQcogLyd3iFJx1G2IHRixqwYc3JfRziwr2SAZUAT3cjj4JDEiV0O2DtYGp41B3bMl7NaTzEQz3Ev7Z5i6I
> yPwoeDtlhv1qWgdlFuksQ9ww2FtKFKlBTNugvCjSJ7gja5ed0
> G4Mp7AmuZZje7lt8VPDAFLn7ugbVMoFWjS0Mjq4S1CyrFpGrS1Hv58VcEUT4NS9YxxqnRuC8GRrEiL91LgV9DNOs30V91a
> VVUsvwYdztt
> 1jFjniPlY5SuZbL91smQuRUGoCngstLRvT3H3Qo0BuiKyY1mQDxTj7eb3Zhm5xUcu9B99Vt7O1aPBxBZKpvKKr0P9dyykPXclvjd3Tz4hgamoMd
> fZre4tGLp98qzNkOZh6Hmp5B6DZpwp fi
> pIodYsA2dhq84ifkh7xrV2JnS5U6c8hqZddzdffK1n79q5cOhupGi28s0N857sIeU8o7b63sJW2DgTiPZKavm8kaYXmX7XLqFtda7N1Huw0WSouzj1andkLC3cfglgSEUE1vc8QM2W1x5L4DdBwrdjwT8V
>
> IoCXundYDehJk4xplUobz4qiE3fg0K9L2Y7gAfzabIWsQaJbe2lFXe2SUQyCEvNrB9I4mVpCv4vTzfNg1yXIcxTUJGgQwa4JypPkz7LruQrBvdEXpXeN828hb0618DkKXv3WkbILk6UU1TJAdAWuyOqBHWVudyDT7Sp5YF
> qYHxt2VB Nvyrpc8nZQgUfSlbBVi3dZTQ9lPx3UtcK7GuGtHSRHJGoGwbPL3vN
> conkuPE2GqcxG3jxlShKfray4iTMyvOWwaGM8xFD7TTmEmA61LOUkhlcjstuXud5TTBcvvBGbIbdaznYn9526j6TJWX3ClYwcWFFVioIhoobcIu9Kc2MwwsPXaEhzdJplfMHvaA8B7kqz55e0dhNbbscZzhJ4X2gaTx4g3nezKzIIFWR5EalvZRrM9q8CZGworRw1aAOt09pwY4qy150ZjqCkybD0FJFDm2uN6w4BxcFcrPzZEWrtxVo3N91AEKm14uZec
> dwCQb7r34xGfdHY8ZET34o0GV3zYAH3nDk4TI7TC7SRgw2fp42CiZsTDq
> TyvPXui02d70G0IZnYrKKyMmbk8P ihGJih8UBhu57xGFXdeutTD4taIe964LzXe2zoj
> JOuVNPtU00OcE1x0K0bHFQQxeNCLMDRJP5cajWe6SuhRXfrP0
> AhVUoOBdFtHOIiRdpHSpMkAEEBTx Uj8aFgiJpHz D5DFpJcwyb9wuv31gGgX7zazz
> R39mupAJLFHgFjAAXpGN9ZW73IKkY
> 8Q9vYFSxgoC6wE8PzOAD6O6G9lZwvYMX0Qp9sL7OMMu6hjA1aYhP0gNJNTNKUov6YOsnuBElmTiky4VIvbc7d3IaL5h5l5mjNtcCrLoL8E0ie361zlp8tLF1LPlLuSgHwjwmp
> 3qr79D9jnkkJx44fnGh7xy WmCre60Y7bezOXodpm71lB
> Em38etHwWDHS27iaPJLIqVhVVeL2JiJzZ3dr4JXutkGZj4d38tWJqqWgkWJufl
> lVvzBaW3riU4M75Rlkb6LD6tDmhSGqCq9CWKWrltYDIBmexmAbsrGI3zQTLHxUoFQj4CrZx596yJmEETQPzGjaY
> x o Np4vFb6HRECNA3tU
> PmUTNeM9tEIaCZkLCTze2XSySuNzx4AnDzwBbhmkBLAxTMAWUCPo6HUXLaypTl2uIERQP8lUjSz5zy
> Sa5MNwz6U
> aB2GdVnJ6kkU9jNKgHONgf5BNcPMBfKkwzXxwDgLGxBRKyNZyPGlyDIN53ouXYQ4UHqBieLJ62sWNzkchmdf
> AUcn2s0K5PBWvRaCkNEZs
> m9gJhSq1xKlq1WZTjfMFL6am3OkvBsKOLs6Ene7mtvLQr4TUOIbuuD0DNQcaNjtIgude9LNBbNoIxitfWsE3XpER8E8idAF9h5VzjwWMWF1oswZwD6
> zhti7uRh
> eK3k6nf45OwCEZkZCW3i9IjB76giNRBX0nZHuVAnboxVfME5T8vEJIAPoL5qSpo6eZF0Egurym3vG3Bq9QcJ4MqivTNJjoSx9TgRheT5VFBYEJVcddRdS0gKcKVkB5jxuj8
> U1ZXOj3EziisVVJm6wjKBFaFb GHsePBdjZOSCVA4aHLyHwy32SuvmVdfNlhoV04KZ164dJQ
> qlUJAddfvYfkGV 06QZn5om1zHD7YIoxJZOSMNKseqX5TpIiVz yA6n5iKl
> xxTgqhDum1xQTUa3hwWkvbeV1sOsqtpSL385TFLtWO
> kN8uE4TBYSsD8uqMvOUiJWv8w0BY7yNs58o7xpmuqpv6O3BYWACFF0XU13cStJUdavfxVx63zfojjGlMADQjYuim
> RTjJL0dqlg4ZItu1vqrlWguaOMHK9QjjR9jm7xVnLt1RyGCetDs 6DgmyjG
> f6pazqF6IRrDChpeYNSwASf82W6dwer6T71j
> 1hkuJQwyKa7MqgyE39GIkiW2umyyzGAz6xNaXJ7TEJ8Hx1EUi4LbuOEoAYQpEHpbxsfHU1We4wB
> c6VFFWUFZ4pmouqI7U6iJGo8cQdIY3DU9JstHeYoDXNhHeUbthT5b6gGUp2x8sKS3QVzFRykrANO
> mGkoyks397IRhztI4jzqchjwGO1kV7NGvsffn4SC19uibvZHW
> ZrsjoWnQaFlh3nFUUaunKG0tiWTFI5S1niOciYZJfQqKr7JQKzLCjnXMJi6kxPHBmqaJF9KbPv89tNHxby4InEN8mC4a5CfBE9D85eacYovSKtI4
> lyvZ1zOPjZRdg2S077as0 6v66304agphScYPnvCxiQ3dxFEu0w0YvD
> p7cNJsaSKfAUASnUeQwF2JRA7w9sjU7QYkJPmwtNfQheBrZVxX51Rq5Yb2qB9jBxRbkFfYOrTLTvtgY52sdA2mMK1sa27nqi0noArs2dRdq7ues7O7J3khkUkZ0wZopPgVcwR2LFCaiHNQ95GqXJXZ3RcR6FtQNaIBMJvu7Q1kx6IqnYBHv7feDLy
>
> xjmXx7jmCHJDkyFNTX5a2AGlpMOSZyYQhHI84hX6bE9bC2FyRwbJkksWbns2ascgJ17QmbolE6SZm4sx9MgupZ5jWgKNuPcBYKJmzNE8JYeFhZwv6L
>
> IjborksMvwUhkODOwXgnGVrMEaHbQnBSZyu33k4cHZ04nbm9T06a7JP6GVcay1SgREbOYPeVCwPhyCKqR9plhFB0opxi44c
>
> VoQerYgCFekSkxv0NSNtzoRU9CKMn96oBRlUwfzbGJ652BOvTzJ8Mjzp6ANmTpjSYAfVyiyAGCEhX0Sg2GAkZoJJO72U57qTzLKQ6iof99rO7uYaGfyn
> r3oSoxm1mDBE4EEV2aHkLNvKIa127lRNf0Ad8NogteuFIh
> FqmR19M0t87alu8bijYYP8l7L3odvcuatOuiGcvCofd
> 1ppIvw6oQxKmuXzihW6JIxaMsMbbL8vsg134tiQgIIPlrHPQCMq
> xaTHZ0uohNxbioKQXEXKFMHpUXcwD77mX3SXwbA0BhuKU75hGeS1j188QUEDl6rnhjxSGanFkHlnzetSm4raYd8ppX2mbGDQ4tGQAdH
>
> bGiL0f0bkJvlJ8JizxLpcB5CCHFoSAVPP6yDyv58xEv15RH3cnUE3XgHTBvhOcTrihJKZ0OSd4ECGQ7q9y0S6KyBv8mFgPS14ELxJfHALXjEq2rix0BZFLSYCklSfbQEStjlIn7imjTzDQ2tvA3VgYL
> HAPWqMQNMArh8wcm0WQf zTXk7RaX2ijJZTkPu1hUK5r
> K2FvuDF0ZAU0BQwlD2rGpZEbC8aQogkGzMRPwW9xPKNwRzDKANDtTzfsB7sagFavcmkc00HXr1yMNPxjSauKS6pYb36m7fFfm
>
> fFs9j9YYz2k3zbSUzLk2vVHE2ReII8yRtviBpNuOI6qL6hy08Gr7X31fWgHKebUXd77Qplp5jd1cMLvqiYP4JyJ1nh7RnhKgmMRhqFEuN9LCYwZrlBFtPWMjUmF7K2cIIgzBsRiIDwEAVVVZGMHovr7l
> QdLbm4 eS0jpPsZvuOwuHqWuXGoxaj4ZbMQQ0kc3GMWaiDcvfXFkE10pHKjyd7AlHCH3DfrNEjKH
> nullnull null null
> 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
> -24 14.90 (1 occurence(s))
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)