Skip to content

Commit

Permalink
Merge pull request #2042 from crate/h/part-settings-expr
Browse files Browse the repository at this point in the history
expose settings in information_schema.partitions
  • Loading branch information
chaudum committed May 18, 2015
2 parents 54c1042 + 686f5ab commit ad09c64
Show file tree
Hide file tree
Showing 19 changed files with 606 additions and 168 deletions.
15 changes: 8 additions & 7 deletions docs/sql/dml.txt
Original file line number Diff line number Diff line change
Expand Up @@ -122,15 +122,16 @@ table with data partitioned by year::

Resulting partitions of the last insert by query::

cr> select * from information_schema.table_partitions
cr> select table_name, partition_ident, values, number_of_shards, number_of_replicas
... from information_schema.table_partitions
... where table_name = 'locations_parted'
... order by partition_ident;
+------------------+-------------+-----------------+------------------+------------------+--------------------+
| table_name | schema_name | partition_ident | values | number_of_shards | number_of_replicas |
+------------------+-------------+-----------------+------------------+------------------+--------------------+
| locations_parted | doc | 042j2e9n74 | {"year": "1979"} | 2 | 0 |
| locations_parted | doc | 042j4c1h6c | {"year": "2013"} | 2 | 0 |
+------------------+-------------+-----------------+------------------+------------------+--------------------+
+------------------+-----------------+------------------+------------------+--------------------+
| table_name | partition_ident | values | number_of_shards | number_of_replicas |
+------------------+-----------------+------------------+------------------+--------------------+
| locations_parted | 042j2e9n74 | {"year": "1979"} | 2 | 0 |
| locations_parted | 042j4c1h6c | {"year": "2013"} | 2 | 0 |
+------------------+-----------------+------------------+------------------+--------------------+
SELECT 2 rows in set (... sec)

.. Hidden: drop previously created table
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,19 @@ public class AlterPartitionedTableParameterInfo extends TableParameterInfo {
.add(NUMBER_OF_REPLICAS)
.add(NUMBER_OF_SHARDS)
.add(REFRESH_INTERVAL)
.add(READ_ONLY)
.add(BLOCKS_READ)
.add(BLOCKS_WRITE)
.add(BLOCKS_METADATA)
.add(FLUSH_THRESHOLD_OPS)
.add(FLUSH_THRESHOLD_SIZE)
.add(FLUSH_THRESHOLD_PERIOD)
.add(FLUSH_DISABLE)
.add(TRANSLOG_INTERVAL)
.add(ROUTING_ALLOCATION_ENABLE)
.add(TOTAL_SHARDS_PER_NODE)
.add(RECOVERY_INITIAL_SHARDS)
.add(WARMER_ENABLED)
.build();

protected static final TableParameterInfo PARTITION_TABLE_PARAMETER_INFO = new TablePartitionParameterInfo();
Expand Down
21 changes: 21 additions & 0 deletions sql/src/main/java/io/crate/analyze/TableParameterInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,14 @@
package io.crate.analyze;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import io.crate.blob.v2.BlobIndices;
import io.crate.metadata.settings.CrateTableSettings;
import io.crate.metadata.table.ColumnPolicy;
import org.elasticsearch.cluster.metadata.IndexMetaData;
import org.elasticsearch.cluster.routing.allocation.decider.EnableAllocationDecider;
import org.elasticsearch.cluster.routing.allocation.decider.ShardsLimitAllocationDecider;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.gateway.local.LocalGatewayAllocator;
import org.elasticsearch.index.shard.IndexShard;
import org.elasticsearch.index.translog.TranslogService;
Expand Down Expand Up @@ -108,4 +111,22 @@ public ImmutableList<String> supportedMappings() {
return SUPPORTED_MAPPINGS;
}

public static ImmutableMap<String,Object> tableParametersFromIndexMetaData(IndexMetaData metaData) {
Settings settings = metaData.settings();
return ImmutableMap.<String,Object>builder()
.put(TableParameterInfo.READ_ONLY, CrateTableSettings.READ_ONLY.extract(settings))
.put(TableParameterInfo.BLOCKS_READ, CrateTableSettings.BLOCKS_READ.extract(settings))
.put(TableParameterInfo.BLOCKS_WRITE, CrateTableSettings.BLOCKS_WRITE.extract(settings))
.put(TableParameterInfo.BLOCKS_METADATA, CrateTableSettings.BLOCKS_METADATA.extract(settings))
.put(TableParameterInfo.FLUSH_THRESHOLD_OPS, CrateTableSettings.FLUSH_THRESHOLD_OPS.extract(settings))
.put(TableParameterInfo.FLUSH_THRESHOLD_PERIOD, CrateTableSettings.FLUSH_THRESHOLD_PERIOD.extract(settings))
.put(TableParameterInfo.FLUSH_THRESHOLD_SIZE, CrateTableSettings.FLUSH_THRESHOLD_SIZE.extract(settings))
.put(TableParameterInfo.FLUSH_DISABLE, CrateTableSettings.FLUSH_DISABLE.extract(settings))
.put(TableParameterInfo.TRANSLOG_INTERVAL, CrateTableSettings.TRANSLOG_INTERVAL.extract(settings))
.put(TableParameterInfo.ROUTING_ALLOCATION_ENABLE, CrateTableSettings.ROUTING_ALLOCATION_ENABLE.extract(settings))
.put(TableParameterInfo.TOTAL_SHARDS_PER_NODE, CrateTableSettings.TOTAL_SHARDS_PER_NODE.extract(settings))
.put(TableParameterInfo.RECOVERY_INITIAL_SHARDS, CrateTableSettings.RECOVERY_INITIAL_SHARDS.extract(settings))
.put(TableParameterInfo.WARMER_ENABLED, CrateTableSettings.WARMER_ENABLED.extract(settings))
.build();
}
}
11 changes: 10 additions & 1 deletion sql/src/main/java/io/crate/metadata/PartitionInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
package io.crate.metadata;

