io.crate.metadata.information.InformationTablesTableInfo.java Source code

Java tutorial

Introduction

Here is the source code for io.crate.metadata.information.InformationTablesTableInfo.java

Source

/*
 * Licensed to CRATE Technology GmbH ("Crate") under one or more contributor
 * license agreements.  See the NOTICE file distributed with this work for
 * additional information regarding copyright ownership.  Crate licenses
 * this file to you 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.
 *
 * However, if you have executed another commercial license agreement
 * with Crate these terms will supersede the license and you may use the
 * software solely pursuant to the terms of the relevant commercial agreement.
 */

package io.crate.metadata.information;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSortedMap;
import io.crate.Version;
import io.crate.metadata.ColumnIdent;
import io.crate.metadata.IndexMappings;
import io.crate.metadata.Reference;
import io.crate.metadata.ReferenceIdent;
import io.crate.metadata.RowContextCollectorExpression;
import io.crate.metadata.RowGranularity;
import io.crate.metadata.TableIdent;
import io.crate.metadata.blob.BlobTableInfo;
import io.crate.metadata.doc.DocTableInfo;
import io.crate.metadata.expressions.RowCollectExpressionFactory;
import io.crate.metadata.table.ColumnPolicy;
import io.crate.metadata.table.ShardedTable;
import io.crate.metadata.table.TableInfo;
import io.crate.expression.reference.information.TablesSettingsExpression;
import io.crate.expression.reference.information.TablesVersionExpression;
import io.crate.types.ArrayType;
import io.crate.types.DataType;
import io.crate.types.DataTypes;
import org.apache.lucene.util.BytesRef;

import java.util.List;
import java.util.Map;

public class InformationTablesTableInfo extends InformationTableInfo {

    public static final String NAME = "tables";
    public static final TableIdent IDENT = new TableIdent(InformationSchemaInfo.NAME, NAME);

    private static final BytesRef ZERO_REPLICAS = new BytesRef("0");
    static final BytesRef TABLE_TYPE = new BytesRef("BASE TABLE");
    static final BytesRef SELF_REFERENCING_COLUMN_NAME = new BytesRef("_id");
    static final BytesRef REFERENCE_GENERATION = new BytesRef("SYSTEM GENERATED");

