Github user vdiravka commented on a diff in the pull request:
https://github.com/apache/drill/pull/1214#discussion_r183633517
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/store/ColumnExplorer.java ---
@@ -156,43 +157,74 @@ public static boolean isPartitionColumn(String
partitionDesignator, String path)
}
/**
- * Compares selection root and actual file path to determine partition
columns values.
- * Adds implicit file columns according to columns list.
+ * Creates map with implicit columns where key is column name, value is
columns actual value.
+ * This map contains partition and implicit file columns (if requested).
+ * Partition columns names are formed based in partition designator and
value index.
*
- * @return map with columns names as keys and their values
+ * @param filePath file path, used to populate file implicit columns
+ * @param partitionValues list of partition values
+ * @param includeFileImplicitColumns if file implicit columns should be
included into the result
+ * @return implicit columns map
*/
- public Map<String, String> populateImplicitColumns(FileWork work, String
selectionRoot) {
- return populateImplicitColumns(work.getPath(), selectionRoot);
- }
+ public Map<String, String> populateImplicitColumns(String filePath,
+ List<String>
partitionValues,
+ boolean
includeFileImplicitColumns) {
+ Map<String, String> implicitValues = new LinkedHashMap<>();
- /**
- * Compares selection root and actual file path to determine partition
columns values.
- * Adds implicit file columns according to columns list.
- *
- * @return map with columns names as keys and their values
- */
- public Map<String, String> populateImplicitColumns(String filePath,
String selectionRoot) {
- Map<String, String> implicitValues = Maps.newLinkedHashMap();
- if (selectionRoot != null) {
- String[] r = Path.getPathWithoutSchemeAndAuthority(new
Path(selectionRoot)).toString().split("/");
- Path path = Path.getPathWithoutSchemeAndAuthority(new
Path(filePath));
- String[] p = path.toString().split("/");
- if (p.length > r.length) {
- String[] q = ArrayUtils.subarray(p, r.length, p.length - 1);
- for (int a = 0; a < q.length; a++) {
- if (isStarQuery || selectedPartitionColumns.contains(a)) {
- implicitValues.put(partitionDesignator + a, q[a]);
- }
- }
+ for(int i = 0; i < partitionValues.size(); i++) {
--- End diff --
`for (`
---