This is an automated email from the ASF dual-hosted git repository.
abhishek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 679ccffe0f Revert "SqlSegmentsMetadataQuery: Fix OVERLAPS for wide
target segments. (#12600)" (#12679)
679ccffe0f is described below
commit 679ccffe0fe11cd4ecc5998138c7436bb0b5955a
Author: Gian Merlino <[email protected]>
AuthorDate: Fri Jun 24 20:38:26 2022 -0700
Revert "SqlSegmentsMetadataQuery: Fix OVERLAPS for wide target segments.
(#12600)" (#12679)
This reverts commit 8fbf92e047f792ff1c69bf67d14784ac55eee88f.
---
.../druid/metadata/SqlSegmentsMetadataQuery.java | 35 ++-----
.../IndexerSQLMetadataStorageCoordinatorTest.java | 104 ---------------------
2 files changed, 8 insertions(+), 131 deletions(-)
diff --git
a/server/src/main/java/org/apache/druid/metadata/SqlSegmentsMetadataQuery.java
b/server/src/main/java/org/apache/druid/metadata/SqlSegmentsMetadataQuery.java
index 737b5c6d36..4ecf7bebe6 100644
---
a/server/src/main/java/org/apache/druid/metadata/SqlSegmentsMetadataQuery.java
+++
b/server/src/main/java/org/apache/druid/metadata/SqlSegmentsMetadataQuery.java
@@ -233,25 +233,12 @@ public class SqlSegmentsMetadataQuery
)
);
- if (i != intervals.size() - 1) {
+ if (i == intervals.size() - 1) {
+ sb.append(")");
+ } else {
sb.append(" OR ");
}
}
-
- if (matchMode == IntervalMode.OVERLAPS) {
- // Segments with both endpoints outside 0000/10000 may overlap the
search intervals but not match the
- // generated SQL conditions. We need to add one more OR condition to
catch all of these.
- sb.append(
- StringUtils.format(
- " OR start < %2$s OR %1$send%1$s >= %3$s",
- connector.getQuoteString(),
- ":minmatch",
- ":maxmatch"
- )
- );
- }
-
- sb.append(")");
}
final Query<Map<String, Object>> sql = handle
@@ -260,17 +247,12 @@ public class SqlSegmentsMetadataQuery
.bind("used", used)
.bind("dataSource", dataSource);
- if (compareAsString && !intervals.isEmpty()) {
+ if (compareAsString) {
final Iterator<Interval> iterator = intervals.iterator();
for (int i = 0; iterator.hasNext(); i++) {
- final Interval interval = iterator.next();
- sql.bind(StringUtils.format("start%d", i),
interval.getStart().toString());
- sql.bind(StringUtils.format("end%d", i), interval.getEnd().toString());
- }
-
- if (matchMode == IntervalMode.OVERLAPS) {
- sql.bind("minmatch", "0000-"); // '-' is lexicographically lower than
'0' so this catches negative-year starts
- sql.bind("maxmatch", "10000-"); // Catches end points at 10000 or after
+ Interval interval = iterator.next();
+ sql.bind(StringUtils.format("start%d", i),
interval.getStart().toString())
+ .bind(StringUtils.format("end%d", i), interval.getEnd().toString());
}
}
@@ -287,8 +269,7 @@ public class SqlSegmentsMetadataQuery
} else {
// Must re-check that the interval matches, even if comparing
as string, because the *segment interval*
// might not be string-comparable. (Consider a query interval
like "2000-01-01/3000-01-01" and a
- // segment interval like "20010/20011". Consider also a
segment interval with endpoints prior to
- // year 0000 or after year 9999.)
+ // segment interval like "20010/20011".)
for (Interval interval : intervals) {
if (matchMode.apply(interval, dataSegment.getInterval())) {
return true;
diff --git
a/server/src/test/java/org/apache/druid/metadata/IndexerSQLMetadataStorageCoordinatorTest.java
b/server/src/test/java/org/apache/druid/metadata/IndexerSQLMetadataStorageCoordinatorTest.java
index e42478b933..fca3366b88 100644
---
a/server/src/test/java/org/apache/druid/metadata/IndexerSQLMetadataStorageCoordinatorTest.java
+++
b/server/src/test/java/org/apache/druid/metadata/IndexerSQLMetadataStorageCoordinatorTest.java
@@ -254,42 +254,6 @@ public class IndexerSQLMetadataStorageCoordinatorTest
100
);
- private final DataSegment eternityRangeSegment1 = new DataSegment(
- "eternity1",
- Intervals.ETERNITY,
- "zversion",
- ImmutableMap.of(),
- ImmutableList.of("dim1"),
- ImmutableList.of("m1"),
- new NumberedShardSpec(0, 1),
- 9,
- 100
- );
-
- private final DataSegment halfEternityRangeSegment1 = new DataSegment(
- "halfEternity",
- new Interval(DateTimes.MIN, DateTimes.of("1970")),
- "zversion",
- ImmutableMap.of(),
- ImmutableList.of("dim1"),
- ImmutableList.of("m1"),
- new NumberedShardSpec(0, 1),
- 9,
- 100
- );
-
- private final DataSegment halfEternityRangeSegment2 = new DataSegment(
- "halfEternity",
- new Interval(DateTimes.of("1970"), DateTimes.MAX),
- "zversion",
- ImmutableMap.of(),
- ImmutableList.of("dim1"),
- ImmutableList.of("m1"),
- new NumberedShardSpec(0, 1),
- 9,
- 100
- );
-
private final Set<DataSegment> SEGMENTS = ImmutableSet.of(defaultSegment,
defaultSegment2);
private final AtomicLong metadataUpdateCounter = new AtomicLong();
private final AtomicLong segmentTableDropUpdateCounter = new AtomicLong();
@@ -1169,74 +1133,6 @@ public class IndexerSQLMetadataStorageCoordinatorTest
);
}
- @Test
- public void testUsedEternitySegmentEternityFilter() throws IOException
- {
-
coordinator.announceHistoricalSegments(ImmutableSet.of(eternityRangeSegment1));
-
- Assert.assertEquals(
- ImmutableSet.of(eternityRangeSegment1),
- ImmutableSet.copyOf(
- coordinator.retrieveUsedSegmentsForIntervals(
- eternityRangeSegment1.getDataSource(),
- Intervals.ONLY_ETERNITY,
- Segments.ONLY_VISIBLE
- )
- )
- );
- }
-
- @Test
- public void testUsedEternitySegment2000Filter() throws IOException
- {
-
coordinator.announceHistoricalSegments(ImmutableSet.of(eternityRangeSegment1));
-
- Assert.assertEquals(
- ImmutableSet.of(eternityRangeSegment1),
- ImmutableSet.copyOf(
- coordinator.retrieveUsedSegmentsForIntervals(
- eternityRangeSegment1.getDataSource(),
- Collections.singletonList(Intervals.of("2000/2030")),
- Segments.ONLY_VISIBLE
- )
- )
- );
- }
-
- @Test
- public void testUsedHalfEternitySegmentEternityFilter() throws IOException
- {
-
coordinator.announceHistoricalSegments(ImmutableSet.of(halfEternityRangeSegment1,
halfEternityRangeSegment2));
-
- Assert.assertEquals(
- ImmutableSet.of(halfEternityRangeSegment1, halfEternityRangeSegment2),
- ImmutableSet.copyOf(
- coordinator.retrieveUsedSegmentsForIntervals(
- halfEternityRangeSegment1.getDataSource(),
- Intervals.ONLY_ETERNITY,
- Segments.ONLY_VISIBLE
- )
- )
- );
- }
-
- @Test
- public void testUsedHalfEternitySegment2000Filter() throws IOException
- {
-
coordinator.announceHistoricalSegments(ImmutableSet.of(halfEternityRangeSegment1,
halfEternityRangeSegment2));
-
- Assert.assertEquals(
- ImmutableSet.of(halfEternityRangeSegment2),
- ImmutableSet.copyOf(
- coordinator.retrieveUsedSegmentsForIntervals(
- halfEternityRangeSegment1.getDataSource(),
- Collections.singletonList(Intervals.of("2000/2030")),
- Segments.ONLY_VISIBLE
- )
- )
- );
- }
-
@Test
public void testUsedHugeTimeRangeEternityFilter() throws IOException
{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]