import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableMap;
import org.apache.lucene.util.BytesRef;

import java.util.Map;
Expand All @@ -31,15 +32,18 @@ public class PartitionInfo {
private final int numberOfShards;
private final BytesRef numberOfReplicas;
private final Map<String, Object> values;
private final ImmutableMap<String, Object> tableParameters;

public PartitionInfo(PartitionName name,
int numberOfShards,
BytesRef numberOfReplicas,
Map<String, Object> values) {
Map<String, Object> values,
ImmutableMap<String, Object> tableParameters) {
this.name = name;
this.numberOfShards = numberOfShards;
this.numberOfReplicas = numberOfReplicas;
this.values = values;
this.tableParameters = tableParameters;
}

public PartitionName name() {
Expand Down Expand Up @@ -88,4 +92,9 @@ public String toString() {
.add("numberOfReplicas", numberOfReplicas)
.toString();
}

public ImmutableMap<String, Object> tableParameters() {
return tableParameters;
}
}

4 changes: 3 additions & 1 deletion sql/src/main/java/io/crate/metadata/PartitionInfos.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import com.google.common.base.Predicates;
import com.google.common.collect.FluentIterable;
import io.crate.Constants;
import io.crate.analyze.TableParameterInfo;
import io.crate.core.NumberOfReplicas;
import io.crate.core.StringUtils;
import io.crate.metadata.doc.PartitionedByMappingExtractor;
Expand Down Expand Up @@ -66,7 +67,8 @@ public PartitionInfo apply(@Nullable ObjectObjectCursor<String, IndexMetaData> i
try {
Map<String, Object> valuesMap = buildValuesMap(partitionName, input.value.mapping(Constants.DEFAULT_MAPPING_TYPE));
BytesRef numberOfReplicas = NumberOfReplicas.fromSettings(input.value.settings());
return new PartitionInfo(partitionName, input.value.getNumberOfShards(), numberOfReplicas, valuesMap);
return new PartitionInfo(partitionName, input.value.getNumberOfShards(), numberOfReplicas, valuesMap,
TableParameterInfo.tableParametersFromIndexMetaData(input.value));
} catch (Exception e) {
Loggers.getLogger(PartitionInfos.class).trace("error extracting partition infos from index {}", e, input.key);
return null; // must filter on null
Expand Down
16 changes: 1 addition & 15 deletions sql/src/main/java/io/crate/metadata/doc/DocIndexMetaData.java
Original file line number Diff line number Diff line change
Expand Up @@ -121,21 +121,7 @@ public DocIndexMetaData(IndexMetaData metaData, TableIdent ident) throws IOExcep
} else {
this.defaultMappingMap = this.defaultMappingMetaData.sourceAsMap();
}
this.tableParameters = ImmutableMap.<String,Object>builder()
.put(TableParameterInfo.READ_ONLY, CrateTableSettings.READ_ONLY.extract(settings))
.put(TableParameterInfo.BLOCKS_READ, CrateTableSettings.BLOCKS_READ.extract(settings))
.put(TableParameterInfo.BLOCKS_WRITE, CrateTableSettings.BLOCKS_WRITE.extract(settings))
.put(TableParameterInfo.BLOCKS_METADATA, CrateTableSettings.BLOCKS_METADATA.extract(settings))
.put(TableParameterInfo.FLUSH_THRESHOLD_OPS, CrateTableSettings.FLUSH_THRESHOLD_OPS.extract(settings))
.put(TableParameterInfo.FLUSH_THRESHOLD_PERIOD, CrateTableSettings.FLUSH_THRESHOLD_PERIOD.extract(settings))
.put(TableParameterInfo.FLUSH_THRESHOLD_SIZE, CrateTableSettings.FLUSH_THRESHOLD_SIZE.extract(settings))
.put(TableParameterInfo.FLUSH_DISABLE, CrateTableSettings.FLUSH_DISABLE.extract(settings))
.put(TableParameterInfo.TRANSLOG_INTERVAL, CrateTableSettings.TRANSLOG_INTERVAL.extract(settings))
.put(TableParameterInfo.ROUTING_ALLOCATION_ENABLE, CrateTableSettings.ROUTING_ALLOCATION_ENABLE.extract(settings))
.put(TableParameterInfo.TOTAL_SHARDS_PER_NODE, CrateTableSettings.TOTAL_SHARDS_PER_NODE.extract(settings))
.put(TableParameterInfo.RECOVERY_INITIAL_SHARDS, CrateTableSettings.RECOVERY_INITIAL_SHARDS.extract(settings))
.put(TableParameterInfo.WARMER_ENABLED, CrateTableSettings.WARMER_ENABLED.extract(settings))
.build();
this.tableParameters = TableParameterInfo.tableParametersFromIndexMetaData(metaData);

prepareCrateMeta();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,22 +38,57 @@ public class InformationPartitionsTableInfo extends InformationTableInfo {
public static final String NAME = "table_partitions";
public static final TableIdent IDENT = new TableIdent(InformationSchemaInfo.NAME, NAME);

public static class Columns {
public static final ColumnIdent TABLE_NAME = new ColumnIdent("table_name");
public static final ColumnIdent SCHEMA_NAME = new ColumnIdent("schema_name");
public static final ColumnIdent PARTITION_IDENT = new ColumnIdent("partition_ident");
public static final ColumnIdent VALUES = new ColumnIdent("values");
public static final ColumnIdent NUMBER_OF_SHARDS = new ColumnIdent("number_of_shards");
public static final ColumnIdent NUMBER_OF_REPLICAS = new ColumnIdent("number_of_replicas");
}

public static class ReferenceInfos {
public static final ReferenceInfo TABLE_NAME = info(Columns.TABLE_NAME, DataTypes.STRING);
public static final ReferenceInfo SCHEMA_NAME = info(Columns.SCHEMA_NAME, DataTypes.STRING);
public static final ReferenceInfo PARTITION_IDENT = info(Columns.PARTITION_IDENT, DataTypes.STRING);
public static final ReferenceInfo VALUES = info(Columns.VALUES, DataTypes.OBJECT);
public static final ReferenceInfo NUMBER_OF_SHARDS = info(Columns.NUMBER_OF_SHARDS, DataTypes.INTEGER);
public static final ReferenceInfo NUMBER_OF_REPLICAS = info(Columns.NUMBER_OF_REPLICAS, DataTypes.STRING);

public static final ReferenceInfo TABLE_SETTINGS = info(Columns.TABLE_SETTINGS, DataTypes.OBJECT);

public static final ReferenceInfo TABLE_SETTINGS_BLOCKS = info(
Columns.TABLE_SETTINGS_BLOCKS, DataTypes.OBJECT);
public static final ReferenceInfo TABLE_SETTINGS_BLOCKS_READ_ONLY = info(
Columns.TABLE_SETTINGS_BLOCKS_READ_ONLY, DataTypes.BOOLEAN);
public static final ReferenceInfo TABLE_SETTINGS_BLOCKS_READ = info(
Columns.TABLE_SETTINGS_BLOCKS_READ, DataTypes.BOOLEAN);
public static final ReferenceInfo TABLE_SETTINGS_BLOCKS_WRITE = info(
Columns.TABLE_SETTINGS_BLOCKS_WRITE, DataTypes.BOOLEAN);
public static final ReferenceInfo TABLE_SETTINGS_BLOCKS_METADATA = info(
Columns.TABLE_SETTINGS_BLOCKS_METADATA, DataTypes.BOOLEAN);

public static final ReferenceInfo TABLE_SETTINGS_TRANSLOG = info(
Columns.TABLE_SETTINGS_TRANSLOG, DataTypes.OBJECT);
public static final ReferenceInfo TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_OPS = info(
Columns.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_OPS, DataTypes.INTEGER);
public static final ReferenceInfo TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_SIZE = info(
Columns.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_SIZE, DataTypes.LONG);
public static final ReferenceInfo TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_PERIOD = info(
Columns.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_PERIOD, DataTypes.LONG);
public static final ReferenceInfo TABLE_SETTINGS_TRANSLOG_DISABLE_FLUSH = info(
Columns.TABLE_SETTINGS_TRANSLOG_DISABLE_FLUSH, DataTypes.BOOLEAN);
public static final ReferenceInfo TABLE_SETTINGS_TRANSLOG_INTERVAL = info(
Columns.TABLE_SETTINGS_TRANSLOG_INTERVAL, DataTypes.LONG);

public static final ReferenceInfo TABLE_SETTINGS_ROUTING= info(
Columns.TABLE_SETTINGS_ROUTING, DataTypes.OBJECT);
public static final ReferenceInfo TABLE_SETTINGS_ROUTING_ALLOCATION = info(
Columns.TABLE_SETTINGS_ROUTING_ALLOCATION, DataTypes.OBJECT);
public static final ReferenceInfo TABLE_SETTINGS_ROUTING_ALLOCATION_ENABLE = info(
Columns.TABLE_SETTINGS_ROUTING_ALLOCATION_ENABLE, DataTypes.STRING);
public static final ReferenceInfo TABLE_SETTINGS_ROUTING_ALLOCATION_TOTAL_SHARDS_PER_NODE = info(
Columns.TABLE_SETTINGS_ROUTING_ALLOCATION_TOTAL_SHARDS_PER_NODE, DataTypes.INTEGER);

public static final ReferenceInfo TABLE_SETTINGS_RECOVERY = info(
Columns.TABLE_SETTINGS_RECOVERY, DataTypes.OBJECT);
public static final ReferenceInfo TABLE_SETTINGS_RECOVERY_INITIAL_SHARDS = info(
Columns.TABLE_SETTINGS_RECOVERY_INITIAL_SHARDS, DataTypes.STRING);
public static final ReferenceInfo TABLE_SETTINGS_WARMER = info(
Columns.TABLE_SETTINGS_WARMER, DataTypes.OBJECT);
public static final ReferenceInfo TABLE_SETTINGS_WARMER_ENABLED = info(
Columns.TABLE_SETTINGS_WARMER_ENABLED, DataTypes.BOOLEAN);
}

private static ReferenceInfo info(ColumnIdent columnIdent, DataType dataType) {
Expand All @@ -71,7 +106,36 @@ protected InformationPartitionsTableInfo(InformationSchemaInfo schemaInfo) {
put(Columns.VALUES, ReferenceInfos.VALUES);
put(Columns.NUMBER_OF_SHARDS, ReferenceInfos.NUMBER_OF_SHARDS);
put(Columns.NUMBER_OF_REPLICAS, ReferenceInfos.NUMBER_OF_REPLICAS);
}}
put(Columns.TABLE_SETTINGS, ReferenceInfos.TABLE_SETTINGS);
put(Columns.TABLE_SETTINGS_BLOCKS, ReferenceInfos.TABLE_SETTINGS_BLOCKS);
put(Columns.TABLE_SETTINGS_BLOCKS_READ_ONLY, ReferenceInfos.TABLE_SETTINGS_BLOCKS_READ_ONLY);
put(Columns.TABLE_SETTINGS_BLOCKS_READ, ReferenceInfos.TABLE_SETTINGS_BLOCKS_READ);
put(Columns.TABLE_SETTINGS_BLOCKS_WRITE, ReferenceInfos.TABLE_SETTINGS_BLOCKS_WRITE);
put(Columns.TABLE_SETTINGS_BLOCKS_METADATA, ReferenceInfos.TABLE_SETTINGS_BLOCKS_METADATA);
put(Columns.TABLE_SETTINGS_TRANSLOG, ReferenceInfos.TABLE_SETTINGS_TRANSLOG);
put(Columns.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_OPS, ReferenceInfos.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_OPS);
put(Columns.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_SIZE, ReferenceInfos.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_SIZE);
put(Columns.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_PERIOD, ReferenceInfos.TABLE_SETTINGS_TRANSLOG_FLUSH_THRESHOLD_PERIOD);
put(Columns.TABLE_SETTINGS_TRANSLOG_DISABLE_FLUSH, ReferenceInfos.TABLE_SETTINGS_TRANSLOG_DISABLE_FLUSH);
put(Columns.TABLE_SETTINGS_TRANSLOG_INTERVAL, ReferenceInfos.TABLE_SETTINGS_TRANSLOG_INTERVAL);
put(Columns.TABLE_SETTINGS_ROUTING, ReferenceInfos.TABLE_SETTINGS_ROUTING);
put(Columns.TABLE_SETTINGS_ROUTING_ALLOCATION, ReferenceInfos.TABLE_SETTINGS_ROUTING_ALLOCATION);
put(Columns.TABLE_SETTINGS_ROUTING_ALLOCATION_ENABLE, ReferenceInfos.TABLE_SETTINGS_ROUTING_ALLOCATION_ENABLE);
put(Columns.TABLE_SETTINGS_ROUTING_ALLOCATION_TOTAL_SHARDS_PER_NODE, ReferenceInfos.TABLE_SETTINGS_ROUTING_ALLOCATION_TOTAL_SHARDS_PER_NODE);
put(Columns.TABLE_SETTINGS_RECOVERY, ReferenceInfos.TABLE_SETTINGS_RECOVERY);
put(Columns.TABLE_SETTINGS_RECOVERY_INITIAL_SHARDS, ReferenceInfos.TABLE_SETTINGS_RECOVERY_INITIAL_SHARDS);
put(Columns.TABLE_SETTINGS_WARMER, ReferenceInfos.TABLE_SETTINGS_WARMER);
put(Columns.TABLE_SETTINGS_WARMER_ENABLED, ReferenceInfos.TABLE_SETTINGS_WARMER_ENABLED);
}},
ImmutableList.of(
ReferenceInfos.TABLE_NAME,
ReferenceInfos.SCHEMA_NAME,
ReferenceInfos.PARTITION_IDENT,
ReferenceInfos.VALUES,
ReferenceInfos.NUMBER_OF_SHARDS,
ReferenceInfos.NUMBER_OF_REPLICAS,
ReferenceInfos.TABLE_SETTINGS
)
);
}
}
Loading

0 comments on commit ad09c64

Please sign in to comment.