    public static class Columns {
        public static final ColumnIdent TABLE_NAME = new ColumnIdent("table_name");
        static final ColumnIdent TABLE_SCHEMA = new ColumnIdent("table_schema");
        static final ColumnIdent TABLE_CATALOG = new ColumnIdent("table_catalog");
        static final ColumnIdent TABLE_TYPE = new ColumnIdent("table_type");
        static final ColumnIdent PARTITION_IDENT = new ColumnIdent("partition_ident");
        public static final ColumnIdent VALUES = new ColumnIdent("values");
        static final ColumnIdent NUMBER_OF_SHARDS = new ColumnIdent("number_of_shards");
        public static final ColumnIdent NUMBER_OF_REPLICAS = new ColumnIdent("number_of_replicas");
        static final ColumnIdent CLUSTERED_BY = new ColumnIdent("clustered_by");
        static final ColumnIdent PARTITIONED_BY = new ColumnIdent("partitioned_by");
        static final ColumnIdent BLOBS_PATH = new ColumnIdent("blobs_path");
        static final ColumnIdent COLUMN_POLICY = new ColumnIdent("column_policy");
        static final ColumnIdent ROUTING_HASH_FUNCTION = new ColumnIdent("routing_hash_function");
        static final ColumnIdent TABLE_VERSION = new ColumnIdent("version");
        static final ColumnIdent TABLE_VERSION_CREATED = new ColumnIdent("version",
                ImmutableList.of(Version.Property.CREATED.toString()));
        static final ColumnIdent TABLE_VERSION_CREATED_CRATEDB = new ColumnIdent("version",
                ImmutableList.of(Version.Property.CREATED.toString(), Version.CRATEDB_VERSION_KEY));
        static final ColumnIdent TABLE_VERSION_CREATED_ES = new ColumnIdent("version",
                ImmutableList.of(Version.Property.CREATED.toString(), Version.ES_VERSION_KEY));
        static final ColumnIdent TABLE_VERSION_UPGRADED = new ColumnIdent("version",
                ImmutableList.of(Version.Property.UPGRADED.toString()));
        static final ColumnIdent TABLE_VERSION_UPGRADED_CRATEDB = new ColumnIdent("version",
                ImmutableList.of(Version.Property.UPGRADED.toString(), Version.CRATEDB_VERSION_KEY));
        static final ColumnIdent TABLE_VERSION_UPGRADED_ES = new ColumnIdent("version",
                ImmutableList.of(Version.Property.UPGRADED.toString(), Version.ES_VERSION_KEY));
        static final ColumnIdent CLOSED = new ColumnIdent("closed");
        static final ColumnIdent REFERENCE_GENERATION = new ColumnIdent("reference_generation");
        static final ColumnIdent SELF_REFERENCING_COLUMN_NAME = new ColumnIdent("self_referencing_column_name");
        static final ColumnIdent TABLE_SETTINGS = new ColumnIdent("settings");
        static final ColumnIdent TABLE_SETTINGS_BLOCKS = new ColumnIdent("settings", ImmutableList.of("blocks"));
        static final ColumnIdent TABLE_SETTINGS_BLOCKS_READ_ONLY = new ColumnIdent("settings",
                ImmutableList.of("blocks", "read_only"));
        static final ColumnIdent TABLE_SETTINGS_BLOCKS_READ = new ColumnIdent("settings",
                ImmutableList.of("blocks", "read"));
        static final ColumnIdent TABLE_SETTINGS_BLOCKS_WRITE = new ColumnIdent("settings",
                ImmutableList.of("blocks", "write"));
        static final ColumnIdent TABLE_SETTINGS_BLOCKS_METADATA = new ColumnIdent("settings",
                ImmutableList.of("blocks", "metadata"));
        static final ColumnIdent TABLE_SETTINGS_ROUTING = new ColumnIdent("settings", ImmutableList.of("routing"));
        static final ColumnIdent TABLE_SETTINGS_ROUTING_ALLOCATION = new ColumnIdent("settings",
                ImmutableList.of("routing", "allocation"));
        static final ColumnIdent TABLE_SETTINGS_ROUTING_ALLOCATION_ENABLE = new ColumnIdent("settings",
                ImmutableList.of("routing", "allocation", "enable"));
        static final ColumnIdent TABLE_SETTINGS_ROUTING_ALLOCATION_TOTAL_SHARDS_PER_NODE = new ColumnIdent(
                "settings", ImmutableList.of("routing", "allocation", "total_shards_per_node"));
        static final ColumnIdent TABLE_SETTINGS_WARMER = new ColumnIdent("settings", ImmutableList.of("warmer"));
        static final ColumnIdent TABLE_SETTINGS_WARMER_ENABLED = new ColumnIdent("settings",
                ImmutableList.of("warmer", "enabled"));
        static final ColumnIdent TABLE_SETTINGS_MAPPING = new ColumnIdent("settings", ImmutableList.of("mapping"));
        static final ColumnIdent TABLE_SETTINGS_MAPPING_TOTAL_FIELDS = new ColumnIdent("settings",
                ImmutableList.of("mapping", "total_fields"));
        static final ColumnIdent TABLE_SETTINGS_MAPPING_TOTAL_FIELDS_LIMIT = new ColumnIdent("settings",
                ImmutableList.of("mapping", "total_fields", "limit"));

        static final ColumnIdent TABLE_SETTINGS_TRANSLOG = new ColumnIdent("settings",
                ImmutableList.of("translog"));
        static final ColumnIdent TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_SIZE = new ColumnIdent("settings",
                ImmutableList.of("translog", "flush_threshold_size"));
        static final ColumnIdent TABLE_SETTINGS_TRANSLOG_SYNC_INTERVAL = new ColumnIdent("settings",
                ImmutableList.of("translog", "sync_interval"));

        static final ColumnIdent TABLE_SETTINGS_REFRESH_INTERVAL = new ColumnIdent("settings",
                ImmutableList.of("refresh_interval"));

