package org.voltdb.sysprocs; import java.util.List; import java.util.Map; import org.voltdb.DependencySet; import org.voltdb.ParameterSet; import org.voltdb.ProcInfo; import org.voltdb.VoltSystemProcedure; import org.voltdb.VoltTable; import org.voltdb.VoltTable.ColumnInfo; import org.voltdb.VoltType; import org.voltdb.types.TimestampType; import edu.brown.hstore.PartitionExecutor; import edu.brown.hstore.conf.HStoreConf; /** * Get the value of a HStoreConf parameter from an HStoreSite */ @ProcInfo( singlePartition = true, partitionParam = 0 ) public class GetConfiguration extends VoltSystemProcedure { public static final ColumnInfo nodeResultsColumns[] = { new ColumnInfo("SITE", VoltType.INTEGER), new ColumnInfo("NAME", VoltType.STRING), new ColumnInfo("VALUE", VoltType.STRING), new ColumnInfo("CREATED", VoltType.TIMESTAMP) }; @Override public void initImpl() { // Nothing } @Override public DependencySet executePlanFragment(Long txn_id, Map<Integer, List<VoltTable>> dependencies, int fragmentId, ParameterSet params, PartitionExecutor.SystemProcedureExecutionContext context) { // Nothing to do return (null); } public VoltTable run(String confNames[]) { HStoreConf hstore_conf = executor.getHStoreConf(); for (int i = 0; i < confNames.length; i++) { if (hstore_conf.hasParameter(confNames[i]) == false) { String msg = String.format("Invalid configuration parameter '%s'", confNames[i]); throw new VoltAbortException(msg); } } // FOR VoltTable result = new VoltTable(nodeResultsColumns); TimestampType timestamp = new TimestampType(); for (int i = 0; i < confNames.length; i++) { Object val = hstore_conf.get(confNames[i]); result.addRow(executor.getSiteId(), confNames[i], val.toString(), timestamp); } // FOR return (result); } }