Skip to content

Commit 44175b7

Browse files
authored
Block a deprecated option for SF Assessment (#941)
1 parent 4052224 commit 44175b7

File tree

3 files changed

+51
-11
lines changed

3 files changed

+51
-11
lines changed

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/ConnectorArguments.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -943,6 +943,10 @@ public String getQueryLogEarliestTimestamp() {
943943
return getOptions().valueOf(optionQueryLogEarliestTimestamp);
944944
}
945945

946+
public boolean hasQueryLogEarliestTimestamp() {
947+
return getOptions().valueOf(optionQueryLogEarliestTimestamp) != null;
948+
}
949+
946950
@CheckForNull
947951
public Integer getQueryLogDays() {
948952
return getOptions().valueOf(optionQueryLogDays);

dumper/app/src/main/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeLogsConnector.java

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,15 @@ private TaskDescription(
160160
}
161161
}
162162

163+
@Override
164+
public final void validate(ConnectorArguments arguments) {
165+
super.validate(arguments);
166+
167+
if (arguments.isAssessment() && arguments.hasQueryLogEarliestTimestamp()) {
168+
throw unsupportedOption(ConnectorArguments.OPT_QUERY_LOG_EARLIEST_TIMESTAMP);
169+
}
170+
}
171+
163172
@Nonnull
164173
@Override
165174
public Class<? extends Enum<? extends ConnectorProperty>> getConnectorProperties() {
@@ -281,8 +290,6 @@ private String createExtendedQueryFromAccountUsage(ConnectorArguments arguments)
281290
String overrideQuery = getOverrideQuery(arguments);
282291
if (overrideQuery != null) return overrideQuery;
283292

284-
String overrideWhere = getOverrideWhere(arguments);
285-
286293
@SuppressWarnings("OrphanedFormatString")
287294
StringBuilder queryBuilder =
288295
new StringBuilder(
@@ -333,12 +340,8 @@ private String createExtendedQueryFromAccountUsage(ConnectorArguments arguments)
333340
+ "WHERE end_time >= to_timestamp_ltz('%s')\n"
334341
+ "AND end_time <= to_timestamp_ltz('%s')\n"
335342
+ "AND is_client_generated_statement = FALSE\n");
336-
if (!StringUtils.isBlank(arguments.getQueryLogEarliestTimestamp()))
337-
queryBuilder
338-
.append("AND start_time >= ")
339-
.append(arguments.getQueryLogEarliestTimestamp())
340-
.append("\n");
341-
if (overrideWhere != null) queryBuilder.append(" AND ").append(overrideWhere);
343+
344+
queryBuilder.append(getOverrideWhere(arguments));
342345
return queryBuilder.toString().replace('\n', ' ');
343346
}
344347

@@ -356,16 +359,25 @@ private String getOverrideQuery(@Nonnull ConnectorArguments arguments)
356359
return null;
357360
}
358361

359-
@CheckForNull
362+
@Nonnull
360363
private String getOverrideWhere(@Nonnull ConnectorArguments arguments)
361364
throws MetadataDumperUsageException {
362-
return arguments.getDefinition(SnowflakeLogConnectorProperties.OVERRIDE_WHERE);
365+
ConnectorProperty property = SnowflakeLogConnectorProperties.OVERRIDE_WHERE;
366+
String overrideWhere = arguments.getDefinition(property);
367+
if (overrideWhere != null) {
368+
return String.format(" AND %s", overrideWhere);
369+
} else {
370+
return "";
371+
}
363372
}
364373

365374
@Override
366375
public final void addTasksTo(
367376
@Nonnull List<? super Task<?>> out, @Nonnull ConnectorArguments arguments)
368377
throws MetadataDumperUsageException {
378+
379+
boolean isAssessment = arguments.isAssessment();
380+
369381
out.add(new DumpMetadataTask(arguments, FORMAT_NAME));
370382
out.add(new FormatTask(FORMAT_NAME));
371383

@@ -380,7 +392,7 @@ public final void addTasksTo(
380392
arguments, rotationDuration, IntervalExpander.createBasedOnDuration(rotationDuration));
381393
logger.info("Exporting query log for " + queryLogIntervals);
382394

383-
if (!arguments.isAssessment()) {
395+
if (!isAssessment) {
384396
TaskDescription queryHistoryTask =
385397
new TaskDescription(ZIP_ENTRY_PREFIX, newQueryFormat(arguments), Header.class);
386398
queryLogIntervals.forEach(interval -> addJdbcTask(out, interval, queryHistoryTask));
@@ -413,6 +425,13 @@ private static void addJdbcTask(
413425
out.add(new JdbcSelectTask(file, query, task.taskCategory).withHeaderClass(task.headerClass));
414426
}
415427

428+
private static MetadataDumperUsageException unsupportedOption(String option) {
429+
String assessment = ConnectorArguments.OPT_ASSESSMENT;
430+
String message =
431+
String.format("Unsupported option used with --%s: please remove --%s", assessment, option);
432+
return new MetadataDumperUsageException(message);
433+
}
434+
416435
private String getOverrideableQuery(
417436
@Nullable String overrideQuery, @Nonnull String defaultSql, @Nonnull String whereField) {
418437
String sql = overrideQuery != null ? overrideQuery : defaultSql;

dumper/app/src/test/java/com/google/edwmigration/dumper/application/dumper/connector/snowflake/SnowflakeLogsConnectorTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,13 @@
1717
package com.google.edwmigration.dumper.application.dumper.connector.snowflake;
1818

1919
import com.google.common.base.Predicates;
20+
import com.google.edwmigration.dumper.application.dumper.ConnectorArguments;
21+
import com.google.edwmigration.dumper.application.dumper.MetadataDumperUsageException;
2022
import com.google.edwmigration.dumper.plugin.lib.dumper.spi.SnowflakeLogsDumpFormat;
2123
import com.google.edwmigration.dumper.test.TestUtils;
2224
import java.io.File;
25+
import java.io.IOException;
26+
import org.junit.Assert;
2327
import org.junit.Test;
2428
import org.junit.runner.RunWith;
2529
import org.junit.runners.JUnit4;
@@ -41,4 +45,17 @@ public void testExecution() throws Exception {
4145

4246
validator.run(outputFile);
4347
}
48+
49+
@Test
50+
public void validate_unsupportedOption_throwsException() throws IOException {
51+
ConnectorArguments arguments =
52+
new ConnectorArguments(
53+
"--connector",
54+
"snowflake-logs",
55+
"--assessment",
56+
"--" + ConnectorArguments.OPT_QUERY_LOG_EARLIEST_TIMESTAMP,
57+
"2024");
58+
59+
Assert.assertThrows(MetadataDumperUsageException.class, () -> connector.validate(arguments));
60+
}
4461
}

0 commit comments

Comments
 (0)