Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix td's FROM clause and iotdb's WHERE clause #389

Merged
merged 3 commits into from
Jan 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions configuration/conf/config.properties
Original file line number Diff line number Diff line change
Expand Up @@ -393,8 +393,6 @@

# 是否align by device
# 目前仅支持iotdb、influxdb v1、tdengine-3
# iotdb支持OPERATION_PROPORTION=1:1:1:0:0:0:0:0:0:1:0:0
# tdengine支持1:1:1:1:1:1:1:1:1:1:1:1
# ALIGN_BY_DEVICE=false

################ Workload:相关参数 ######################
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -659,16 +659,8 @@ private String getValueRangeQuerySql(ValueRangeQuery valueRangeQuery) {

private String getValueFilterClause(List<DeviceSchema> deviceSchemas, int valueThreshold) {
StringBuilder builder = new StringBuilder();
for (DeviceSchema deviceSchema : deviceSchemas) {
for (Sensor sensor : deviceSchema.getSensors()) {
builder
.append(" AND ")
.append(getDevicePath(deviceSchema))
.append(".")
.append(sensor.getName())
.append(" > ")
.append(valueThreshold);
}
for (Sensor sensor : deviceSchemas.get(0).getSensors()) {
builder.append(" AND ").append(sensor.getName()).append(" > ").append(valueThreshold);
}
return builder.toString();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,10 @@ public class TDengine implements IDatabase {
protected static final CyclicBarrier superTableBarrier =
new CyclicBarrier(config.getCLIENT_NUMBER());
private static final String USE_DB = "use %s";

private static final String SUPER_TABLE_NAME = "device";
private static final String FROM = " FROM ";
private static final String WHERE = " WHERE ";
private static final String ORDER_BY_TIME_DESC = " order by time desc ";
private static final String ORDER_BY_WSTART_DESC = " order by _wstart desc ";
private static final AtomicBoolean isInit = new AtomicBoolean(false);
Expand Down Expand Up @@ -434,7 +437,7 @@ private static String getSimpleQuerySqlHead(List<DeviceSchema> devices) {
builder.append(", ").append(querySensors.get(i).getName());
}

builder.append(generateConstrainForDevices(devices));
builder.append(generateFromClause(devices));
return builder.toString();
}

Expand All @@ -444,12 +447,17 @@ private static String getSimpleQuerySqlHead(List<DeviceSchema> devices) {
* @param devices schema list of query devices
* @return from and where clause
*/
private static String generateConstrainForDevices(List<DeviceSchema> devices) {
private static String generateFromClause(List<DeviceSchema> devices) {
StringBuilder builder = new StringBuilder();
builder.append(FROM);
if (config.isALIGN_BY_DEVICE()) {
builder.append(" FROM ").append(SUPER_TABLE_NAME);
builder.append(SUPER_TABLE_NAME);
} else {
builder.append(" FROM ").append(devices.get(0).getDevice());
for (DeviceSchema deviceSchema : devices) {
builder.append(deviceSchema.getDevice()).append(",");
}
// delete last ","
builder.delete(builder.length() - 1, builder.length());
}
return builder.toString();
}
Expand Down Expand Up @@ -500,14 +508,17 @@ private static String addWhereClause(
return sql;
}
StringBuilder sqlBuilder = new StringBuilder(sql);
sqlBuilder.append(" WHERE ");

sqlBuilder.append(WHERE);

if (timeRangeQuery != null) {
String startTime = "" + timeRangeQuery.getStartTimestamp();
String endTime = "" + timeRangeQuery.getEndTimestamp();
sqlBuilder.append(" time >= ").append(startTime).append(" AND time <= ").append(endTime);
}

if (valueRangeFilter != null) {
if (!sqlBuilder.toString().endsWith("WHERE ")) {
if (!sqlBuilder.toString().endsWith(WHERE)) {
sqlBuilder.append(" AND ");
}
double valueThreshold = valueRangeFilter.getMinValue();
Expand All @@ -516,8 +527,9 @@ private static String addWhereClause(
}
sqlBuilder.delete(sqlBuilder.length() - 4, sqlBuilder.length());
}

if (!alignByDeviceTableNameFilter.isEmpty()) {
if (!sqlBuilder.toString().endsWith("WHERE ")) {
if (!sqlBuilder.toString().endsWith(WHERE)) {
sqlBuilder.append(" AND ");
}
sqlBuilder.append(" tbname in (");
Expand All @@ -527,6 +539,7 @@ private static String addWhereClause(
sqlBuilder.deleteCharAt(sqlBuilder.length() - 1);
sqlBuilder.append(')');
}

return sqlBuilder.toString();
}

Expand Down Expand Up @@ -559,7 +572,7 @@ private static String getAggQuerySqlHead(List<DeviceSchema> devices, String meth
.append(")");
}

builder.append(generateConstrainForDevices(devices));
builder.append(generateFromClause(devices));
return builder.toString();
}

Expand Down
Loading