MXS-1196: Turn certain keywords into ids

This commit is contained in:
Johan Wikman 2017-05-24 15:22:28 +03:00
parent 77f05b49d0
commit 8b6fc49dc1
2 changed files with 31 additions and 5 deletions

View File

@ -2483,6 +2483,26 @@ void maxscaleLock(Parse* pParse, mxs_lock_t type, SrcList* pTables)
}
}
int maxscaleTranslateKeyword(int token)
{
switch (token)
{
case TK_CHARSET:
case TK_DO:
case TK_HANDLER:
if (this_unit.sql_mode == QC_SQL_MODE_ORACLE)
{
token = TK_ID;
}
break;
default:
break;
}
return token;
}
/**
* Register the tokenization of a keyword.
*

View File

@ -569,11 +569,17 @@ int sqlite3GetToken(const unsigned char *z, int *tokenType){
if (*tokenType != TK_ID) {
extern int maxscaleKeyword(int);
if (maxscaleKeyword(*tokenType) != 0)
{
/* Consume the entire string. */
while ( z[i] ) {
++i;
extern int maxscaleTranslateKeyword(int);
*tokenType = maxscaleTranslateKeyword(*tokenType);
if (*tokenType != TK_ID) {
if (maxscaleKeyword(*tokenType) != 0)
{
/* Consume the entire string. */
while ( z[i] ) {
++i;
}
}
}
}