/* * 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.sys; import com.google.common.collect.ImmutableList; import io.crate.analyze.WhereClause; import io.crate.metadata.*; import io.crate.metadata.table.ColumnPolicy; import io.crate.metadata.table.ColumnRegistrar; import io.crate.metadata.table.StaticTableInfo; import io.crate.types.*; import org.elasticsearch.cluster.service.ClusterService; import javax.annotation.Nullable; public class SysNodesTableInfo extends StaticTableInfo { public static final String SYS_COL_NAME = "_node"; public static final ColumnIdent SYS_COL_IDENT = new ColumnIdent(SYS_COL_NAME); public static final TableIdent IDENT = new TableIdent(SysSchemaInfo.NAME, "nodes"); private static final ImmutableList<ColumnIdent> PRIMARY_KEY = ImmutableList.of(new ColumnIdent("id")); private static final RowGranularity GRANULARITY = RowGranularity.DOC; public static final String SYS_COL_ID = "id"; public static final String SYS_COL_NODE_NAME = "name"; public static final String SYS_COL_HOSTNAME = "hostname"; public static final String SYS_COL_REST_URL = "rest_url"; public static final String SYS_COL_PORT = "port"; public static final String SYS_COL_LOAD = "load"; public static final String SYS_COL_MEM = "mem"; public static final String SYS_COL_HEAP = "heap"; public static final String SYS_COL_VERSION = "version"; public static final String SYS_COL_THREAD_POOLS = "thread_pools"; public static final String SYS_COL_NETWORK = "network"; public static final String SYS_COL_OS = "os"; public static final String SYS_COL_OS_INFO = "os_info"; public static final String SYS_COL_PROCESS = "process"; public static final String SYS_COL_FS = "fs"; private static final DataType OBJECT_ARRAY_TYPE = new ArrayType(DataTypes.OBJECT); public static class Columns { public static final ColumnIdent ID = new ColumnIdent(SYS_COL_ID); public static final ColumnIdent NAME = new ColumnIdent(SYS_COL_NODE_NAME); public static final ColumnIdent HOSTNAME = new ColumnIdent(SYS_COL_HOSTNAME); public static final ColumnIdent REST_URL = new ColumnIdent(SYS_COL_REST_URL); public static final ColumnIdent PORT = new ColumnIdent(SYS_COL_PORT); public static final ColumnIdent PORT_HTTP = new ColumnIdent(SYS_COL_PORT, ImmutableList.of("http")); public static final ColumnIdent PORT_TRANSPORT = new ColumnIdent(SYS_COL_PORT, ImmutableList.of("transport")); public static final ColumnIdent PORT_PSQL = new ColumnIdent(SYS_COL_PORT, ImmutableList.of("psql")); public static final ColumnIdent LOAD = new ColumnIdent(SYS_COL_LOAD); public static final ColumnIdent LOAD_1 = new ColumnIdent(SYS_COL_LOAD, ImmutableList.of("1")); public static final ColumnIdent LOAD_5 = new ColumnIdent(SYS_COL_LOAD, ImmutableList.of("5")); public static final ColumnIdent LOAD_15 = new ColumnIdent(SYS_COL_LOAD, ImmutableList.of("15")); public static final ColumnIdent LOAD_PROBE_TS = new ColumnIdent(SYS_COL_LOAD, ImmutableList.of("probe_timestamp")); public static final ColumnIdent MEM = new ColumnIdent(SYS_COL_MEM); public static final ColumnIdent MEM_FREE = new ColumnIdent(SYS_COL_MEM, ImmutableList.of("free")); public static final ColumnIdent MEM_USED = new ColumnIdent(SYS_COL_MEM, ImmutableList.of("used")); public static final ColumnIdent MEM_FREE_PERCENT = new ColumnIdent(SYS_COL_MEM, ImmutableList.of("free_percent")); public static final ColumnIdent MEM_USED_PERCENT = new ColumnIdent(SYS_COL_MEM, ImmutableList.of("used_percent")); public static final ColumnIdent MEM_PROBE_TS = new ColumnIdent(SYS_COL_MEM, ImmutableList.of("probe_timestamp")); public static final ColumnIdent HEAP = new ColumnIdent(SYS_COL_HEAP); public static final ColumnIdent HEAP_FREE = new ColumnIdent(SYS_COL_HEAP, ImmutableList.of("free")); public static final ColumnIdent HEAP_USED = new ColumnIdent(SYS_COL_HEAP, ImmutableList.of("used")); public static final ColumnIdent HEAP_MAX = new ColumnIdent(SYS_COL_HEAP, ImmutableList.of("max")); public static final ColumnIdent HEAP_PROBE_TS = new ColumnIdent(SYS_COL_HEAP, ImmutableList.of("probe_timestamp")); public static final ColumnIdent VERSION = new ColumnIdent(SYS_COL_VERSION); public static final ColumnIdent VERSION_NUMBER = new ColumnIdent(SYS_COL_VERSION, ImmutableList.of("number")); public static final ColumnIdent VERSION_BUILD_HASH = new ColumnIdent(SYS_COL_VERSION, ImmutableList.of("build_hash")); public static final ColumnIdent VERSION_BUILD_SNAPSHOT = new ColumnIdent(SYS_COL_VERSION, ImmutableList.of("build_snapshot")); public static final ColumnIdent THREAD_POOLS = new ColumnIdent(SYS_COL_THREAD_POOLS); public static final ColumnIdent THREAD_POOLS_NAME = new ColumnIdent(SYS_COL_THREAD_POOLS, ImmutableList.of("name")); public static final ColumnIdent THREAD_POOLS_ACTIVE = new ColumnIdent(SYS_COL_THREAD_POOLS, ImmutableList.of("active")); public static final ColumnIdent THREAD_POOLS_REJECTED = new ColumnIdent(SYS_COL_THREAD_POOLS, ImmutableList.of("rejected")); public static final ColumnIdent THREAD_POOLS_LARGEST = new ColumnIdent(SYS_COL_THREAD_POOLS, ImmutableList.of("largest")); public static final ColumnIdent THREAD_POOLS_COMPLETED = new ColumnIdent(SYS_COL_THREAD_POOLS, ImmutableList.of("completed")); public static final ColumnIdent THREAD_POOLS_THREADS = new ColumnIdent(SYS_COL_THREAD_POOLS, ImmutableList.of("threads")); public static final ColumnIdent THREAD_POOLS_QUEUE = new ColumnIdent(SYS_COL_THREAD_POOLS, ImmutableList.of("queue")); public static final ColumnIdent NETWORK = new ColumnIdent(SYS_COL_NETWORK); public static final ColumnIdent NETWORK_PROBE_TS = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("probe_timestamp")); public static final ColumnIdent NETWORK_TCP = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp")); public static final ColumnIdent NETWORK_TCP_CONNECTIONS = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "connections")); public static final ColumnIdent NETWORK_TCP_CONNECTIONS_INITIATED = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "connections", "initiated")); public static final ColumnIdent NETWORK_TCP_CONNECTIONS_ACCEPTED = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "connections", "accepted")); public static final ColumnIdent NETWORK_TCP_CONNECTIONS_CURR_ESTABLISHED = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "connections", "curr_established")); public static final ColumnIdent NETWORK_TCP_CONNECTIONS_DROPPED = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "connections", "dropped")); public static final ColumnIdent NETWORK_TCP_CONNECTIONS_EMBRYONIC_DROPPED = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "connections", "embryonic_dropped")); public static final ColumnIdent NETWORK_TCP_PACKETS = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "packets")); public static final ColumnIdent NETWORK_TCP_PACKETS_SENT = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "packets", "sent")); public static final ColumnIdent NETWORK_TCP_PACKETS_RECEIVED = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "packets", "received")); public static final ColumnIdent NETWORK_TCP_PACKETS_RETRANSMITTED = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "packets", "retransmitted")); public static final ColumnIdent NETWORK_TCP_PACKETS_ERRORS_RECEIVED = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "packets", "errors_received")); public static final ColumnIdent NETWORK_TCP_PACKETS_RST_SENT = new ColumnIdent(SYS_COL_NETWORK, ImmutableList.of("tcp", "packets", "rst_sent")); public static final ColumnIdent OS = new ColumnIdent(SYS_COL_OS); public static final ColumnIdent OS_UPTIME = new ColumnIdent(SYS_COL_OS, ImmutableList.of("uptime")); public static final ColumnIdent OS_TIMESTAMP = new ColumnIdent(SYS_COL_OS, ImmutableList.of("timestamp")); public static final ColumnIdent OS_PROBE_TS = new ColumnIdent(SYS_COL_OS, ImmutableList.of("probe_timestamp")); public static final ColumnIdent OS_CPU = new ColumnIdent(SYS_COL_OS, ImmutableList.of("cpu")); public static final ColumnIdent OS_CPU_SYSTEM = new ColumnIdent(SYS_COL_OS, ImmutableList.of("cpu", "system")); public static final ColumnIdent OS_CPU_USER = new ColumnIdent(SYS_COL_OS, ImmutableList.of("cpu", "user")); public static final ColumnIdent OS_CPU_IDLE = new ColumnIdent(SYS_COL_OS, ImmutableList.of("cpu", "idle")); public static final ColumnIdent OS_CPU_USED = new ColumnIdent(SYS_COL_OS, ImmutableList.of("cpu", "used")); public static final ColumnIdent OS_CPU_STOLEN = new ColumnIdent(SYS_COL_OS, ImmutableList.of("cpu", "stolen")); public static final ColumnIdent OS_INFO = new ColumnIdent(SYS_COL_OS_INFO); public static final ColumnIdent OS_INFO_AVAIL_PROCESSORS = new ColumnIdent(SYS_COL_OS_INFO, ImmutableList.of("available_processors")); public static final ColumnIdent OS_INFO_NAME = new ColumnIdent(SYS_COL_OS_INFO, ImmutableList.of("name")); public static final ColumnIdent OS_INFO_ARCH = new ColumnIdent(SYS_COL_OS_INFO, ImmutableList.of("arch")); public static final ColumnIdent OS_INFO_VERSION = new ColumnIdent(SYS_COL_OS_INFO, ImmutableList.of("version")); public static final ColumnIdent OS_INFO_JVM = new ColumnIdent(SYS_COL_OS_INFO, ImmutableList.of("jvm")); public static final ColumnIdent OS_INFO_JVM_VERSION = new ColumnIdent(SYS_COL_OS_INFO, ImmutableList.of("jvm", "version")); public static final ColumnIdent OS_INFO_JVM_NAME = new ColumnIdent(SYS_COL_OS_INFO, ImmutableList.of("jvm", "vm_name")); public static final ColumnIdent OS_INFO_JVM_VENDOR = new ColumnIdent(SYS_COL_OS_INFO, ImmutableList.of("jvm", "vm_vendor")); public static final ColumnIdent OS_INFO_JVM_VM_VERSION = new ColumnIdent(SYS_COL_OS_INFO, ImmutableList.of("jvm", "vm_version")); public static final ColumnIdent PROCESS = new ColumnIdent(SYS_COL_PROCESS); public static final ColumnIdent PROCESS_OPEN_FILE_DESCR = new ColumnIdent(SYS_COL_PROCESS, ImmutableList.of("open_file_descriptors")); public static final ColumnIdent PROCESS_MAX_OPEN_FILE_DESCR = new ColumnIdent(SYS_COL_PROCESS, ImmutableList.of("max_open_file_descriptors")); public static final ColumnIdent PROCESS_PROBE_TS = new ColumnIdent(SYS_COL_PROCESS, ImmutableList.of("probe_timestamp")); public static final ColumnIdent PROCESS_CPU = new ColumnIdent(SYS_COL_PROCESS, ImmutableList.of("cpu")); public static final ColumnIdent PROCESS_CPU_PERCENT = new ColumnIdent(SYS_COL_PROCESS, ImmutableList.of("cpu", "percent")); public static final ColumnIdent PROCESS_CPU_USER = new ColumnIdent(SYS_COL_PROCESS, ImmutableList.of("cpu", "user")); public static final ColumnIdent PROCESS_CPU_SYSTEM = new ColumnIdent(SYS_COL_PROCESS, ImmutableList.of("cpu", "system")); public static final ColumnIdent FS = new ColumnIdent(SYS_COL_FS); public static final ColumnIdent FS_TOTAL = new ColumnIdent(SYS_COL_FS, ImmutableList.of("total")); public static final ColumnIdent FS_TOTAL_SIZE = new ColumnIdent(SYS_COL_FS, ImmutableList.of("total", "size")); public static final ColumnIdent FS_TOTAL_USED = new ColumnIdent(SYS_COL_FS, ImmutableList.of("total", "used")); public static final ColumnIdent FS_TOTAL_AVAILABLE = new ColumnIdent(SYS_COL_FS, ImmutableList.of("total", "available")); public static final ColumnIdent FS_TOTAL_READS = new ColumnIdent(SYS_COL_FS, ImmutableList.of("total", "reads")); public static final ColumnIdent FS_TOTAL_BYTES_READ = new ColumnIdent(SYS_COL_FS, ImmutableList.of("total", "bytes_read")); public static final ColumnIdent FS_TOTAL_WRITES = new ColumnIdent(SYS_COL_FS, ImmutableList.of("total", "writes")); public static final ColumnIdent FS_TOTAL_BYTES_WRITTEN = new ColumnIdent(SYS_COL_FS, ImmutableList.of("total", "bytes_written")); public static final ColumnIdent FS_DISKS = new ColumnIdent(SYS_COL_FS, ImmutableList.of("disks")); public static final ColumnIdent FS_DISKS_DEV = new ColumnIdent(SYS_COL_FS, ImmutableList.of("disks", "dev")); public static final ColumnIdent FS_DISKS_SIZE = new ColumnIdent(SYS_COL_FS, ImmutableList.of("disks", "size")); public static final ColumnIdent FS_DISKS_USED = new ColumnIdent(SYS_COL_FS, ImmutableList.of("disks", "used")); public static final ColumnIdent FS_DISKS_AVAILABLE = new ColumnIdent(SYS_COL_FS, ImmutableList.of("disks", "available")); public static final ColumnIdent FS_DISKS_READS = new ColumnIdent(SYS_COL_FS, ImmutableList.of("disks", "reads")); public static final ColumnIdent FS_DISKS_BYTES_READ = new ColumnIdent(SYS_COL_FS, ImmutableList.of("disks", "bytes_read")); public static final ColumnIdent FS_DISKS_WRITES = new ColumnIdent(SYS_COL_FS, ImmutableList.of("disks", "writes")); public static final ColumnIdent FS_DISKS_BYTES_WRITTEN = new ColumnIdent(SYS_COL_FS, ImmutableList.of("disks", "bytes_written")); public static final ColumnIdent FS_DATA = new ColumnIdent(SYS_COL_FS, ImmutableList.of("data")); public static final ColumnIdent FS_DATA_DEV = new ColumnIdent(SYS_COL_FS, ImmutableList.of("data", "dev")); public static final ColumnIdent FS_DATA_PATH = new ColumnIdent(SYS_COL_FS, ImmutableList.of("data", "path")); } private final TableColumn tableColumn; private final ClusterService clusterService; public SysNodesTableInfo(ClusterService clusterService) { super(IDENT, new ColumnRegistrar(IDENT, GRANULARITY) .register(Columns.ID, DataTypes.STRING) .register(Columns.NAME, DataTypes.STRING) .register(Columns.HOSTNAME, DataTypes.STRING) .register(Columns.REST_URL, DataTypes.STRING) .register(Columns.PORT, DataTypes.OBJECT) .register(Columns.PORT_HTTP, DataTypes.INTEGER) .register(Columns.PORT_TRANSPORT, DataTypes.INTEGER) .register(Columns.PORT_PSQL, DataTypes.INTEGER) .register(Columns.LOAD, DataTypes.OBJECT) .register(Columns.LOAD_1, DataTypes.DOUBLE) .register(Columns.LOAD_5, DataTypes.DOUBLE) .register(Columns.LOAD_15, DataTypes.DOUBLE) .register(Columns.LOAD_PROBE_TS, DataTypes.TIMESTAMP) .register(Columns.MEM, DataTypes.OBJECT) .register(Columns.MEM_FREE, DataTypes.LONG) .register(Columns.MEM_USED, DataTypes.LONG) .register(Columns.MEM_FREE_PERCENT, DataTypes.SHORT) .register(Columns.MEM_USED_PERCENT, DataTypes.SHORT) .register(Columns.MEM_PROBE_TS, DataTypes.TIMESTAMP) .register(Columns.HEAP, DataTypes.OBJECT) .register(Columns.HEAP_FREE, DataTypes.LONG) .register(Columns.HEAP_USED, DataTypes.LONG) .register(Columns.HEAP_MAX, DataTypes.LONG) .register(Columns.HEAP_PROBE_TS, DataTypes.TIMESTAMP) .register(Columns.VERSION, DataTypes.OBJECT) .register(Columns.VERSION_NUMBER, StringType.INSTANCE) .register(Columns.VERSION_BUILD_HASH, StringType.INSTANCE) .register(Columns.VERSION_BUILD_SNAPSHOT, DataTypes.BOOLEAN) .register(Columns.THREAD_POOLS, OBJECT_ARRAY_TYPE) .register(Columns.THREAD_POOLS_NAME, DataTypes.STRING) .register(Columns.THREAD_POOLS_ACTIVE, DataTypes.INTEGER) .register(Columns.THREAD_POOLS_REJECTED, DataTypes.LONG) .register(Columns.THREAD_POOLS_LARGEST, DataTypes.INTEGER) .register(Columns.THREAD_POOLS_COMPLETED, DataTypes.LONG) .register(Columns.THREAD_POOLS_THREADS, DataTypes.INTEGER) .register(Columns.THREAD_POOLS_QUEUE, DataTypes.INTEGER) .register(Columns.NETWORK, DataTypes.OBJECT) .register(Columns.NETWORK_PROBE_TS, DataTypes.TIMESTAMP) .register(Columns.NETWORK_TCP, DataTypes.OBJECT) .register(Columns.NETWORK_TCP_CONNECTIONS, DataTypes.OBJECT) .register(Columns.NETWORK_TCP_CONNECTIONS_INITIATED, DataTypes.LONG) .register(Columns.NETWORK_TCP_CONNECTIONS_ACCEPTED, DataTypes.LONG) .register(Columns.NETWORK_TCP_CONNECTIONS_CURR_ESTABLISHED, DataTypes.LONG) .register(Columns.NETWORK_TCP_CONNECTIONS_DROPPED, DataTypes.LONG) .register(Columns.NETWORK_TCP_CONNECTIONS_EMBRYONIC_DROPPED, DataTypes.LONG) .register(Columns.NETWORK_TCP_PACKETS, DataTypes.OBJECT) .register(Columns.NETWORK_TCP_PACKETS_SENT, DataTypes.LONG) .register(Columns.NETWORK_TCP_PACKETS_RECEIVED, DataTypes.LONG) .register(Columns.NETWORK_TCP_PACKETS_RETRANSMITTED, DataTypes.LONG) .register(Columns.NETWORK_TCP_PACKETS_ERRORS_RECEIVED, DataTypes.LONG) .register(Columns.NETWORK_TCP_PACKETS_RST_SENT, DataTypes.LONG) .register(Columns.OS, DataTypes.OBJECT) .register(Columns.OS_UPTIME, DataTypes.LONG) .register(Columns.OS_TIMESTAMP, DataTypes.TIMESTAMP) .register(Columns.OS_PROBE_TS, DataTypes.TIMESTAMP) .register(Columns.OS_CPU, DataTypes.OBJECT) .register(Columns.OS_CPU_SYSTEM, DataTypes.SHORT) .register(Columns.OS_CPU_USER, DataTypes.SHORT) .register(Columns.OS_CPU_IDLE, DataTypes.SHORT) .register(Columns.OS_CPU_USED, DataTypes.SHORT) .register(Columns.OS_CPU_STOLEN, DataTypes.SHORT) .register(Columns.OS_INFO, DataTypes.OBJECT) .register(Columns.OS_INFO_AVAIL_PROCESSORS, DataTypes.INTEGER) .register(Columns.OS_INFO_NAME, DataTypes.STRING) .register(Columns.OS_INFO_ARCH, DataTypes.STRING) .register(Columns.OS_INFO_VERSION, DataTypes.STRING) .register(Columns.OS_INFO_JVM, DataTypes.OBJECT) .register(Columns.OS_INFO_JVM_VERSION, DataTypes.STRING) .register(Columns.OS_INFO_JVM_NAME, DataTypes.STRING) .register(Columns.OS_INFO_JVM_VENDOR, DataTypes.STRING) .register(Columns.OS_INFO_JVM_VM_VERSION, DataTypes.STRING) .register(Columns.PROCESS, DataTypes.OBJECT) .register(Columns.PROCESS_OPEN_FILE_DESCR, DataTypes.LONG) .register(Columns.PROCESS_MAX_OPEN_FILE_DESCR, DataTypes.LONG) .register(Columns.PROCESS_PROBE_TS, DataTypes.TIMESTAMP) .register(Columns.PROCESS_CPU, DataTypes.OBJECT) .register(Columns.PROCESS_CPU_PERCENT, DataTypes.SHORT) .register(Columns.PROCESS_CPU_USER, DataTypes.LONG) .register(Columns.PROCESS_CPU_SYSTEM, DataTypes.LONG) .register(Columns.FS, DataTypes.OBJECT) .register(Columns.FS_TOTAL, DataTypes.OBJECT) .register(Columns.FS_TOTAL_SIZE, DataTypes.LONG) .register(Columns.FS_TOTAL_USED, DataTypes.LONG) .register(Columns.FS_TOTAL_AVAILABLE, DataTypes.LONG) .register(Columns.FS_TOTAL_READS, DataTypes.LONG) .register(Columns.FS_TOTAL_BYTES_READ, DataTypes.LONG) .register(Columns.FS_TOTAL_WRITES, DataTypes.LONG) .register(Columns.FS_TOTAL_BYTES_WRITTEN, DataTypes.LONG) .register(Columns.FS_DISKS, OBJECT_ARRAY_TYPE) .register(Columns.FS_DISKS_DEV, DataTypes.STRING) .register(Columns.FS_DISKS_SIZE, DataTypes.LONG) .register(Columns.FS_DISKS_USED, DataTypes.LONG) .register(Columns.FS_DISKS_AVAILABLE, DataTypes.LONG) .register(Columns.FS_DISKS_READS, DataTypes.LONG) .register(Columns.FS_DISKS_BYTES_READ, DataTypes.LONG) .register(Columns.FS_DISKS_WRITES, DataTypes.LONG) .register(Columns.FS_DISKS_BYTES_WRITTEN, DataTypes.LONG) .register(Columns.FS_DATA, OBJECT_ARRAY_TYPE) .register(Columns.FS_DATA_DEV, DataTypes.STRING) .register(Columns.FS_DATA_PATH, DataTypes.STRING), PRIMARY_KEY); this.clusterService = clusterService; this.tableColumn = new TableColumn(SYS_COL_IDENT, columnMap); } public static Reference tableColumnInfo(TableIdent tableIdent) { return new Reference( new ReferenceIdent(tableIdent, SYS_COL_IDENT), RowGranularity.NODE, ObjectType.INSTANCE, ColumnPolicy.STRICT, Reference.IndexType.NOT_ANALYZED, true ); } public TableColumn tableColumn() { return tableColumn; } @Override public RowGranularity rowGranularity() { return GRANULARITY; } @Override public Routing getRouting(WhereClause whereClause, @Nullable String preference) { return Routing.forTableOnSingleNode(IDENT, clusterService.localNode().getId()); } }