Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,7 @@ a.out
*.pb.h
*.pb.cc
*_pb2.py

# Compiled executables used for docker build
/docker/presto-cli-*-executable.jar
/docker/presto-server-*.tar.gz
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,13 @@
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.stream.Collectors;

import static com.google.common.collect.ImmutableList.toImmutableList;

public class ContainerQueryRunnerUtils
{
private ContainerQueryRunnerUtils() {}
Expand Down Expand Up @@ -226,19 +227,18 @@ public static void createScriptFile(String filePath, String scriptContent)
public static MaterializedResult toMaterializedResult(String csvData)
throws IOException
{
List<Type> columnTypes = new ArrayList<>();

// Parse CSV data using OpenCSV
ImmutableList<List<String>> allRows = getLists(csvData);
List<List<String>> allRows = parseCsvData(csvData);

// Infer column types based on the maximum columns found
int maxColumns = allRows.stream().mapToInt(List::size).max().orElse(0);
int maxColumns = allRows.stream().mapToInt(row -> row.size()).max().orElse(0);
ImmutableList.Builder<Type> columnTypesBuilder = ImmutableList.builder();
for (int i = 0; i < maxColumns; i++) {
final int columnIndex = i;
columnTypes.add(inferType(allRows.stream()
columnTypesBuilder.add(inferType(allRows.stream()
.map(row -> columnIndex < row.size() ? row.get(columnIndex) : "")
.collect(Collectors.toList())));
}
List<Type> columnTypes = columnTypesBuilder.build();

// Convert all rows to MaterializedRow
ImmutableList.Builder<MaterializedRow> rowsBuilder = ImmutableList.builder();
Expand All @@ -249,26 +249,17 @@ public static MaterializedResult toMaterializedResult(String csvData)
}
rowsBuilder.add(new MaterializedRow(5, valuesBuilder.build()));
}

ImmutableList<MaterializedRow> materializedRows = rowsBuilder.build();
List<MaterializedRow> rows = rowsBuilder.build();

// Create and return the MaterializedResult
return new MaterializedResult(materializedRows, columnTypes);
return new MaterializedResult(rows, columnTypes);
}

private static ImmutableList<List<String>> getLists(String csvData)
private static List<List<String>> parseCsvData(String csvData)
throws IOException
{
CSVReader reader = new CSVReader(new StringReader(csvData));
List<String[]> records = reader.readAll();

// Collect all rows as lists of strings
ImmutableList.Builder<List<String>> allRowsBuilder = ImmutableList.builder();
for (String[] record : records) {
allRowsBuilder.add(ImmutableList.copyOf(record));
}
ImmutableList<List<String>> allRows = allRowsBuilder.build();
return allRows;
return reader.readAll().stream().map(ImmutableList::copyOf).collect(toImmutableList());
}

private static Type inferType(List<String> values)
Expand Down Expand Up @@ -305,9 +296,6 @@ else if (isBoolean) {

private static Object convertToType(String value, Type type)
{
if (value.isEmpty()) {
return null;
}
if (type.equals(VarcharType.VARCHAR)) {
return value;
}
Expand Down