use of io.mycat.beans.mycat.ResultSetBuilder in project Mycat2 by MyCATApache.
the class ShowEnginesSQLHandler method onExecute.
@Override
protected Future<Void> onExecute(SQLRequest<MySqlShowEnginesStatement> request, MycatDataContext dataContext, Response response) {
ResultSetBuilder resultSetBuilder = ResultSetBuilder.create();
resultSetBuilder.addColumnInfo("Engine", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("Support", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("Comment", JDBCType.VARCHAR);
resultSetBuilder.addObjectRowPayload(Arrays.asList("InnoDB", "DEFAULT", "Supports transactions, row-level locking, foreign keys and encryption for tables"));
resultSetBuilder.addObjectRowPayload(Arrays.asList("CSV", "YES", "Stores tables as CSV files"));
resultSetBuilder.addObjectRowPayload(Arrays.asList("MRG_MyISAM", "YES", "Collection of identical MyISAM tables"));
resultSetBuilder.addObjectRowPayload(Arrays.asList("MEMORY", "YES", "Hash based, stored in memory, useful for temporary tables"));
resultSetBuilder.addObjectRowPayload(Arrays.asList("MyISAM", "YES", "Non-transactional engine with good performance and small data footprint"));
resultSetBuilder.addObjectRowPayload(Arrays.asList("SEQUENCE", "YES", "Generated tables filled with sequential values"));
resultSetBuilder.addObjectRowPayload(Arrays.asList("Aria", "YES", "Crash-safe tables with MyISAM heritage"));
resultSetBuilder.addObjectRowPayload(Arrays.asList("PERFORMANCE_SCHEMA", "YES", "Performance Schema"));
return response.sendResultSet(() -> resultSetBuilder.build());
}
use of io.mycat.beans.mycat.ResultSetBuilder in project Mycat2 by MyCATApache.
the class AnalyzeHanlder method onExecute.
@Override
protected Future<Void> onExecute(SQLRequest<MySqlAnalyzeStatement> request, MycatDataContext dataContext, Response response) {
MySqlAnalyzeStatement ast = request.getAst();
List<SQLExprTableSource> tableSources = Optional.ofNullable(ast.getTableSources()).orElse(Collections.emptyList());
if (tableSources.isEmpty()) {
return response.sendError(new MycatException("need tables"));
} else {
ResultSetBuilder resultSetBuilder = ResultSetBuilder.create();
resultSetBuilder.addColumnInfo("Table", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("Op", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("Msg_type", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("Msg_Text", JDBCType.VARCHAR);
for (SQLExprTableSource tableSource : tableSources) {
String schemaName = SQLUtils.normalize(tableSource.getSchema());
String tableName = SQLUtils.normalize(tableSource.getTableName());
resultSetBuilder.addObjectRowPayload(Arrays.asList(schemaName + "." + tableName, "analyze", "status", "OK"));
MetadataManager metadataManager = MetaClusterCurrent.wrapper(MetadataManager.class);
TableHandler tableHandler = metadataManager.getTable(schemaName, tableName);
if (tableHandler == null) {
return response.sendError(new MycatException(tableSource + "不存在"));
}
StatisticCenter statisticCenter = MetaClusterCurrent.wrapper(StatisticCenter.class);
statisticCenter.fetchTableRowCount(tableHandler);
}
return response.sendResultSet(resultSetBuilder.build());
}
}
use of io.mycat.beans.mycat.ResultSetBuilder in project Mycat2 by MyCATApache.
the class HintHandler method showClusters.
public static RowBaseIterator showClusters(String clusterName) {
MycatRouterConfig routerConfig = MetaClusterCurrent.wrapper(MycatRouterConfig.class);
ResultSetBuilder resultSetBuilder = ResultSetBuilder.create();
resultSetBuilder.addColumnInfo("NAME", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("SWITCH_TYPE", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("MAX_REQUEST_COUNT", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("TYPE", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("WRITE_DS", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("READ_DS", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("WRITE_L", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("READ_L", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("AVAILABLE", JDBCType.VARCHAR);
Collection<ReplicaSelector> values = MetaClusterCurrent.wrapper(ReplicaSelectorManager.class).getReplicaMap().values();
Map<String, ClusterConfig> clusterConfigMap = routerConfig.getClusters().stream().collect(Collectors.toMap(k -> k.getName(), v -> v));
for (ReplicaSelector value : values.stream().filter(v -> {
if (clusterName != null) {
return clusterName.equalsIgnoreCase(v.getName());
}
return true;
}).collect(Collectors.toList())) {
String NAME = value.getName();
Optional<ClusterConfig> e = Optional.ofNullable(clusterConfigMap.get(NAME));
ReplicaSwitchType SWITCH_TYPE = value.getSwitchType();
int MAX_REQUEST_COUNT = value.maxRequestCount();
String TYPE = value.getBalanceType().name();
String WRITE_DS = ((List<PhysicsInstance>) value.getWriteDataSourceByReplicaType()).stream().map(i -> i.getName()).collect(Collectors.joining(","));
String READ_DS = (value.getReadDataSourceByReplica()).stream().map(i -> i.getName()).collect(Collectors.joining(","));
String WL = Optional.ofNullable(value.getDefaultWriteLoadBalanceStrategy()).map(i -> i.getClass().getName()).orElse(null);
String RL = Optional.ofNullable(value.getDefaultReadLoadBalanceStrategy()).map(i -> i.getClass().getName()).orElse(null);
String AVAILABLE = Boolean.toString(((List<PhysicsInstance>) value.getWriteDataSourceByReplicaType()).stream().anyMatch(PhysicsInstance::isAlive));
resultSetBuilder.addObjectRowPayload(Arrays.asList(NAME, SWITCH_TYPE, MAX_REQUEST_COUNT, TYPE, WRITE_DS, READ_DS, WL, RL, AVAILABLE));
}
return resultSetBuilder.build();
}
use of io.mycat.beans.mycat.ResultSetBuilder in project Mycat2 by MyCATApache.
the class HintHandler method showHeatbeatStat.
public static RowBaseIterator showHeatbeatStat() {
ResultSetBuilder resultSetBuilder = ResultSetBuilder.create();
resultSetBuilder.addColumnInfo("NAME", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("TYPE", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("READABLE", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("SESSION_COUNT", JDBCType.BIGINT);
resultSetBuilder.addColumnInfo("WEIGHT", JDBCType.BIGINT);
resultSetBuilder.addColumnInfo("ALIVE", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("MASTER", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("LIMIT_SESSION_COUNT", JDBCType.BIGINT);
resultSetBuilder.addColumnInfo("REPLICA", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("SLAVE_THRESHOLD", JDBCType.BIGINT);
resultSetBuilder.addColumnInfo("IS_HEARTBEAT_TIMEOUT", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("HB_ERROR_COUNT", JDBCType.BIGINT);
resultSetBuilder.addColumnInfo("HB_LAST_SWITCH_TIME", JDBCType.TIMESTAMP);
resultSetBuilder.addColumnInfo("HB_MAX_RETRY", JDBCType.BIGINT);
resultSetBuilder.addColumnInfo("IS_CHECKING", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("MIN_SWITCH_TIME_INTERVAL", JDBCType.BIGINT);
resultSetBuilder.addColumnInfo("HEARTBEAT_TIMEOUT", JDBCType.BIGINT);
resultSetBuilder.addColumnInfo("SYNC_DS_STATUS", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("HB_DS_STATUS", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("IS_SLAVE_BEHIND_MASTER", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("LAST_SEND_QUERY_TIME", JDBCType.TIMESTAMP);
resultSetBuilder.addColumnInfo("LAST_RECEIVED_QUERY_TIME", JDBCType.TIMESTAMP);
if (MetaClusterCurrent.exist(MycatRouterConfig.class) && MetaClusterCurrent.exist(ReplicaSelectorManager.class)) {
MycatRouterConfig routerConfig = MetaClusterCurrent.wrapper(MycatRouterConfig.class);
ReplicaSelectorManager replicaSelectorRuntime = MetaClusterCurrent.wrapper(ReplicaSelectorManager.class);
Map<String, DatasourceConfig> dataSourceConfig = routerConfig.getDatasources().stream().collect(Collectors.toMap(k -> k.getName(), v -> v));
for (HeartbeatFlow heartbeatFlow : replicaSelectorRuntime.getHeartbeatDetectorMap().values()) {
PhysicsInstance instance = heartbeatFlow.instance();
String NAME = instance.getName();
String TYPE = instance.getType().name();
boolean READABLE = instance.asSelectRead();
int SESSION_COUNT = instance.getSessionCounter();
int WEIGHT = instance.getWeight();
boolean ALIVE = instance.isAlive();
boolean MASTER = instance.isMaster();
double SLAVE_THRESHOLD = heartbeatFlow.getSlaveThreshold();
boolean IS_HEARTBEAT_TIMEOUT = heartbeatFlow.isHeartbeatTimeout();
final HeartBeatStatus HEART_BEAT_STATUS = heartbeatFlow.getHbStatus();
int HB_ERROR_COUNT = HEART_BEAT_STATUS.getErrorCount();
LocalDateTime HB_LAST_SWITCH_TIME = new Timestamp(HEART_BEAT_STATUS.getLastSwitchTime()).toLocalDateTime();
int HB_MAX_RETRY = HEART_BEAT_STATUS.getMaxRetry();
boolean IS_CHECKING = HEART_BEAT_STATUS.isChecking();
long MIN_SWITCH_TIME_INTERVAL = HEART_BEAT_STATUS.getMinSwitchTimeInterval();
final long HEARTBEAT_TIMEOUT = (heartbeatFlow.getHeartbeatTimeout());
DatasourceStatus DS_STATUS_OBJECT = heartbeatFlow.getDsStatus();
String SYNC_DS_STATUS = DS_STATUS_OBJECT.getDbSynStatus().name();
String HB_DS_STATUS = DS_STATUS_OBJECT.getStatus().name();
boolean IS_SLAVE_BEHIND_MASTER = DS_STATUS_OBJECT.isSlaveBehindMaster();
LocalDateTime LAST_SEND_QUERY_TIME = new Timestamp(heartbeatFlow.getLastSendQryTime()).toLocalDateTime();
LocalDateTime LAST_RECEIVED_QUERY_TIME = new Timestamp(heartbeatFlow.getLastReceivedQryTime()).toLocalDateTime();
Optional<DatasourceConfig> e = Optional.ofNullable(dataSourceConfig.get(NAME));
String replicaDataSourceSelectorList = String.join(",", replicaSelectorRuntime.getReplicaNameListByInstanceName(NAME));
resultSetBuilder.addObjectRowPayload(Arrays.asList(NAME, TYPE, READABLE, SESSION_COUNT, WEIGHT, ALIVE, MASTER, e.map(i -> i.getMaxCon()).orElse(-1), replicaDataSourceSelectorList, SLAVE_THRESHOLD, IS_HEARTBEAT_TIMEOUT, HB_ERROR_COUNT, HB_LAST_SWITCH_TIME, HB_MAX_RETRY, IS_CHECKING, MIN_SWITCH_TIME_INTERVAL, HEARTBEAT_TIMEOUT, SYNC_DS_STATUS, HB_DS_STATUS, IS_SLAVE_BEHIND_MASTER, LAST_SEND_QUERY_TIME, LAST_RECEIVED_QUERY_TIME));
}
}
RowBaseIterator rowBaseIterator = resultSetBuilder.build();
return rowBaseIterator;
}
use of io.mycat.beans.mycat.ResultSetBuilder in project Mycat2 by MyCATApache.
the class ShowPluginsSQLHandler method onExecute.
@Override
protected Future<Void> onExecute(SQLRequest<MySqlShowPluginsStatement> request, MycatDataContext dataContext, Response response) {
ResultSetBuilder resultSetBuilder = ResultSetBuilder.create();
resultSetBuilder.addColumnInfo("Name", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("Status", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("Type", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("Library", JDBCType.VARCHAR);
resultSetBuilder.addColumnInfo("License", JDBCType.VARCHAR);
return response.sendResultSet(resultSetBuilder.build());
}
Aggregations