in src/main/java/com/aliyun/ha3engine/jdbc/sdk/client/CloudClient.java [53:123]
public String query(String sql) {
JsonObject resultJsonObject = new JsonObject();
JsonObject errorJsonObject = new JsonObject();
resultJsonObject.add("error", errorJsonObject);
sql = Ha3ToolUtils.getFullJsonSql(sql);
/** build query */
SearchRequestModel sqlQueryRequestModel = new SearchRequestModel();
SearchQuery sqlRawQuery = new SearchQuery();
if (ha3Config.isEnableDetailLog()) {
logger.info("sql:" + sql);
}
sqlRawQuery.setSql(sql);
sqlQueryRequestModel.setQuery(sqlRawQuery);
try {
SearchResponseModel sqlResponseModel = new SearchResponseModel();
if (ha3Config.isLocalMode()) {
sqlResponseModel.setBody(FileTools.loadResource("ha3_sql_result"));
} else {
sqlResponseModel = client.Search(sqlQueryRequestModel);
}
JsonObject ha3SqlResult = JsonUtils.fromJson(sqlResponseModel.getBody(), JsonObject.class);
JsonObject error_info = ha3SqlResult.getAsJsonObject("error_info");
if (null != error_info) {
errorJsonObject.addProperty("errorCode", error_info.get("ErrorCode").getAsInt());
errorJsonObject.addProperty("message", error_info.get("Message").getAsString());
errorJsonObject.addProperty("error", error_info.get("Error").getAsString());
if (error_info.get("ErrorCode").getAsInt() != 0) {
logger.error(
"ERROR: query result has error:errorCode: " + error_info.get("ErrorCode").getAsInt() + " errorInfo: "
+ error_info.get("Error").getAsString());
}
} else {
errorJsonObject.addProperty("errorCode", 404);
errorJsonObject.addProperty("message", "ERROR: query result is empty,ha3Result is null!");
errorJsonObject.addProperty("error", "ERROR: query result is empty,ha3Result is null!");
logger.error(
"ERROR: query result is empty,ha3Result is null!");
}
JsonArray fieldsNames = ha3SqlResult.getAsJsonObject("sql_result").getAsJsonArray("column_name");
JsonArray fieldsTypes = ha3SqlResult.getAsJsonObject("sql_result").getAsJsonArray("column_type");
JsonArray columnsJsonArray = new JsonArray();
for (int i = 0; i < fieldsNames.size(); i++) {
String fieldName = fieldsNames.get(i).getAsString();
String columnType = fieldsTypes.get(i).getAsString();
JsonObject columnJsonObject = new JsonObject();
columnJsonObject.addProperty("name", fieldName);
columnJsonObject.addProperty("type", columnType);
columnsJsonArray.add(columnJsonObject);
}
resultJsonObject.add("columns", columnsJsonArray);
JsonArray data = ha3SqlResult.getAsJsonObject("sql_result").getAsJsonArray("data");
JsonArray rowsArray = new JsonArray();
for (int i = 0; i < data.size(); i++) {
rowsArray.add(data.get(i));
}
resultJsonObject.add("rows", rowsArray);
} catch (Exception e) {
errorJsonObject.addProperty("errorCode", 404);
errorJsonObject.addProperty("message", e.getMessage());
errorJsonObject.addProperty("error", e.getMessage());
logger.error("ERROR:" + e.getMessage());
}
return resultJsonObject.toString();
}