From 332523833556840f00b90ea08ef3de6b14d93a19 Mon Sep 17 00:00:00 2001 From: asdf2014 Date: Fri, 23 Aug 2019 00:50:01 +0800 Subject: [PATCH 1/3] Suppress index-out-of-bounds warning from LGTM about loop unrolling --- .../query/topn/TopNLexicographicResultBuilder.java | 14 +++++++------- .../druid/query/topn/TopNNumericResultBuilder.java | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java b/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java index ea17367f875f..52b39b39c00e 100644 --- a/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java +++ b/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java @@ -106,13 +106,13 @@ public TopNResultBuilder addEntry( } for (int i = extra; i < metricVals.length; i += LOOP_UNROLL_COUNT) { metricValues.put(aggFactoryNames[i + 0], metricVals[i + 0]); - metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); - metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); - metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); - metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); - metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); - metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); - metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); + metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm [java/index-out-of-bounds] } pQueue.add(new DimValHolder.Builder().withDimValue(dimValue).withMetricValues(metricValues).build()); diff --git a/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java b/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java index 09f41599fe20..9815ab467db7 100644 --- a/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java +++ b/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java @@ -150,13 +150,13 @@ public TopNNumericResultBuilder addEntry( } for (int i = extra; i < metricVals.length; i += LOOP_UNROLL_COUNT) { metricValues.put(aggFactoryNames[i + 0], metricVals[i + 0]); - metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); - metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); - metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); - metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); - metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); - metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); - metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); + metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm [java/index-out-of-bounds] } // Order matters here, do not unroll From 5f84b023e13cc69d6ae25e47c6b846308c439707 Mon Sep 17 00:00:00 2001 From: asdf2014 Date: Fri, 23 Aug 2019 14:51:42 +0800 Subject: [PATCH 2/3] Remove space --- .../query/topn/TopNLexicographicResultBuilder.java | 14 +++++++------- .../druid/query/topn/TopNNumericResultBuilder.java | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java b/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java index 52b39b39c00e..57162a7b6398 100644 --- a/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java +++ b/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java @@ -106,13 +106,13 @@ public TopNResultBuilder addEntry( } for (int i = extra; i < metricVals.length; i += LOOP_UNROLL_COUNT) { metricValues.put(aggFactoryNames[i + 0], metricVals[i + 0]); - metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm[java/index-out-of-bounds] } pQueue.add(new DimValHolder.Builder().withDimValue(dimValue).withMetricValues(metricValues).build()); diff --git a/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java b/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java index 9815ab467db7..aad1d7e36ca0 100644 --- a/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java +++ b/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java @@ -150,13 +150,13 @@ public TopNNumericResultBuilder addEntry( } for (int i = extra; i < metricVals.length; i += LOOP_UNROLL_COUNT) { metricValues.put(aggFactoryNames[i + 0], metricVals[i + 0]); - metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm [java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm[java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm[java/index-out-of-bounds] } // Order matters here, do not unroll From 8d8193e77bd3f983b6e51db292ab1b6b9f656205 Mon Sep 17 00:00:00 2001 From: asdf2014 Date: Fri, 23 Aug 2019 17:03:43 +0800 Subject: [PATCH 3/3] Patch comments --- .../topn/TopNLexicographicResultBuilder.java | 16 +++++++++------- .../query/topn/TopNNumericResultBuilder.java | 16 +++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java b/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java index 57162a7b6398..6df950f9e1fa 100644 --- a/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java +++ b/processing/src/main/java/org/apache/druid/query/topn/TopNLexicographicResultBuilder.java @@ -106,13 +106,15 @@ public TopNResultBuilder addEntry( } for (int i = extra; i < metricVals.length; i += LOOP_UNROLL_COUNT) { metricValues.put(aggFactoryNames[i + 0], metricVals[i + 0]); - metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm[java/index-out-of-bounds] + // LGTM.com flags this, but it's safe + // because we know "metricVals.length - extra" is a multiple of LOOP_UNROLL_COUNT. + metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm [java/index-out-of-bounds] } pQueue.add(new DimValHolder.Builder().withDimValue(dimValue).withMetricValues(metricValues).build()); diff --git a/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java b/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java index aad1d7e36ca0..4dbd5397e8c9 100644 --- a/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java +++ b/processing/src/main/java/org/apache/druid/query/topn/TopNNumericResultBuilder.java @@ -150,13 +150,15 @@ public TopNNumericResultBuilder addEntry( } for (int i = extra; i < metricVals.length; i += LOOP_UNROLL_COUNT) { metricValues.put(aggFactoryNames[i + 0], metricVals[i + 0]); - metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm[java/index-out-of-bounds] - metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm[java/index-out-of-bounds] + // LGTM.com flags this, but it's safe + // because we know "metricVals.length - extra" is a multiple of LOOP_UNROLL_COUNT. + metricValues.put(aggFactoryNames[i + 1], metricVals[i + 1]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 2], metricVals[i + 2]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 3], metricVals[i + 3]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 4], metricVals[i + 4]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 5], metricVals[i + 5]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 6], metricVals[i + 6]); // lgtm [java/index-out-of-bounds] + metricValues.put(aggFactoryNames[i + 7], metricVals[i + 7]); // lgtm [java/index-out-of-bounds] } // Order matters here, do not unroll