        static final ColumnIdent TABLE_SETTINGS_WRITE = new ColumnIdent("settings", ImmutableList.of("write"));

        static final ColumnIdent TABLE_SETTINGS_WRITE_WAIT_FOT_ACTIVE_SHARDS = new ColumnIdent("settings",
                ImmutableList.of("write", "wait_for_active_shards"));

        static final ColumnIdent TABLE_SETTINGS_UNASSIGNED = new ColumnIdent("settings",
                ImmutableList.of("unassigned"));
        static final ColumnIdent TABLE_SETTINGS_UNASSIGNED_NODE_LEFT = new ColumnIdent("settings",
                ImmutableList.of("unassigned", "node_left"));
        static final ColumnIdent TABLE_SETTINGS_UNASSIGNED_NODE_LEFT_DELAYED_TIMEOUT = new ColumnIdent("settings",
                ImmutableList.of("unassigned", "node_left", "delayed_timeout"));
    }

    public static class References {
        static final Reference TABLE_SCHEMA = createRef(Columns.TABLE_SCHEMA, DataTypes.STRING);
        public static final Reference TABLE_NAME = createRef(Columns.TABLE_NAME, DataTypes.STRING);
        static final Reference TABLE_CATALOG = createRef(Columns.TABLE_CATALOG, DataTypes.STRING);
        static final Reference TABLE_TYPE = createRef(Columns.TABLE_TYPE, DataTypes.STRING);
        static final Reference NUMBER_OF_SHARDS = createRef(Columns.NUMBER_OF_SHARDS, DataTypes.INTEGER);
        public static final Reference NUMBER_OF_REPLICAS = createRef(Columns.NUMBER_OF_REPLICAS, DataTypes.STRING);
        static final Reference CLUSTERED_BY = createRef(Columns.CLUSTERED_BY, DataTypes.STRING);
        static final Reference PARTITIONED_BY = createRef(Columns.PARTITIONED_BY, new ArrayType(DataTypes.STRING));
        static final Reference BLOBS_PATH = createRef(Columns.BLOBS_PATH, DataTypes.STRING);
        static final Reference COLUMN_POLICY = createRef(Columns.COLUMN_POLICY, DataTypes.STRING);
        static final Reference ROUTING_HASH_FUNCTION = createRef(Columns.ROUTING_HASH_FUNCTION, DataTypes.STRING);
        static final Reference TABLE_VERSION = createRef(Columns.TABLE_VERSION, DataTypes.OBJECT);
        static final Reference TABLE_VERSION_CREATED = createRef(Columns.TABLE_VERSION_CREATED, DataTypes.OBJECT);
        static final Reference TABLE_VERSION_CREATED_CRATEDB = createRef(Columns.TABLE_VERSION_CREATED_CRATEDB,
                DataTypes.OBJECT);
        static final Reference TABLE_VERSION_CREATED_ES = createRef(Columns.TABLE_VERSION_CREATED_ES,
                DataTypes.OBJECT);
        static final Reference TABLE_VERSION_UPGRADED = createRef(Columns.TABLE_VERSION_UPGRADED, DataTypes.OBJECT);
        static final Reference TABLE_VERSION_UPGRADED_CRATEDB = createRef(Columns.TABLE_VERSION_UPGRADED_CRATEDB,
                DataTypes.OBJECT);
        static final Reference TABLE_VERSION_UPGRADED_ES = createRef(Columns.TABLE_VERSION_UPGRADED_ES,
                DataTypes.OBJECT);
        static final Reference CLOSED = createRef(Columns.CLOSED, DataTypes.BOOLEAN);
        static final Reference REFERENCE_GENERATION = createRef(Columns.REFERENCE_GENERATION, DataTypes.STRING);
        static final Reference SELF_REFERENCING_COLUMN_NAME = createRef(Columns.SELF_REFERENCING_COLUMN_NAME,
                DataTypes.STRING);

        static final Reference TABLE_SETTINGS = createRef(Columns.TABLE_SETTINGS, DataTypes.OBJECT);

