|
34 | 34 | import java.util.List; |
35 | 35 | import java.util.Map; |
36 | 36 | import javax.annotation.Nonnull; |
| 37 | +import org.apache.commons.lang3.ArrayUtils; |
| 38 | +import org.apache.commons.lang3.StringUtils; |
37 | 39 | import org.junit.Assert; |
38 | 40 | import org.junit.Assume; |
39 | 41 | import org.junit.Test; |
@@ -154,10 +156,35 @@ public void connector_generatesExpectedSql() throws IOException { |
154 | 156 | } |
155 | 157 | } |
156 | 158 |
|
157 | | - private static Map<String, String> collectSqlStatements() throws IOException { |
| 159 | + @Test |
| 160 | + public void connector_generatesExpectedSql_withQueryOverrides() throws IOException { |
| 161 | + Map<String, String> actualSqls = |
| 162 | + collectSqlStatements("-Dsnowflake.metadata.columns.query=SQL_OVERRIDE"); |
| 163 | + |
| 164 | + Assert.assertEquals("SQL_OVERRIDE", actualSqls.get("columns-au.csv")); |
| 165 | + Assert.assertEquals("SQL_OVERRIDE", actualSqls.get("columns.csv")); |
| 166 | + } |
| 167 | + |
| 168 | + @Test |
| 169 | + public void connector_generatesExpectedSql_withWhereOverrides() throws IOException { |
| 170 | + Map<String, String> actualSqls = |
| 171 | + collectSqlStatements("-Dsnowflake.metadata.columns.where=SQL_OVERRIDE"); |
| 172 | + |
| 173 | + // TODO: should be endsWith("WHERE SQL_OVERRIDE") |
| 174 | + Assert.assertTrue( |
| 175 | + actualSqls.get("columns-au.csv").endsWith("WHERE DELETED IS NULL WHERE SQL_OVERRIDE")); |
| 176 | + // TODO: should be 1 |
| 177 | + Assert.assertEquals(2, StringUtils.countMatches(actualSqls.get("columns-au.csv"), " WHERE ")); |
| 178 | + |
| 179 | + Assert.assertTrue(actualSqls.get("columns.csv").endsWith("WHERE SQL_OVERRIDE")); |
| 180 | + Assert.assertEquals(1, StringUtils.countMatches(actualSqls.get("columns.csv"), " WHERE ")); |
| 181 | + } |
| 182 | + |
| 183 | + private static Map<String, String> collectSqlStatements(String... extraArgs) throws IOException { |
158 | 184 | List<Task<?>> tasks = new ArrayList<>(); |
159 | 185 | SnowflakeMetadataConnector connector = new SnowflakeMetadataConnector(); |
160 | | - connector.addTasksTo(tasks, new ConnectorArguments("--connector", connector.getName())); |
| 186 | + String[] args = ArrayUtils.addAll(new String[] {"--connector", connector.getName()}, extraArgs); |
| 187 | + connector.addTasksTo(tasks, new ConnectorArguments(args)); |
161 | 188 | return tasks.stream() |
162 | 189 | .filter(t -> t instanceof JdbcSelectTask) |
163 | 190 | .map(t -> (JdbcSelectTask) t) |
|
0 commit comments