thiagotnunes commented on code in PR #35042: URL: https://github.com/apache/beam/pull/35042#discussion_r2144237814
########## sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/dao/PartitionMetadataDao.java: ########## @@ -178,47 +178,56 @@ public List<String> findAllTableIndexes() { * * @return the earliest partition watermark which is not in a {@link State#FINISHED} state. */ - public @Nullable Timestamp getUnfinishedMinWatermark() { + public @Nullable Timestamp getUnfinishedMinWatermarkFrom(Timestamp sinceTimestamp) { Statement statement; + final String minWatermark = "min_watermark"; if (this.isPostgres()) { statement = Statement.newBuilder( - "SELECT \"" + "SELECT min(\"" Review Comment: nit: uppercase MIN ########## sdks/java/io/google-cloud-platform/src/test/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/SpannerChangeStreamErrorTest.java: ########## @@ -460,19 +460,27 @@ private void mockGetPartitionsAfter(Timestamp timestamp, ResultSet getPartitionR } private void mockGetWatermark(Timestamp watermark) { + final String minWatermark = "min_watermark"; + // The query needs to sync with getUnfinishedMinWatermark() in PartitionMetadataDao file. Statement watermarkStatement = Statement.newBuilder( - "SELECT Watermark FROM my-metadata-table WHERE State != @state ORDER BY Watermark ASC LIMIT 1") + "SELECT min(Watermark) as " Review Comment: nit: uppercase MIN ########## sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/cache/NoOpWatermarkCache.java: ########## @@ -35,6 +35,6 @@ public NoOpWatermarkCache(PartitionMetadataDao dao) { @Override public @Nullable Timestamp getUnfinishedMinWatermark() { - return dao.getUnfinishedMinWatermark(); + return dao.getUnfinishedMinWatermarkFrom(Timestamp.MIN_VALUE); Review Comment: Is the reasoning of having MIN_VALUE here to disable the filtering if we face any issue? ########## sdks/java/io/google-cloud-platform/src/main/java/org/apache/beam/sdk/io/gcp/spanner/changestreams/dao/PartitionMetadataDao.java: ########## @@ -178,47 +178,56 @@ public List<String> findAllTableIndexes() { * * @return the earliest partition watermark which is not in a {@link State#FINISHED} state. */ - public @Nullable Timestamp getUnfinishedMinWatermark() { + public @Nullable Timestamp getUnfinishedMinWatermarkFrom(Timestamp sinceTimestamp) { Statement statement; + final String minWatermark = "min_watermark"; if (this.isPostgres()) { statement = Statement.newBuilder( - "SELECT \"" + "SELECT min(\"" + COLUMN_WATERMARK - + "\" FROM \"" + + "\") as " + + minWatermark + + " FROM \"" + metadataTableName + "\" WHERE \"" + COLUMN_STATE + "\" != $1" - + " ORDER BY \"" + + " AND \"" + COLUMN_WATERMARK - + "\" ASC LIMIT 1") + + "\" >= $2") .bind("p1") .to(State.FINISHED.name()) + .bind("p2") + .to(sinceTimestamp) .build(); } else { statement = Statement.newBuilder( - "SELECT " + "SELECT min(" Review Comment: nit: uppercase MIN -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@beam.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org