        static final Reference TABLE_SETTINGS_REFRESH_INTERVAL = createRef(Columns.TABLE_SETTINGS_REFRESH_INTERVAL,
                DataTypes.LONG);

        static final Reference TABLE_SETTINGS_WRITE = createRef(Columns.TABLE_SETTINGS_WRITE, DataTypes.OBJECT);

        static final Reference TABLE_SETTINGS_WRITE_WAIT_FOT_ACTIVE_SHARDS = createRef(
                Columns.TABLE_SETTINGS_WRITE_WAIT_FOT_ACTIVE_SHARDS, DataTypes.STRING);

        static final Reference TABLE_SETTINGS_BLOCKS = createRef(Columns.TABLE_SETTINGS_BLOCKS, DataTypes.OBJECT);
        static final Reference TABLE_SETTINGS_BLOCKS_READ_ONLY = createRef(Columns.TABLE_SETTINGS_BLOCKS_READ_ONLY,
                DataTypes.BOOLEAN);
        static final Reference TABLE_SETTINGS_BLOCKS_READ = createRef(Columns.TABLE_SETTINGS_BLOCKS_READ,
                DataTypes.BOOLEAN);
        static final Reference TABLE_SETTINGS_BLOCKS_WRITE = createRef(Columns.TABLE_SETTINGS_BLOCKS_WRITE,
                DataTypes.BOOLEAN);
        static final Reference TABLE_SETTINGS_BLOCKS_METADATA = createRef(Columns.TABLE_SETTINGS_BLOCKS_METADATA,
                DataTypes.BOOLEAN);

        static final Reference TABLE_SETTINGS_TRANSLOG = createRef(Columns.TABLE_SETTINGS_TRANSLOG,
                DataTypes.OBJECT);
        static final Reference TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_SIZE = createRef(
                Columns.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_SIZE, DataTypes.LONG);

        static final Reference TABLE_SETTINGS_ROUTING = createRef(Columns.TABLE_SETTINGS_ROUTING, DataTypes.OBJECT);
        static final Reference TABLE_SETTINGS_ROUTING_ALLOCATION = createRef(
                Columns.TABLE_SETTINGS_ROUTING_ALLOCATION, DataTypes.OBJECT);
        static final Reference TABLE_SETTINGS_ROUTING_ALLOCATION_ENABLE = createRef(
                Columns.TABLE_SETTINGS_ROUTING_ALLOCATION_ENABLE, DataTypes.STRING);
        static final Reference TABLE_SETTINGS_ROUTING_ALLOCATION_TOTAL_SHARDS_PER_NODE = createRef(
                Columns.TABLE_SETTINGS_ROUTING_ALLOCATION_TOTAL_SHARDS_PER_NODE, DataTypes.INTEGER);

        static final Reference TABLE_SETTINGS_MAPPING = createRef(Columns.TABLE_SETTINGS_MAPPING, DataTypes.OBJECT);
        static final Reference TABLE_SETTINGS_MAPPING_TOTAL_FIELDS = createRef(
                Columns.TABLE_SETTINGS_MAPPING_TOTAL_FIELDS, DataTypes.OBJECT);
        static final Reference TABLE_SETTINGS_MAPPING_TOTAL_FIELDS_LIMIT = createRef(
                Columns.TABLE_SETTINGS_MAPPING_TOTAL_FIELDS_LIMIT, DataTypes.INTEGER);

        static final Reference TABLE_SETTINGS_WARMER = createRef(Columns.TABLE_SETTINGS_WARMER, DataTypes.OBJECT);
        static final Reference TABLE_SETTINGS_WARMER_ENABLED = createRef(Columns.TABLE_SETTINGS_WARMER_ENABLED,
                DataTypes.BOOLEAN);

        static final Reference TABLE_SETTINGS_TRANSLOG_SYNC_INTERVAL = createRef(
                Columns.TABLE_SETTINGS_TRANSLOG_SYNC_INTERVAL, DataTypes.LONG);

