/** * No dictionary and complex dimensions of the table * * @return */ public DimensionSpec[] getNoDictAndComplexDimensions() { List<DimensionSpec> noDictAndComplexDimensions = new ArrayList<>(); for (int i = 0; i < dimensionSpec.length; i++) { if (dimensionSpec[i].getColumnType() == ColumnType.PLAIN_VALUE || dimensionSpec[i].getColumnType() == ColumnType.COMPLEX_PRIMITIVE || dimensionSpec[i].getColumnType() == ColumnType.COMPLEX) { noDictAndComplexDimensions.add(dimensionSpec[i]); } } return noDictAndComplexDimensions.toArray(new DimensionSpec[noDictAndComplexDimensions.size()]); }
EncodedColumnPage encodedPage; TableSpec.DimensionSpec spec = tableSpec.getDimensionSpec(i); switch (spec.getColumnType()) { case GLOBAL_DICTIONARY: case DIRECT_DICTIONARY: default: throw new IllegalArgumentException("unsupported dimension type:" + spec .getColumnType());
int numDimensions = spec.getNumDimensions(); for (int i = 0; i < numDimensions; i++) { ColumnType type = spec.getDimensionSpec(i).getColumnType(); if ((type == ColumnType.GLOBAL_DICTIONARY) || (type == ColumnType.DIRECT_DICTIONARY)) { page = dictDimensionPages[++dictDimensionIndex];
for (int i = 0; i < dictDimensionPages.length + noDictDimensionPages.length; i++) { TableSpec.DimensionSpec spec = tableSpec.getDimensionSpec(i); ColumnType columnType = tableSpec.getDimensionSpec(i).getColumnType(); ColumnPage page; if (ColumnType.GLOBAL_DICTIONARY == columnType
private ColumnPageEncoder createEncoderForDimensionLegacy(TableSpec.DimensionSpec dimensionSpec) { switch (dimensionSpec.getColumnType()) { case GLOBAL_DICTIONARY: return new DictDimensionIndexCodec( dimensionSpec.isInSortColumns(), dimensionSpec.isInSortColumns() && dimensionSpec.isDoInvertedIndex()) .createEncoder(null); case DIRECT_DICTIONARY: return new DirectDictDimensionIndexCodec( dimensionSpec.isInSortColumns(), dimensionSpec.isInSortColumns() && dimensionSpec.isDoInvertedIndex()) .createEncoder(null); case PLAIN_VALUE: return new HighCardDictDimensionIndexCodec( dimensionSpec.isInSortColumns(), dimensionSpec.isInSortColumns() && dimensionSpec.isDoInvertedIndex(), dimensionSpec.getSchemaDataType() == DataTypes.VARCHAR) .createEncoder(null); default: throw new RuntimeException("unsupported dimension type: " + dimensionSpec.getColumnType()); } }
private ColumnPageEncoder createEncoderForDimension(TableSpec.DimensionSpec columnSpec, ColumnPage inputPage) { switch (columnSpec.getColumnType()) { case GLOBAL_DICTIONARY: case DIRECT_DICTIONARY: case PLAIN_VALUE: return new DirectCompressCodec(inputPage.getDataType()).createEncoder(null); case COMPLEX: return new ComplexDimensionIndexCodec(false, false).createEncoder(null); default: throw new RuntimeException("unsupported dimension type: " + columnSpec.getColumnType()); } }