Skip to content

Commit b7ca095

Browse files
committed
PLUGIN-1883: Using schema to fetch the column names while constructing importQuery
1 parent dad7ba9 commit b7ca095

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/main/java/io/cdap/plugin/snowflake/common/util/SchemaHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public static Schema getSchema(SnowflakeSourceAccessor snowflakeAccessor, String
109109
}
110110
}
111111

112-
private static Schema getParsedSchema(String schema) {
112+
public static Schema getParsedSchema(String schema) {
113113
if (Strings.isNullOrEmpty(schema)) {
114114
return null;
115115
}

src/main/java/io/cdap/plugin/snowflake/source/batch/SnowflakeSourceAccessor.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@
1818

1919
import au.com.bytecode.opencsv.CSVReader;
2020
import com.google.common.base.Strings;
21+
import io.cdap.cdap.api.data.schema.Schema;
2122
import io.cdap.plugin.snowflake.common.SnowflakeErrorType;
2223
import io.cdap.plugin.snowflake.common.client.SnowflakeAccessor;
2324
import io.cdap.plugin.snowflake.common.util.DocumentUrlUtil;
2425
import io.cdap.plugin.snowflake.common.util.QueryUtil;
26+
import io.cdap.plugin.snowflake.common.util.SchemaHelper;
2527
import net.snowflake.client.jdbc.SnowflakeConnection;
2628
import org.slf4j.Logger;
2729
import org.slf4j.LoggerFactory;
@@ -35,6 +37,7 @@
3537
import java.util.ArrayList;
3638
import java.util.List;
3739
import java.util.UUID;
40+
import java.util.stream.Collectors;
3841

3942
/**
4043
* A class which accesses Snowflake API to do actions used by batch source.
@@ -81,7 +84,15 @@ public List<String> prepareStageSplits() {
8184
String importQuery = config.getImportQuery();
8285
if (Strings.isNullOrEmpty(importQuery)) {
8386
String tableName = config.getTableName();
84-
importQuery = String.format("SELECT * FROM %s", tableName);
87+
Schema schema = SchemaHelper.getParsedSchema(config.getSchema());
88+
if (schema != null && schema.getFields() != null && !schema.getFields().isEmpty()) {
89+
String columns = schema.getFields().stream()
90+
.map(Schema.Field::getName)
91+
.collect(Collectors.joining(","));
92+
importQuery = String.format("SELECT %s FROM %s", columns, tableName);
93+
} else {
94+
importQuery = String.format("SELECT * FROM %s", tableName);
95+
}
8596
}
8697
String copy = String.format(COMAND_COPY_INTO, QueryUtil.removeSemicolon(importQuery));
8798
if (config.getMaxSplitSize() > 0) {

0 commit comments

Comments
 (0)