        static final Reference TABLE_SETTINGS_UNASSIGNED = createRef(Columns.TABLE_SETTINGS_UNASSIGNED,
                DataTypes.OBJECT);
        static final Reference TABLE_SETTINGS_UNASSIGNED_NODE_LEFT = createRef(
                Columns.TABLE_SETTINGS_UNASSIGNED_NODE_LEFT, DataTypes.OBJECT);
        static final Reference TABLE_SETTINGS_UNASSIGNED_NODE_LEFT_DELAYED_TIMEOUT = createRef(
                Columns.TABLE_SETTINGS_UNASSIGNED_NODE_LEFT_DELAYED_TIMEOUT, DataTypes.LONG);
    }

    public static Map<ColumnIdent, RowCollectExpressionFactory<TableInfo>> expressions() {
        return ImmutableMap.<ColumnIdent, RowCollectExpressionFactory<TableInfo>>builder()
                .put(InformationTablesTableInfo.Columns.TABLE_SCHEMA,
                        () -> RowContextCollectorExpression.objToBytesRef(r -> r.ident().schema()))
                .put(InformationTablesTableInfo.Columns.TABLE_NAME,
                        () -> RowContextCollectorExpression.objToBytesRef(r -> r.ident().name()))
                .put(InformationTablesTableInfo.Columns.TABLE_CATALOG,
                        () -> RowContextCollectorExpression.objToBytesRef(r -> r.ident().schema()))
                .put(InformationTablesTableInfo.Columns.TABLE_TYPE,
                        () -> RowContextCollectorExpression.objToBytesRef(r -> TABLE_TYPE))
                .put(InformationTablesTableInfo.Columns.NUMBER_OF_SHARDS,
                        () -> RowContextCollectorExpression.forFunction(row -> {
                            if (row instanceof ShardedTable) {
                                return ((ShardedTable) row).numberOfShards();
                            }
                            return 1;
                        }))
                .put(InformationTablesTableInfo.Columns.NUMBER_OF_REPLICAS,
                        () -> RowContextCollectorExpression.objToBytesRef(row -> {
                            if (row instanceof ShardedTable) {
                                return ((ShardedTable) row).numberOfReplicas();
                            }
                            return ZERO_REPLICAS;
                        }))
                .put(InformationTablesTableInfo.Columns.CLUSTERED_BY,
                        () -> RowContextCollectorExpression.objToBytesRef(row -> {
                            if (row instanceof ShardedTable) {
                                ColumnIdent clusteredBy = ((ShardedTable) row).clusteredBy();
                                if (clusteredBy == null) {
                                    return null;
                                }
                                return new BytesRef(clusteredBy.fqn());
                            }
                            return null;
                        }))
                .put(InformationTablesTableInfo.Columns.PARTITIONED_BY,
                        () -> RowContextCollectorExpression.forFunction(row -> {
                            if (row instanceof DocTableInfo) {
                                List<ColumnIdent> partitionedBy = ((DocTableInfo) row).partitionedBy();
                                if (partitionedBy == null || partitionedBy.isEmpty()) {
                                    return null;
                                }

                                BytesRef[] partitions = new BytesRef[partitionedBy.size()];
                                for (int i = 0; i < partitions.length; i++) {
                                    partitions[i] = new BytesRef(partitionedBy.get(i).fqn());
                                }
                                return partitions;
                            }
                            return null;
                        }))
                .put(InformationTablesTableInfo.Columns.COLUMN_POLICY,
                        () -> RowContextCollectorExpression.objToBytesRef(row -> {
                            if (row instanceof DocTableInfo) {
                                return new BytesRef(((DocTableInfo) row).columnPolicy().value());
                            }
                            return new BytesRef(ColumnPolicy.STRICT.value());
                        }))
                .put(InformationTablesTableInfo.Columns.BLOBS_PATH,
                        () -> RowContextCollectorExpression.objToBytesRef(row -> {
                            if (row instanceof BlobTableInfo) {
                                return ((BlobTableInfo) row).blobsPath();
                            }
                            return null;
                        }))
                .put(InformationTablesTableInfo.Columns.ROUTING_HASH_FUNCTION,
                        () -> RowContextCollectorExpression.objToBytesRef(row -> {
                            if (row instanceof ShardedTable) {
                                return new BytesRef(IndexMappings.DEFAULT_ROUTING_HASH_FUNCTION_PRETTY_NAME);
                            }
                            return null;
                        }))
                .put(InformationTablesTableInfo.Columns.CLOSED,
                        () -> RowContextCollectorExpression.forFunction(row -> {
                            if (row instanceof ShardedTable) {
                                return ((ShardedTable) row).isClosed();
                            }
                            return null;
                        }))
                .put(InformationTablesTableInfo.Columns.SELF_REFERENCING_COLUMN_NAME,
                        () -> RowContextCollectorExpression.objToBytesRef(r -> SELF_REFERENCING_COLUMN_NAME))
                .put(InformationTablesTableInfo.Columns.REFERENCE_GENERATION,
                        () -> RowContextCollectorExpression.objToBytesRef(r -> REFERENCE_GENERATION))
                .put(InformationTablesTableInfo.Columns.TABLE_VERSION, TablesVersionExpression::new)
                .put(InformationTablesTableInfo.Columns.TABLE_SETTINGS, TablesSettingsExpression::new).build();
    }

