public String query()

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();
    }