in src/query/src/main/java/org/apache/kylin/query/engine/QueryRoutingEngine.java [390:449]
private void setParam(QueryExec queryExec, int index, PrepareSqlStateParam param) {
boolean isNull = (null == param.getValue());
Class<?> clazz;
try {
clazz = Class.forName(param.getClassName());
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException(e);
}
ColumnMetaData.Rep rep = ColumnMetaData.Rep.of(clazz);
switch (rep) {
case PRIMITIVE_CHAR:
case CHARACTER:
case STRING:
queryExec.setPrepareParam(index, isNull ? null : String.valueOf(param.getValue()));
break;
case PRIMITIVE_INT:
case INTEGER:
queryExec.setPrepareParam(index, isNull ? 0 : Integer.parseInt(param.getValue()));
break;
case PRIMITIVE_SHORT:
case SHORT:
queryExec.setPrepareParam(index, isNull ? 0 : Short.parseShort(param.getValue()));
break;
case PRIMITIVE_LONG:
case LONG:
queryExec.setPrepareParam(index, isNull ? 0 : Long.parseLong(param.getValue()));
break;
case PRIMITIVE_FLOAT:
case FLOAT:
queryExec.setPrepareParam(index, isNull ? 0 : Float.parseFloat(param.getValue()));
break;
case PRIMITIVE_DOUBLE:
case DOUBLE:
queryExec.setPrepareParam(index, isNull ? 0 : Double.parseDouble(param.getValue()));
break;
case PRIMITIVE_BOOLEAN:
case BOOLEAN:
queryExec.setPrepareParam(index, !isNull && Boolean.parseBoolean(param.getValue()));
break;
case PRIMITIVE_BYTE:
case BYTE:
queryExec.setPrepareParam(index, isNull ? 0 : Byte.parseByte(param.getValue()));
break;
case JAVA_UTIL_DATE:
case JAVA_SQL_DATE:
queryExec.setPrepareParam(index, isNull ? null : java.sql.Date.valueOf(param.getValue()));
break;
case JAVA_SQL_TIME:
queryExec.setPrepareParam(index, isNull ? null : Time.valueOf(param.getValue()));
break;
case JAVA_SQL_TIMESTAMP:
queryExec.setPrepareParam(index, isNull ? null : Timestamp.valueOf(param.getValue()));
break;
default:
queryExec.setPrepareParam(index, isNull ? null : param.getValue());
}
}