/** * Method to get the flag values for columns to be cached * * @param segmentProperties * @param minMaxCacheColumns * @param minMaxFlag * @return */ public static boolean[] getMinMaxFlagValuesForColumnsToBeCached( SegmentProperties segmentProperties, List<CarbonColumn> minMaxCacheColumns, boolean[] minMaxFlag) { boolean[] minMaxFlagValuesForColumnsToBeCached = minMaxFlag; if (null != minMaxCacheColumns) { minMaxFlagValuesForColumnsToBeCached = new boolean[minMaxCacheColumns.size()]; int counter = 0; for (CarbonColumn column : minMaxCacheColumns) { minMaxFlagValuesForColumnsToBeCached[counter++] = minMaxFlag[getColumnOrdinal(segmentProperties, column)]; } } return minMaxFlagValuesForColumnsToBeCached; }
/** * Method to get the min/max values for columns to be cached * * @param segmentProperties * @param minMaxCacheColumns * @param minMaxValuesForAllColumns * @return */ public static byte[][] getMinMaxForColumnsToBeCached(SegmentProperties segmentProperties, List<CarbonColumn> minMaxCacheColumns, byte[][] minMaxValuesForAllColumns) { byte[][] minMaxValuesForColumnsToBeCached = minMaxValuesForAllColumns; if (null != minMaxCacheColumns) { minMaxValuesForColumnsToBeCached = new byte[minMaxCacheColumns.size()][]; int counter = 0; for (CarbonColumn column : minMaxCacheColumns) { minMaxValuesForColumnsToBeCached[counter++] = minMaxValuesForAllColumns[getColumnOrdinal(segmentProperties, column)]; } } return minMaxValuesForColumnsToBeCached; }
/** * Method to fill the column ordinals to access based on the columns to be cached * * @param segmentProperties * @param minMaxCacheColumns * @return */ private static int[] getColumnOrdinalsToAccess(SegmentProperties segmentProperties, List<CarbonColumn> minMaxCacheColumns) { int[] columnOrdinalsTOAccess = null; if (null != minMaxCacheColumns) { columnOrdinalsTOAccess = new int[minMaxCacheColumns.size()]; int counter = 0; for (CarbonColumn column : minMaxCacheColumns) { columnOrdinalsTOAccess[counter++] = BlockletDataMapUtil.getColumnOrdinal(segmentProperties, column); } } else { // when columns to cache is not specified then column access order will be same as the array // index of min max length columnOrdinalsTOAccess = new int[segmentProperties.getColumnsValueSize().length]; for (int i = 0; i < columnOrdinalsTOAccess.length; i++) { columnOrdinalsTOAccess[i] = i; } } return columnOrdinalsTOAccess; } }
/** * Method to get the min max length of each column. It will return the length of only column * which will be cached * * @param segmentProperties * @param minMaxCacheColumns * @return */ private static int[] getMinMaxLength(SegmentProperties segmentProperties, List<CarbonColumn> minMaxCacheColumns) { int[] minMaxLen = null; if (null != minMaxCacheColumns) { minMaxLen = new int[minMaxCacheColumns.size()]; int counter = 0; for (CarbonColumn column : minMaxCacheColumns) { minMaxLen[counter++] = segmentProperties.getColumnsValueSize()[BlockletDataMapUtil .getColumnOrdinal(segmentProperties, column)]; } } else { minMaxLen = segmentProperties.getColumnsValueSize(); } return minMaxLen; }