diff --git a/server/src/main/java/org/apache/druid/metadata/IndexerSQLMetadataStorageCoordinator.java b/server/src/main/java/org/apache/druid/metadata/IndexerSQLMetadataStorageCoordinator.java index 10e95074c558..cc42d77e1b70 100644 --- a/server/src/main/java/org/apache/druid/metadata/IndexerSQLMetadataStorageCoordinator.java +++ b/server/src/main/java/org/apache/druid/metadata/IndexerSQLMetadataStorageCoordinator.java @@ -232,7 +232,10 @@ private Set getPendingSegmentsForIntervalWithHandle( final ResultIterator dbSegments = handle.createQuery( StringUtils.format( - "SELECT payload FROM %1$s WHERE dataSource = :dataSource AND start <= :end and %2$send%2$s >= :start", + // This query might fail if the year has a different number of digits + // See https://github.com/apache/druid/pull/11582 for a similar issue + // Using long for these timestamps instead of varchar would give correct time comparisons + "SELECT payload FROM %1$s WHERE dataSource = :dataSource AND start < :end and %2$send%2$s > :start", dbTables.getPendingSegmentsTable(), connector.getQuoteString() ) ) @@ -584,7 +587,7 @@ private SegmentIdWithShardSpec allocatePendingSegmentWithSegmentLineageCheck( .asBytes() ); - insertToMetastore( + insertPendingSegmentIntoMetastore( handle, newIdentifier, dataSource, @@ -662,7 +665,7 @@ private SegmentIdWithShardSpec allocatePendingSegment( ); // always insert empty previous sequence id - insertToMetastore(handle, newIdentifier, dataSource, interval, "", sequenceName, sequenceNamePrevIdSha1); + insertPendingSegmentIntoMetastore(handle, newIdentifier, dataSource, interval, "", sequenceName, sequenceNamePrevIdSha1); log.info("Allocated pending segment [%s] for sequence[%s] in DB", newIdentifier, sequenceName); @@ -742,7 +745,7 @@ private static class CheckExistingSegmentIdResult } } - private void insertToMetastore( + private void insertPendingSegmentIntoMetastore( Handle handle, SegmentIdWithShardSpec newIdentifier, String dataSource, @@ -943,7 +946,7 @@ private SegmentIdWithShardSpec createNewSegment( return new SegmentIdWithShardSpec( dataSource, - overallMaxId.getInterval(), + interval, Preconditions.checkNotNull(newSegmentVersion, "newSegmentVersion"), partialShardSpec.complete( jsonMapper, @@ -1468,4 +1471,5 @@ public int removeDataSourceMetadataOlderThan(long timestamp, @NotNull Set