Skip to content

Commit 091fc3c

Browse files
committed
fix: insert appropriate constants
1 parent d4138a9 commit 091fc3c

4 files changed

Lines changed: 22 additions & 13 deletions

File tree

src/sqlancer/databend/DatabendProvider.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,12 @@ public SQLConnection createDatabase(DatabendGlobalState globalState) throws SQLE
143143
s.execute("USE " + databaseName);
144144
globalState.getState().logStatement("USE " + databaseName);
145145
}
146+
147+
// try (Statement s = con.createStatement()) {
148+
// s.execute("set enable_planner_v2 = 0;");
149+
// globalState.getState().logStatement("set enable_planner_v2 = 0;");
150+
// }
151+
146152
return new SQLConnection(con);
147153
}
148154

src/sqlancer/databend/gen/DatabendInsertGenerator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ private SQLQueryAdapter generate() {
4343

4444
@Override
4545
protected void insertValue(DatabendColumn column) {
46-
// TODO: 等Databend实现DEFAULT ,暂时注入普通的value
46+
// TODO: 等Databend实现DEFAULT关键字,暂时注入普通的value
4747
// if (Randomly.getBooleanWithRatherLowProbability()) {
4848
// sb.append("DEFAULT");
4949
// } else {
5050
// sb.append(DatabendToStringVisitor.asString(new DatabendExpressionGenerator(globalState).generateConstant()));
5151
// }
5252
String value = DatabendToStringVisitor.asString(
5353
new DatabendNoRECExpressionGenerator(globalState).
54-
generateConstant(column.isNullable()));
54+
generateConstant(column.getType().getPrimitiveDataType())); //生成一个与column相同的常量类型
5555
sb.append(value);
5656

5757
}

src/sqlancer/databend/gen/DatabendNoRECExpressionGenerator.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -165,14 +165,14 @@ public Node<DatabendExpression> isNull(Node<DatabendExpression> expr) {
165165
return null;
166166
}
167167

168-
public Node<DatabendExpression> generateConstant(boolean isNullable) {
169-
DatabendDataType type;
170-
do {
171-
type = Randomly.fromOptions(DatabendDataType.values());
172-
} while(!isNullable && type.equals(DatabendDataType.NULL));
173-
174-
return generateConstant(type);
175-
}
168+
// public Node<DatabendExpression> generateConstant(boolean isNullable) { //TODO 极小概率生成NULL值
169+
// DatabendDataType type;
170+
// do {
171+
// type = Randomly.fromOptions(DatabendDataType.values());
172+
// } while(!isNullable && type.equals(DatabendDataType.NULL)); //isNullable为假,同时获得NULL就重新获取
173+
//
174+
// return generateConstant(type);
175+
// }
176176

177177
@Override
178178
public Node<DatabendExpression> generateConstant(DatabendDataType type) {

src/sqlancer/databend/gen/DatabendTableGenerator.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import sqlancer.Randomly;
44
import sqlancer.common.ast.newast.Node;
5+
import sqlancer.common.gen.TypedExpressionGenerator;
56
import sqlancer.common.gen.UntypedExpressionGenerator;
67
import sqlancer.common.query.ExpectedErrors;
78
import sqlancer.common.query.SQLQueryAdapter;
@@ -12,6 +13,7 @@
1213
import sqlancer.databend.DatabendSchema.DatabendColumn;
1314
import sqlancer.databend.DatabendSchema.DatabendCompositeDataType;
1415
import sqlancer.databend.DatabendSchema.DatabendDataType;
16+
import sqlancer.databend.test.DatabendNoRECOracle;
1517

1618
import java.util.ArrayList;
1719
import java.util.List;
@@ -27,8 +29,8 @@ public SQLQueryAdapter getQuery(DatabendGlobalState globalState) {
2729
sb.append(tableName);
2830
sb.append("(");
2931
List<DatabendColumn> columns = getNewColumns();
30-
UntypedExpressionGenerator<Node<DatabendExpression>, DatabendColumn> gen = new DatabendExpressionGenerator(
31-
globalState).setColumns(columns);
32+
TypedExpressionGenerator<Node<DatabendExpression>, DatabendColumn, DatabendDataType> gen =
33+
new DatabendNoRECExpressionGenerator(globalState).setColumns(columns);
3234
for (int i = 0; i < columns.size(); i++) {
3335
if (i != 0) {
3436
sb.append(", ");
@@ -59,7 +61,8 @@ public SQLQueryAdapter getQuery(DatabendGlobalState globalState) {
5961
// }
6062
if (Randomly.getBoolean() && globalState.getDbmsSpecificOptions().testDefaultValues) {
6163
sb.append(" DEFAULT(");
62-
sb.append(DatabendToStringVisitor.asString(gen.generateConstant()));
64+
sb.append(DatabendToStringVisitor.asString( //常量类型于字段类型等同
65+
gen.generateConstant(columns.get(i).getType().getPrimitiveDataType())));
6366
sb.append(")");
6467
}
6568
}

0 commit comments

Comments
 (0)