Github user jackylk commented on a diff in the pull request: https://github.com/apache/carbondata/pull/1953#discussion_r170003522 --- Diff: processing/src/main/java/org/apache/carbondata/processing/loading/DataLoadProcessBuilder.java --- @@ -231,4 +238,71 @@ public static CarbonDataLoadConfiguration createConfiguration(CarbonLoadModel lo return configuration; } + /** + * set sort column info in configuration + * @param carbonTable carbon table + * @param loadModel load model + * @param configuration configuration + */ + private static void setSortColumnInfo(CarbonTable carbonTable, CarbonLoadModel loadModel, + CarbonDataLoadConfiguration configuration) { + List<String> sortCols = carbonTable.getSortColumns(carbonTable.getTableName()); + SortScopeOptions.SortScope sortScope = SortScopeOptions.getSortScope(loadModel.getSortScope()); + if (!SortScopeOptions.SortScope.LOCAL_SORT.equals(sortScope) + || sortCols.size() == 0 + || StringUtils.isBlank(loadModel.getSortColumnsBoundsStr())) { + if (!StringUtils.isBlank(loadModel.getSortColumnsBoundsStr())) { + LOGGER.warn("sort column bounds will be ignored"); + } + + configuration.setSortColumnRangeInfo(null); + return; + } + // column index for sort columns + int[] sortColIndex = new int[sortCols.size()]; + boolean[] isSortColNoDict = new boolean[sortCols.size()]; + + DataField[] outFields = configuration.getDataFields(); + int j = 0; + boolean columnExist; + for (String sortCol : sortCols) { + columnExist = false; + + for (int i = 0; !columnExist && i < outFields.length; i++) { + if (outFields[i].getColumn().getColName().equalsIgnoreCase(sortCol)) { + columnExist = true; + + sortColIndex[j] = i; + isSortColNoDict[j] = !outFields[i].hasDictionaryEncoding(); + j++; + } + } + + if (!columnExist) { + throw new RuntimeException("Field " + sortCol + " does not exist."); --- End diff -- It is better to use DataLoadingException
---