    private static Reference createRef(ColumnIdent columnIdent, DataType dataType) {
        return new Reference(new ReferenceIdent(IDENT, columnIdent), RowGranularity.DOC, dataType);
    }

    InformationTablesTableInfo() {
        super(IDENT, ImmutableList.of(Columns.TABLE_SCHEMA, Columns.TABLE_NAME), ImmutableSortedMap
                .<ColumnIdent, Reference>naturalOrder().put(Columns.TABLE_SCHEMA, References.TABLE_SCHEMA)
                .put(Columns.TABLE_NAME, References.TABLE_NAME).put(Columns.TABLE_CATALOG, References.TABLE_CATALOG)
                .put(Columns.TABLE_TYPE, References.TABLE_TYPE)
                .put(Columns.NUMBER_OF_SHARDS, References.NUMBER_OF_SHARDS)
                .put(Columns.NUMBER_OF_REPLICAS, References.NUMBER_OF_REPLICAS)
                .put(Columns.CLUSTERED_BY, References.CLUSTERED_BY)
                .put(Columns.PARTITIONED_BY, References.PARTITIONED_BY)
                .put(Columns.BLOBS_PATH, References.BLOBS_PATH).put(Columns.COLUMN_POLICY, References.COLUMN_POLICY)
                .put(Columns.ROUTING_HASH_FUNCTION, References.ROUTING_HASH_FUNCTION)
                .put(Columns.TABLE_VERSION, References.TABLE_VERSION)
                .put(Columns.TABLE_VERSION_CREATED, References.TABLE_VERSION_CREATED)
                .put(Columns.TABLE_VERSION_CREATED_CRATEDB, References.TABLE_VERSION_CREATED_CRATEDB)
                .put(Columns.TABLE_VERSION_CREATED_ES, References.TABLE_VERSION_CREATED_ES)
                .put(Columns.TABLE_VERSION_UPGRADED, References.TABLE_VERSION_UPGRADED)
                .put(Columns.TABLE_VERSION_UPGRADED_CRATEDB, References.TABLE_VERSION_UPGRADED_CRATEDB)
                .put(Columns.TABLE_VERSION_UPGRADED_ES, References.TABLE_VERSION_UPGRADED_ES)
                .put(Columns.CLOSED, References.CLOSED)
                .put(Columns.REFERENCE_GENERATION, References.REFERENCE_GENERATION)
                .put(Columns.SELF_REFERENCING_COLUMN_NAME, References.SELF_REFERENCING_COLUMN_NAME)
                .put(Columns.TABLE_SETTINGS, References.TABLE_SETTINGS)
                .put(Columns.TABLE_SETTINGS_BLOCKS, References.TABLE_SETTINGS_BLOCKS)
                .put(Columns.TABLE_SETTINGS_BLOCKS_READ_ONLY, References.TABLE_SETTINGS_BLOCKS_READ_ONLY)
                .put(Columns.TABLE_SETTINGS_BLOCKS_READ, References.TABLE_SETTINGS_BLOCKS_READ)
                .put(Columns.TABLE_SETTINGS_BLOCKS_WRITE, References.TABLE_SETTINGS_BLOCKS_WRITE)
                .put(Columns.TABLE_SETTINGS_BLOCKS_METADATA, References.TABLE_SETTINGS_BLOCKS_METADATA)
                .put(Columns.TABLE_SETTINGS_TRANSLOG, References.TABLE_SETTINGS_TRANSLOG)
                .put(Columns.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_SIZE,
                        References.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_SIZE)
                .put(Columns.TABLE_SETTINGS_TRANSLOG_SYNC_INTERVAL,
                        References.TABLE_SETTINGS_TRANSLOG_SYNC_INTERVAL)
                .put(Columns.TABLE_SETTINGS_REFRESH_INTERVAL, References.TABLE_SETTINGS_REFRESH_INTERVAL)
                .put(Columns.TABLE_SETTINGS_ROUTING, References.TABLE_SETTINGS_ROUTING)
                .put(Columns.TABLE_SETTINGS_ROUTING_ALLOCATION, References.TABLE_SETTINGS_ROUTING_ALLOCATION)
                .put(Columns.TABLE_SETTINGS_ROUTING_ALLOCATION_ENABLE,
                        References.TABLE_SETTINGS_ROUTING_ALLOCATION_ENABLE)
                .put(Columns.TABLE_SETTINGS_ROUTING_ALLOCATION_TOTAL_SHARDS_PER_NODE,
                        References.TABLE_SETTINGS_ROUTING_ALLOCATION_TOTAL_SHARDS_PER_NODE)
                .put(Columns.TABLE_SETTINGS_WARMER, References.TABLE_SETTINGS_WARMER)
                .put(Columns.TABLE_SETTINGS_WARMER_ENABLED, References.TABLE_SETTINGS_WARMER_ENABLED)
                .put(Columns.TABLE_SETTINGS_WRITE, References.TABLE_SETTINGS_WRITE)
                .put(Columns.TABLE_SETTINGS_WRITE_WAIT_FOT_ACTIVE_SHARDS,
                        References.TABLE_SETTINGS_WRITE_WAIT_FOT_ACTIVE_SHARDS)
                .put(Columns.TABLE_SETTINGS_UNASSIGNED, References.TABLE_SETTINGS_UNASSIGNED)
                .put(Columns.TABLE_SETTINGS_UNASSIGNED_NODE_LEFT, References.TABLE_SETTINGS_UNASSIGNED_NODE_LEFT)
                .put(Columns.TABLE_SETTINGS_UNASSIGNED_NODE_LEFT_DELAYED_TIMEOUT,
                        References.TABLE_SETTINGS_UNASSIGNED_NODE_LEFT_DELAYED_TIMEOUT)
                .put(Columns.TABLE_SETTINGS_MAPPING, References.TABLE_SETTINGS_MAPPING)
                .put(Columns.TABLE_SETTINGS_MAPPING_TOTAL_FIELDS, References.TABLE_SETTINGS_MAPPING_TOTAL_FIELDS)
                .put(Columns.TABLE_SETTINGS_MAPPING_TOTAL_FIELDS_LIMIT,
                        References.TABLE_SETTINGS_MAPPING_TOTAL_FIELDS_LIMIT)
                .build(),
                ImmutableList.of(References.BLOBS_PATH, References.CLOSED, References.CLUSTERED_BY,
                        References.COLUMN_POLICY, References.NUMBER_OF_REPLICAS, References.NUMBER_OF_SHARDS,
                        References.PARTITIONED_BY, References.REFERENCE_GENERATION,
                        References.ROUTING_HASH_FUNCTION, References.SELF_REFERENCING_COLUMN_NAME,
                        References.TABLE_SETTINGS, References.TABLE_CATALOG, References.TABLE_NAME,
                        References.TABLE_SCHEMA, References.TABLE_TYPE, References.TABLE_VERSION));
    }
}