/** * Copyright (C) 2014-2016 LinkedIn Corp. (pinot-core@linkedin.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.linkedin.pinot.core.segment.creator.impl; import com.linkedin.pinot.common.data.FieldSpec; /** * Jun 30, 2014 * */ public class V1Constants { public static final String QUERY_RHS_DELIMITER = "\t\t"; public static final String SEGMENT_CREATION_META = "creation.meta"; public static final String STAR_TREE_INDEX_DIR = "star-tree"; public static final String STAR_TREE_INDEX_FILE = "star-tree.bin"; public static final String STAR_TREE_ON_HEAP_INDEX_FILE = "star-tree-on-heap.bin"; public static final String STAR_TREE_OFF_HEAP_INDEX_FILE = "star-tree-off-heap.bin"; public static final String VERSIONS_FILE = "versions.vr"; public static final String SEGMENT_DOWNLOAD_URL = "segment.download.url"; public static final String SEGMENT_PUSH_TIME = "segment.push.time"; public static final String SEGMENT_REFRESH_TIME = "segment.refresh.time"; public static class Numbers { // null representatives public static final Integer NULL_INT = Integer.MIN_VALUE; public static final Long NULL_LONG = Long.MIN_VALUE; public static final Float NULL_FLOAT = Float.MIN_VALUE; public static final Double NULL_DOUBLE = Double.MIN_VALUE; public static final int INTEGER_SIZE = Integer.SIZE / Byte.SIZE; public static final int LONG_SIZE = Long.SIZE / Byte.SIZE; public static final int FLOAT_SIZE = Float.SIZE / Byte.SIZE; public static final int DOUBLE_SIZE = Double.SIZE / Byte.SIZE; } public static class Str { public static final char DEFAULT_STRING_PAD_CHAR = '\0'; public static final char LEGACY_STRING_PAD_CHAR = '%'; public static final java.lang.String CHAR_SET = "UTF-8"; public static final String NULL_STRING = "nil"; public static final String NULL_BOOLEAN = Boolean.toString(false); } public static class Idx { public static final int[] SORTED_INDEX_COLUMN_SIZE = new int[] { 4, 4 }; } public static class Dict { public static final int[] INT_DICTIONARY_COL_SIZE = new int[] { 4 }; public static final int[] LONG_DICTIONARY_COL_SIZE = new int[] { 8 }; public static final int[] FLOAT_DICTIONARY_COL_SIZE = new int[] { 4 }; public static final int[] DOUBLE_DICTIONARY_COL_SIZE = new int[] { 8 }; public static final String FILE_EXTENTION = ".dict"; public static int[] getSingleValueColumnSizeFor(FieldSpec spec) { switch (spec.getDataType()) { case INT: return INT_DICTIONARY_COL_SIZE; case FLOAT: return FLOAT_DICTIONARY_COL_SIZE; case DOUBLE: return DOUBLE_DICTIONARY_COL_SIZE; case LONG: return LONG_DICTIONARY_COL_SIZE; default: return new int[] {}; } } } public static class Indexes { public static final String UN_SORTED_SV_FWD_IDX_FILE_EXTENTION = ".sv.unsorted.fwd"; public static final String RAW_SV_FWD_IDX_FILE_EXTENTION = ".sv.raw.fwd"; public static final String SORTED_FWD_IDX_FILE_EXTENTION = ".sv.sorted.fwd"; public static final String UN_SORTED_MV_FWD_IDX_FILE_EXTENTION = ".mv.fwd"; public static final String BITMAP_INVERTED_INDEX_FILE_EXTENSION = ".bitmap.inv"; public static final String SORTED_INVERTED_INDEX_FILE_EXTENSION = ".sorted.inv"; public static final String INTARRAY_INVERTED_INDEX_FILE_EXTENSION = ".intArray.inv"; } public static class MetadataKeys { public static final String METADATA_FILE_NAME = "metadata.properties"; public static class StarTree { public static final String STAR_TREE_ENABLED = "startree.enabled"; public static final String STAR_TREE_SPLIT_ORDER = "startree.split.order"; public static final String STAR_TREE_MAX_LEAF_RECORDS = "startree.max.leaf.records"; public static final String STAR_TREE_SKIP_STAR_NODE_CREATION_FOR_DIMENSIONS = "startree.skip.star.node.creation.for.dimensions"; public static final String STAR_TREE_SKIP_MATERIALIZATION_FOR_DIMENSIONS = "star.tree.skip.materialization.for.dimensions"; public static final String STAR_TREE_SKIP_MATERIALIZATION_CARDINALITY = "star.tree.skip.materialization.cardinality"; } public static class Segment { public static final String SEGMENT_CREATOR_VERSION = "creator.version"; public static final String SEGMENT_NAME = "segment.name"; public static final String SEGMENT_VERSION = "segment.index.version"; public static final String TABLE_NAME = "segment.table.name"; public static final String DIMENSIONS = "segment.dimension.column.names"; public static final String METRICS = "segment.metric.column.names"; public static final String UNKNOWN_COLUMNS = "segment.unknown.column.names"; public static final String TIME_COLUMN_NAME = "segment.time.column.name"; public static final String TIME_UNIT = "segment.time.unit"; public static final String TIME_INTERVAL = "segment.time.interval"; public static final String CUSTOM_PROPERTIES_PREFIX = "segment.custom"; public static final String SEGMENT_TOTAL_DOCS = "segment.total.docs"; public static final String SEGMENT_TOTAL_RAW_DOCS = "segment.total.raw.docs"; public static final String SEGMENT_TOTAL_AGGREGATE_DOCS = "segment.total.aggregate.docs"; public static final String SEGMENT_CRC = "segment.crc"; public static final String SEGMENT_CREATION_TIME = "segment.creation.time"; public static final String SEGMENT_PADDING_CHARACTER = "segment.padding.character"; public static final String SEGMENT_TOTAL_ERRORS = "segment.total.errors"; public static final String SEGMENT_TOTAL_NULLS = "segment.total.nulls"; public static final String SEGMENT_TOTAL_CONVERSIONS = "segment.total.conversions"; public static final String SEGMENT_TOTAL_NULL_COLS = "segment.total.null.cols"; public static final String SEGMENT_HLL_LOG2M = "segment.hll.log2m"; // not using currently public static final String SEGMENT_INDEX_TYPE = "segment.index.type"; public static final String SEGMENT_START_TIME = "segment.start.time"; public static final String SEGMENT_END_TIME = "segment.end.time"; public static final String SEGMENT_TIME_GRANULARITY = "segment.time.granularity"; } public static class Column { public static final String CARDINALITY = "cardinality"; public static final String TOTAL_DOCS = "totalDocs"; public static final String TOTAL_RAW_DOCS = "totalRawDocs"; public static final String TOTAL_AGG_DOCS = "totalAggDocs"; public static final String DATA_TYPE = "dataType"; public static final String BITS_PER_ELEMENT = "bitsPerElement"; public static final String DICTIONARY_ELEMENT_SIZE = "lengthOfEachEntry"; public static final String COLUMN_TYPE = "columnType"; public static final String IS_SORTED = "isSorted"; public static final String HAS_NULL_VALUE = "hasNullValue"; public static final String HAS_DICTIONARY = "hasDictionary"; public static final String HAS_INVERTED_INDEX = "hasInvertedIndex"; public static final String IS_SINGLE_VALUED = "isSingleValues"; public static final String MAX_MULTI_VALUE_ELEMTS = "maxNumberOfMultiValues"; public static final String TOTAL_NUMBER_OF_ENTRIES = "totalNumberOfEntries"; public static final String IS_AUTO_GENERATED = "isAutoGenerated"; public static final String DEFAULT_NULL_VALUE = "defaultNullValue"; public static final String DERIVED_METRIC_TYPE = "derivedMetricType"; public static final String ORIGIN_COLUMN = "originColumn"; public static final String MIN_VALUE = "minValue"; public static final String MAX_VALUE = "maxValue"; public static final String PARTITION_FUNCTION = "partitionFunction"; public static final String NUM_PARTITIONS = "numPartitions"; public static final String PARTITION_VALUES = "partitionValues"; private static final String COLUMN_PROPS_KEY_PREFIX = "column."; public static String getKeyFor(String column, String key) { return COLUMN_PROPS_KEY_PREFIX + column + "." + key; } } } }