MXS-2227 Fix problem, parse OPTIMIZE statements

OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE
    tbl_name [, tbl_name] ...
    [WAIT n | NOWAIT]
This commit is contained in:
Johan Wikman
2020-03-03 13:06:30 +02:00
parent 3df8429db3
commit 4c2909e86c
3 changed files with 58 additions and 0 deletions

View File

@ -2508,6 +2508,21 @@ public:
}
}
void maxscaleOptimize(Parse* pParse, SrcList* pTables)
{
mxb_assert(this_thread.initialized);
m_status = QC_QUERY_PARSED;
m_type_mask = QUERY_TYPE_WRITE;
if (pTables)
{
update_names_from_srclist(NULL, pTables);
exposed_sqlite3SrcListDelete(pParse->db, pTables);
}
}
int maxscaleTranslateKeyword(int token)
{
switch (token)
@ -2641,6 +2656,11 @@ public:
m_type_mask = QUERY_TYPE_WRITE;
break;
case TK_OPTIMIZE:
m_status = QC_QUERY_TOKENIZED;
m_type_mask = QUERY_TYPE_WRITE;
break;
case TK_PREPARE:
m_status = QC_QUERY_TOKENIZED;
m_type_mask = QUERY_TYPE_PREPARE_NAMED_STMT;
@ -3563,6 +3583,7 @@ extern void maxscaleFlush(Parse*, Token* pWhat);
extern void maxscaleHandler(Parse*, mxs_handler_t, SrcList* pFullName, Token* pName);
extern void maxscaleLoadData(Parse*, SrcList* pFullName, int local);
extern void maxscaleLock(Parse*, mxs_lock_t, SrcList*);
extern void maxscaleOptimize(Parse* pParse, SrcList*);
extern void maxscalePrepare(Parse*, Token* pName, Expr* pStmt);
extern void maxscalePrivileges(Parse*, int kind);
extern void maxscaleRenameTable(Parse*, SrcList* pTables);
@ -4543,6 +4564,16 @@ void maxscaleLoadData(Parse* pParse, SrcList* pFullName, int local)
QC_EXCEPTION_GUARD(pInfo->maxscaleLoadData(pParse, pFullName, local));
}
void maxscaleOptimize(Parse* pParse, SrcList* pTables)
{
QC_TRACE();
QcSqliteInfo* pInfo = this_thread.pInfo;
mxb_assert(pInfo);
QC_EXCEPTION_GUARD(pInfo->maxscaleOptimize(pParse, pTables));
}
void maxscaleLock(Parse* pParse, mxs_lock_t type, SrcList* pTables)
{
QC_TRACE();