diff --git a/Documentation/REST-API/Resources-MaxScale.md b/Documentation/REST-API/Resources-MaxScale.md index c6e067632..01c0337a7 100644 --- a/Documentation/REST-API/Resources-MaxScale.md +++ b/Documentation/REST-API/Resources-MaxScale.md @@ -606,14 +606,12 @@ GET /v1/maxscale/query_classifier/classify?sql=SELECT+1 "id": "classify", "type": "classify", "attributes": { - "parameters": { - "parse_result": "QC_QUERY_PARSED", - "type_mask": "QUERY_TYPE_READ", - "operation": "QUERY_OP_SELECT", - "has_where_clause": false, - "fields": [], - "functions": [] - } + "parse_result": "QC_QUERY_PARSED", + "type_mask": "QUERY_TYPE_READ", + "operation": "QUERY_OP_SELECT", + "has_where_clause": false, + "fields": [], + "functions": [] } } } diff --git a/maxctrl/lib/classify.js b/maxctrl/lib/classify.js index 571553278..536bdd715 100644 --- a/maxctrl/lib/classify.js +++ b/maxctrl/lib/classify.js @@ -13,12 +13,12 @@ require('./common.js')() const classify_fields = [ - {'Parse result': 'attributes.parameters.parse_result'}, - {'Type mask': 'attributes.parameters.type_mask'}, - {'Operation': 'attributes.parameters.operation'}, - {'Has where clause': 'attributes.parameters.has_where_clause'}, - {'Fields': 'attributes.parameters.fields'}, - {'Functions': 'attributes.parameters.functions'} + {'Parse result': 'attributes.parse_result'}, + {'Type mask': 'attributes.type_mask'}, + {'Operation': 'attributes.operation'}, + {'Has where clause': 'attributes.has_where_clause'}, + {'Fields': 'attributes.fields'}, + {'Functions': 'attributes.functions'} ] exports.command = 'classify ' @@ -28,12 +28,12 @@ exports.handler = function (argv) { return doRequest(host, 'maxscale/query_classifier/classify?sql=' + argv.statement, (res) => { - if (res.data.attributes.parameters.functions) { - var a = res.data.attributes.parameters.functions.map((f) => { + if (res.data.attributes.functions) { + var a = res.data.attributes.functions.map((f) => { return f.name + ': (' + f.arguments.join(', ') + ')' }); - res.data.attributes.parameters.functions = a; + res.data.attributes.functions = a; } return formatResource(classify_fields, res.data) diff --git a/server/core/query_classifier.cc b/server/core/query_classifier.cc index 425167f60..37809eeea 100644 --- a/server/core/query_classifier.cc +++ b/server/core/query_classifier.cc @@ -1518,32 +1518,30 @@ void append_function_info(json_t* pParams, GWBUF* pBuffer) std::unique_ptr qc_classify_as_json(const char* zHost, const std::string& statement) { - json_t* pParams = json_object(); + json_t* pAttributes = json_object(); std::unique_ptr sBuffer(modutil_create_query(statement.c_str())); GWBUF* pBuffer = sBuffer.get(); qc_parse_result result = qc_parse(pBuffer, QC_COLLECT_ALL); - json_object_set_new(pParams, CN_PARSE_RESULT, json_string(qc_result_to_string(result))); + json_object_set_new(pAttributes, CN_PARSE_RESULT, json_string(qc_result_to_string(result))); if (result != QC_QUERY_INVALID) { char* zType_mask = qc_typemask_to_string(qc_get_type_mask(pBuffer)); - json_object_set_new(pParams, CN_TYPE_MASK, json_string(zType_mask)); + json_object_set_new(pAttributes, CN_TYPE_MASK, json_string(zType_mask)); MXS_FREE(zType_mask); - json_object_set_new(pParams, CN_OPERATION, json_string(qc_op_to_string(qc_get_operation(pBuffer)))); + json_object_set_new(pAttributes, CN_OPERATION, + json_string(qc_op_to_string(qc_get_operation(pBuffer)))); bool has_clause = qc_query_has_clause(pBuffer); - json_object_set_new(pParams, CN_HAS_WHERE_CLAUSE, json_boolean(has_clause)); + json_object_set_new(pAttributes, CN_HAS_WHERE_CLAUSE, json_boolean(has_clause)); - append_field_info(pParams, pBuffer); - append_function_info(pParams, pBuffer); + append_field_info(pAttributes, pBuffer); + append_function_info(pAttributes, pBuffer); } - json_t* pAttributes = json_object(); - json_object_set_new(pAttributes, CN_PARAMETERS, pParams); - json_t* pSelf = json_object(); json_object_set_new(pSelf, CN_ID, json_string(CN_CLASSIFY)); json_object_set_new(pSelf, CN_TYPE, json_string(CN_CLASSIFY));