Skip to content

Commit

Permalink
Fix td's FROM clause and iotdb's WHERE clause (#389)
Browse files Browse the repository at this point in the history
* tdengine FROM fix ?

* iotdb fix

* config
  • Loading branch information
liyuheng55555 authored Jan 3, 2024
1 parent e630823 commit 165c0dc
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 20 deletions.
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

0 comments on commit 165c0dc

Please sign in to comment.