MXS-1337 All callbacks now exception safe
No exceptions can now ever escape from the C++ side of qc_sqlite to sqlite3 (where they would cause havoc).
This commit is contained in:
parent
e084c0a464
commit
1d693640c7
@ -42,6 +42,15 @@
|
||||
#define QC_TRACE()
|
||||
#endif
|
||||
|
||||
#define QC_EXCEPTION_GUARD(statement)\
|
||||
do { try { statement; }\
|
||||
catch (const std::bad_alloc&) { \
|
||||
MXS_OOM(); pInfo->m_status = QC_QUERY_INVALID; } \
|
||||
catch (const std::exception& x) { \
|
||||
MXS_ERROR("Caught standard exception: %s", x.what()); pInfo->m_status = QC_QUERY_INVALID; } \
|
||||
catch (...) { \
|
||||
MXS_ERROR("Caught unknown exception."); pInfo->m_status = QC_QUERY_INVALID; } } while (false)
|
||||
|
||||
static inline bool qc_info_was_tokenized(qc_parse_result_t status)
|
||||
{
|
||||
return status == QC_QUERY_TOKENIZED;
|
||||
@ -3531,7 +3540,7 @@ void mxs_sqlite3AlterFinishAddColumn(Parse* pParse, Token* pToken)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3AlterFinishAddColumn(pParse, pToken);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3AlterFinishAddColumn(pParse, pToken));
|
||||
}
|
||||
|
||||
void mxs_sqlite3AlterBeginAddColumn(Parse* pParse, SrcList* pSrcList)
|
||||
@ -3541,7 +3550,7 @@ void mxs_sqlite3AlterBeginAddColumn(Parse* pParse, SrcList* pSrcList)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3AlterBeginAddColumn(pParse, pSrcList);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3AlterBeginAddColumn(pParse, pSrcList));
|
||||
}
|
||||
|
||||
void mxs_sqlite3Analyze(Parse* pParse, SrcList* pSrcList)
|
||||
@ -3551,7 +3560,7 @@ void mxs_sqlite3Analyze(Parse* pParse, SrcList* pSrcList)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3Analyze(pParse, pSrcList);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3Analyze(pParse, pSrcList));
|
||||
}
|
||||
|
||||
void mxs_sqlite3BeginTransaction(Parse* pParse, int token, int type)
|
||||
@ -3561,7 +3570,7 @@ void mxs_sqlite3BeginTransaction(Parse* pParse, int token, int type)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3BeginTransaction(pParse, token, type);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3BeginTransaction(pParse, token, type));
|
||||
}
|
||||
|
||||
void mxs_sqlite3BeginTrigger(Parse *pParse, /* The parse context of the CREATE TRIGGER statement */
|
||||
@ -3580,8 +3589,8 @@ void mxs_sqlite3BeginTrigger(Parse *pParse, /* The parse context of the CRE
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3BeginTrigger(pParse, pName1, pName2, tr_tm, op,
|
||||
pColumns, pTableName, pWhen, isTemp, noErr);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3BeginTrigger(pParse, pName1, pName2, tr_tm, op,
|
||||
pColumns, pTableName, pWhen, isTemp, noErr));
|
||||
}
|
||||
|
||||
void mxs_sqlite3CommitTransaction(Parse* pParse)
|
||||
@ -3591,7 +3600,7 @@ void mxs_sqlite3CommitTransaction(Parse* pParse)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3CommitTransaction(pParse);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3CommitTransaction(pParse));
|
||||
}
|
||||
|
||||
void mxs_sqlite3CreateIndex(Parse *pParse, /* All information about this parse */
|
||||
@ -3610,8 +3619,8 @@ void mxs_sqlite3CreateIndex(Parse *pParse, /* All information about this par
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3CreateIndex(pParse, pName1, pName2, pTblName, pList,
|
||||
onError, pStart, pPIWhere, sortOrder, ifNotExist);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3CreateIndex(pParse, pName1, pName2, pTblName, pList,
|
||||
onError, pStart, pPIWhere, sortOrder, ifNotExist));
|
||||
}
|
||||
|
||||
void mxs_sqlite3CreateView(Parse *pParse, /* The parsing context */
|
||||
@ -3627,7 +3636,8 @@ void mxs_sqlite3CreateView(Parse *pParse, /* The parsing context */
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3CreateView(pParse, pBegin, pName1, pName2, pCNames, pSelect, isTemp, noErr);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3CreateView(pParse, pBegin, pName1, pName2,
|
||||
pCNames, pSelect, isTemp, noErr));
|
||||
}
|
||||
|
||||
void mxs_sqlite3DeleteFrom(Parse* pParse, SrcList* pTabList, Expr* pWhere, SrcList* pUsing)
|
||||
@ -3637,7 +3647,7 @@ void mxs_sqlite3DeleteFrom(Parse* pParse, SrcList* pTabList, Expr* pWhere, SrcLi
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3DeleteFrom(pParse, pTabList, pWhere, pUsing);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3DeleteFrom(pParse, pTabList, pWhere, pUsing));
|
||||
}
|
||||
|
||||
void mxs_sqlite3DropIndex(Parse* pParse, SrcList* pName, SrcList* pTable, int bits)
|
||||
@ -3647,7 +3657,7 @@ void mxs_sqlite3DropIndex(Parse* pParse, SrcList* pName, SrcList* pTable, int bi
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3DropIndex(pParse, pName, pTable, bits);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3DropIndex(pParse, pName, pTable, bits));
|
||||
}
|
||||
|
||||
void mxs_sqlite3DropTable(Parse *pParse, SrcList *pName, int isView, int noErr, int isTemp)
|
||||
@ -3657,7 +3667,7 @@ void mxs_sqlite3DropTable(Parse *pParse, SrcList *pName, int isView, int noErr,
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3DropTable(pParse, pName, isView, noErr, isTemp);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3DropTable(pParse, pName, isView, noErr, isTemp));
|
||||
}
|
||||
|
||||
void mxs_sqlite3EndTable(Parse *pParse, /* Parse context */
|
||||
@ -3674,7 +3684,7 @@ void mxs_sqlite3EndTable(Parse *pParse, /* Parse context */
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3EndTable(pParse, pCons, pEnd, tabOpts, pSelect, pOldTable);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3EndTable(pParse, pCons, pEnd, tabOpts, pSelect, pOldTable));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3703,7 +3713,7 @@ void mxs_sqlite3Insert(Parse* pParse,
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3Insert(pParse, pTabList, pSelect, pColumns, onError, pSet);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3Insert(pParse, pTabList, pSelect, pColumns, onError, pSet));
|
||||
}
|
||||
|
||||
void mxs_sqlite3RollbackTransaction(Parse* pParse)
|
||||
@ -3713,7 +3723,7 @@ void mxs_sqlite3RollbackTransaction(Parse* pParse)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3RollbackTransaction(pParse);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3RollbackTransaction(pParse));
|
||||
}
|
||||
|
||||
int mxs_sqlite3Select(Parse* pParse, Select* p, SelectDest* pDest)
|
||||
@ -3726,7 +3736,7 @@ int mxs_sqlite3Select(Parse* pParse, Select* p, SelectDest* pDest)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3Select(pParse, p, pDest);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3Select(pParse, p, pDest));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3751,7 +3761,8 @@ void mxs_sqlite3StartTable(Parse *pParse, /* Parser context */
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3StartTable(pParse, pName1, pName2, isTemp, isView, isVirtual, noErr);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3StartTable(pParse, pName1, pName2,
|
||||
isTemp, isView, isVirtual, noErr));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3766,7 +3777,7 @@ void mxs_sqlite3Update(Parse* pParse, SrcList* pTabList, ExprList* pChanges, Exp
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3Update(pParse, pTabList, pChanges, pWhere, onError);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3Update(pParse, pTabList, pChanges, pWhere, onError));
|
||||
}
|
||||
|
||||
void mxs_sqlite3Savepoint(Parse *pParse, int op, Token *pName)
|
||||
@ -3776,7 +3787,7 @@ void mxs_sqlite3Savepoint(Parse *pParse, int op, Token *pName)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->mxs_sqlite3Savepoint(pParse, op, pName);
|
||||
QC_EXCEPTION_GUARD(pInfo->mxs_sqlite3Savepoint(pParse, op, pName));
|
||||
}
|
||||
|
||||
void maxscaleCollectInfoFromSelect(Parse* pParse, Select* pSelect, int sub_select)
|
||||
@ -3784,7 +3795,7 @@ void maxscaleCollectInfoFromSelect(Parse* pParse, Select* pSelect, int sub_selec
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleCollectInfoFromSelect(pParse, pSelect, sub_select);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleCollectInfoFromSelect(pParse, pSelect, sub_select));
|
||||
}
|
||||
|
||||
void maxscaleAlterTable(Parse *pParse, /* Parser context. */
|
||||
@ -3797,7 +3808,7 @@ void maxscaleAlterTable(Parse *pParse, /* Parser context. */
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleAlterTable(pParse, command, pSrc, pName);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleAlterTable(pParse, command, pSrc, pName));
|
||||
}
|
||||
|
||||
void maxscaleCall(Parse* pParse, SrcList* pName, ExprList* pExprList)
|
||||
@ -3807,7 +3818,7 @@ void maxscaleCall(Parse* pParse, SrcList* pName, ExprList* pExprList)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleCall(pParse, pName, pExprList);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleCall(pParse, pName, pExprList));
|
||||
}
|
||||
|
||||
void maxscaleCheckTable(Parse* pParse, SrcList* pTables)
|
||||
@ -3817,7 +3828,7 @@ void maxscaleCheckTable(Parse* pParse, SrcList* pTables)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleCheckTable(pParse, pTables);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleCheckTable(pParse, pTables));
|
||||
}
|
||||
|
||||
void maxscaleCreateSequence(Parse* pParse, Token* pDatabase, Token* pTable)
|
||||
@ -3827,7 +3838,7 @@ void maxscaleCreateSequence(Parse* pParse, Token* pDatabase, Token* pTable)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleCreateSequence(pParse, pDatabase, pTable);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleCreateSequence(pParse, pDatabase, pTable));
|
||||
}
|
||||
|
||||
void maxscaleComment()
|
||||
@ -3837,7 +3848,7 @@ void maxscaleComment()
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleComment();
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleComment());
|
||||
}
|
||||
|
||||
void maxscaleDeclare(Parse* pParse)
|
||||
@ -3847,7 +3858,7 @@ void maxscaleDeclare(Parse* pParse)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleDeclare(pParse);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleDeclare(pParse));
|
||||
}
|
||||
|
||||
void maxscaleDeallocate(Parse* pParse, Token* pName)
|
||||
@ -3857,7 +3868,7 @@ void maxscaleDeallocate(Parse* pParse, Token* pName)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleDeallocate(pParse, pName);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleDeallocate(pParse, pName));
|
||||
}
|
||||
|
||||
void maxscaleDo(Parse* pParse, ExprList* pEList)
|
||||
@ -3867,7 +3878,7 @@ void maxscaleDo(Parse* pParse, ExprList* pEList)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleDo(pParse, pEList);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleDo(pParse, pEList));
|
||||
}
|
||||
|
||||
void maxscaleDrop(Parse* pParse, int what, Token* pDatabase, Token* pName)
|
||||
@ -3877,7 +3888,7 @@ void maxscaleDrop(Parse* pParse, int what, Token* pDatabase, Token* pName)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleDrop(pParse, what, pDatabase, pName);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleDrop(pParse, what, pDatabase, pName));
|
||||
}
|
||||
|
||||
void maxscaleExecute(Parse* pParse, Token* pName, int type_mask)
|
||||
@ -3887,7 +3898,7 @@ void maxscaleExecute(Parse* pParse, Token* pName, int type_mask)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleExecute(pParse, pName, type_mask);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleExecute(pParse, pName, type_mask));
|
||||
}
|
||||
|
||||
void maxscaleExecuteImmediate(Parse* pParse, Token* pName, ExprSpan* pExprSpan, int type_mask)
|
||||
@ -3897,7 +3908,7 @@ void maxscaleExecuteImmediate(Parse* pParse, Token* pName, ExprSpan* pExprSpan,
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleExecuteImmediate(pParse, pName, pExprSpan, type_mask);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleExecuteImmediate(pParse, pName, pExprSpan, type_mask));
|
||||
}
|
||||
|
||||
void maxscaleExplain(Parse* pParse, Token* pNext)
|
||||
@ -3907,7 +3918,7 @@ void maxscaleExplain(Parse* pParse, Token* pNext)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleExplain(pParse, pNext);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleExplain(pParse, pNext));
|
||||
}
|
||||
|
||||
void maxscaleFlush(Parse* pParse, Token* pWhat)
|
||||
@ -3917,7 +3928,7 @@ void maxscaleFlush(Parse* pParse, Token* pWhat)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleFlush(pParse, pWhat);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleFlush(pParse, pWhat));
|
||||
}
|
||||
|
||||
void maxscaleHandler(Parse* pParse, mxs_handler_t type, SrcList* pFullName, Token* pName)
|
||||
@ -3927,7 +3938,7 @@ void maxscaleHandler(Parse* pParse, mxs_handler_t type, SrcList* pFullName, Toke
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleHandler(pParse, type, pFullName, pName);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleHandler(pParse, type, pFullName, pName));
|
||||
}
|
||||
|
||||
void maxscaleLoadData(Parse* pParse, SrcList* pFullName)
|
||||
@ -3937,7 +3948,7 @@ void maxscaleLoadData(Parse* pParse, SrcList* pFullName)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleLoadData(pParse, pFullName);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleLoadData(pParse, pFullName));
|
||||
}
|
||||
|
||||
void maxscaleLock(Parse* pParse, mxs_lock_t type, SrcList* pTables)
|
||||
@ -3947,7 +3958,7 @@ void maxscaleLock(Parse* pParse, mxs_lock_t type, SrcList* pTables)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleLock(pParse, type, pTables);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleLock(pParse, type, pTables));
|
||||
}
|
||||
|
||||
int maxscaleTranslateKeyword(int token)
|
||||
@ -3957,7 +3968,9 @@ int maxscaleTranslateKeyword(int token)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
return pInfo->maxscaleTranslateKeyword(token);
|
||||
QC_EXCEPTION_GUARD(token = pInfo->maxscaleTranslateKeyword(token));
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3974,7 +3987,9 @@ int maxscaleKeyword(int token)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
return pInfo->maxscaleKeyword(token);
|
||||
QC_EXCEPTION_GUARD(token = pInfo->maxscaleKeyword(token));
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
void maxscaleRenameTable(Parse* pParse, SrcList* pTables)
|
||||
@ -3984,7 +3999,7 @@ void maxscaleRenameTable(Parse* pParse, SrcList* pTables)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleRenameTable(pParse, pTables);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleRenameTable(pParse, pTables));
|
||||
}
|
||||
|
||||
void maxscalePrepare(Parse* pParse, Token* pName, Expr* pStmt)
|
||||
@ -3994,7 +4009,7 @@ void maxscalePrepare(Parse* pParse, Token* pName, Expr* pStmt)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscalePrepare(pParse, pName, pStmt);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscalePrepare(pParse, pName, pStmt));
|
||||
}
|
||||
|
||||
void maxscalePrivileges(Parse* pParse, int kind)
|
||||
@ -4004,7 +4019,7 @@ void maxscalePrivileges(Parse* pParse, int kind)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscalePrivileges(pParse, kind);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscalePrivileges(pParse, kind));
|
||||
}
|
||||
|
||||
void maxscaleSet(Parse* pParse, int scope, mxs_set_t kind, ExprList* pList)
|
||||
@ -4014,7 +4029,7 @@ void maxscaleSet(Parse* pParse, int scope, mxs_set_t kind, ExprList* pList)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleSet(pParse, scope, kind, pList);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleSet(pParse, scope, kind, pList));
|
||||
}
|
||||
|
||||
void maxscaleShow(Parse* pParse, MxsShow* pShow)
|
||||
@ -4024,7 +4039,7 @@ void maxscaleShow(Parse* pParse, MxsShow* pShow)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleShow(pParse, pShow);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleShow(pParse, pShow));
|
||||
}
|
||||
|
||||
void maxscaleTruncate(Parse* pParse, Token* pDatabase, Token* pName)
|
||||
@ -4034,7 +4049,7 @@ void maxscaleTruncate(Parse* pParse, Token* pDatabase, Token* pName)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleTruncate(pParse, pDatabase, pName);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleTruncate(pParse, pDatabase, pName));
|
||||
}
|
||||
|
||||
void maxscaleUse(Parse* pParse, Token* pToken)
|
||||
@ -4044,7 +4059,7 @@ void maxscaleUse(Parse* pParse, Token* pToken)
|
||||
QcSqliteInfo* pInfo = this_thread.pInfo;
|
||||
ss_dassert(pInfo);
|
||||
|
||||
pInfo->maxscaleUse(pParse, pToken);
|
||||
QC_EXCEPTION_GUARD(pInfo->maxscaleUse(pParse, pToken));
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user