blob: 0c14f3149117ca4012d2cc7d7a60d37fa0875f37 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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.
*/
package org.apache.iotdb.db.query.dataset;
import org.apache.iotdb.db.exception.metadata.MetadataException;
import org.apache.iotdb.db.metadata.PartialPath;
import org.apache.iotdb.db.qp.physical.sys.ShowDevicesPlan;
import org.apache.iotdb.db.service.IoTDB;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
import org.apache.iotdb.tsfile.read.common.Path;
import org.apache.iotdb.tsfile.read.common.RowRecord;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_DEVICES;
import static org.apache.iotdb.db.conf.IoTDBConstant.COLUMN_STORAGE_GROUP;
public class ShowDevicesDataSet extends ShowDataSet {
private static final Path[] resourcePathsWithSg = {
new PartialPath(COLUMN_DEVICES, false), new PartialPath(COLUMN_STORAGE_GROUP, false),
};
private static final TSDataType[] resourceTypesWithSg = {TSDataType.TEXT, TSDataType.TEXT};
private static final Path[] resourcePaths = {new PartialPath(COLUMN_DEVICES, false)};
private static final TSDataType[] resourceTypes = {TSDataType.TEXT};
private boolean hasSgCol;
public ShowDevicesDataSet(ShowDevicesPlan showDevicesPlan) throws MetadataException {
super(
showDevicesPlan.hasSgCol()
? Arrays.asList(resourcePathsWithSg)
: Arrays.asList(resourcePaths),
showDevicesPlan.hasSgCol()
? Arrays.asList(resourceTypesWithSg)
: Arrays.asList(resourceTypes));
hasSgCol = showDevicesPlan.hasSgCol();
this.plan = showDevicesPlan;
hasLimit = plan.hasLimit();
getQueryDataSet();
}
@Override
public List<RowRecord> getQueryDataSet() throws MetadataException {
List<ShowDevicesResult> devicesList = IoTDB.metaManager.getDevices((ShowDevicesPlan) plan);
List<RowRecord> records = new ArrayList<>();
for (ShowDevicesResult result : devicesList) {
RowRecord record = new RowRecord(0);
updateRecord(record, result.getName());
if (hasSgCol) {
updateRecord(record, result.getSgName());
}
records.add(record);
putRecord(record);
}
return records;
}
}