Streamline query classifier API interface
- Only types of fixed size used in API interface - The actual function return value specifies whether the parsing process succeeded, while "logical" return values are returned as out arguments. The wrapper function currently ignores the function return value.
This commit is contained in:
@ -15,72 +15,90 @@
|
||||
#include <maxscale/modules.h>
|
||||
#include <maxscale/query_classifier.h>
|
||||
|
||||
qc_parse_result_t qc_parse(GWBUF* querybuf)
|
||||
int32_t qc_dummy_parse(GWBUF* querybuf, int32_t* pResult)
|
||||
{
|
||||
return QC_QUERY_INVALID;
|
||||
*pResult = QC_QUERY_INVALID;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
uint32_t qc_get_type(GWBUF* querybuf)
|
||||
int32_t qc_dummy_get_type(GWBUF* querybuf, uint32_t* pType_mask)
|
||||
{
|
||||
return QUERY_TYPE_UNKNOWN;
|
||||
*pType_mask = QUERY_TYPE_UNKNOWN;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
char** qc_get_table_names(GWBUF* querybuf, int* tblsize, bool fullnames)
|
||||
int32_t qc_dummy_get_table_names(GWBUF* querybuf, int32_t fullnames, char*** ppzNames, int32_t* pSize)
|
||||
{
|
||||
*tblsize = 0;
|
||||
return NULL;
|
||||
*ppzNames = NULL;
|
||||
*pSize = 0;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
char* qc_get_created_table_name(GWBUF* querybuf)
|
||||
int32_t qc_dummy_get_created_table_name(GWBUF* querybuf, char** pzName)
|
||||
{
|
||||
return NULL;
|
||||
*pzName = NULL;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
bool qc_is_drop_table_query(GWBUF* querybuf)
|
||||
int32_t qc_dummy_is_drop_table_query(GWBUF* querybuf, int32_t* pIs_drop_table)
|
||||
{
|
||||
return false;
|
||||
*pIs_drop_table = 0;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
bool qc_query_has_clause(GWBUF* buf)
|
||||
int32_t qc_dummy_query_has_clause(GWBUF* buf, int32_t *pHas_clause)
|
||||
{
|
||||
return false;
|
||||
*pHas_clause = 0;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
char** qc_get_database_names(GWBUF* querybuf, int* size)
|
||||
int32_t qc_dummy_get_database_names(GWBUF* querybuf, char*** ppzNames, int32_t* pSize)
|
||||
{
|
||||
*size = 0;
|
||||
return NULL;
|
||||
*ppzNames = NULL;
|
||||
*pSize = 0;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
qc_query_op_t qc_get_operation(GWBUF* querybuf)
|
||||
int32_t qc_dummy_get_operation(GWBUF* querybuf, int32_t* pOp)
|
||||
{
|
||||
return QUERY_OP_UNDEFINED;
|
||||
*pOp = QUERY_OP_UNDEFINED;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
char* qc_sqlite_get_prepare_name(GWBUF* query)
|
||||
int32_t qc_dummy_get_prepare_name(GWBUF* query, char** pzName)
|
||||
{
|
||||
return NULL;
|
||||
*pzName = NULL;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
qc_query_op_t qc_sqlite_get_prepare_operation(GWBUF* query)
|
||||
int32_t qc_dummy_get_prepare_operation(GWBUF* query, int32_t* pOp)
|
||||
{
|
||||
return QUERY_OP_UNDEFINED;
|
||||
*pOp = QUERY_OP_UNDEFINED;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
void qc_sqlite_get_field_info(GWBUF* query, const QC_FIELD_INFO** infos, size_t* n_infos)
|
||||
int32_t qc_dummy_get_field_info(GWBUF* query, const QC_FIELD_INFO** ppInfos, uint32_t* nInfos)
|
||||
{
|
||||
*infos = NULL;
|
||||
*n_infos = 0;
|
||||
*ppInfos = NULL;
|
||||
*nInfos = 0;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
bool qc_setup(const char* args)
|
||||
int32_t qc_dummy_get_function_info(GWBUF* query, const QC_FUNCTION_INFO** ppInfos, uint32_t* nInfos)
|
||||
{
|
||||
return true;
|
||||
*ppInfos = NULL;
|
||||
*nInfos = 0;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
int32_t qc_dummy_setup(const char* args)
|
||||
{
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
int qc_dummy_process_init(void)
|
||||
{
|
||||
return 0;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
void qc_dummy_process_end(void)
|
||||
@ -89,7 +107,7 @@ void qc_dummy_process_end(void)
|
||||
|
||||
int qc_dummy_thread_init(void)
|
||||
{
|
||||
return 0;
|
||||
return QC_RESULT_OK;
|
||||
}
|
||||
|
||||
void qc_dummy_thread_end(void)
|
||||
@ -102,23 +120,24 @@ extern "C"
|
||||
{
|
||||
static QUERY_CLASSIFIER qc =
|
||||
{
|
||||
qc_setup,
|
||||
qc_dummy_setup,
|
||||
qc_dummy_process_init,
|
||||
qc_dummy_process_end,
|
||||
qc_dummy_thread_init,
|
||||
qc_dummy_thread_end,
|
||||
qc_parse,
|
||||
qc_get_type,
|
||||
qc_get_operation,
|
||||
qc_get_created_table_name,
|
||||
qc_is_drop_table_query,
|
||||
qc_get_table_names,
|
||||
qc_dummy_parse,
|
||||
qc_dummy_get_type,
|
||||
qc_dummy_get_operation,
|
||||
qc_dummy_get_created_table_name,
|
||||
qc_dummy_is_drop_table_query,
|
||||
qc_dummy_get_table_names,
|
||||
NULL,
|
||||
qc_query_has_clause,
|
||||
qc_get_database_names,
|
||||
qc_get_prepare_name,
|
||||
qc_get_prepare_operation,
|
||||
qc_get_field_info,
|
||||
qc_dummy_query_has_clause,
|
||||
qc_dummy_get_database_names,
|
||||
qc_dummy_get_prepare_name,
|
||||
qc_dummy_get_prepare_operation,
|
||||
qc_dummy_get_field_info,
|
||||
qc_dummy_get_function_info,
|
||||
};
|
||||
|
||||
static MXS_MODULE info =
|
||||
|
Reference in New Issue
Block a user