MXS-1196: Handle DECLARE
DECLARE can also begin an anonymous block in PL/SQL.
This commit is contained in:
@ -2173,6 +2173,19 @@ void maxscaleComment()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void maxscaleDeclare(Parse* pParse)
|
||||||
|
{
|
||||||
|
QC_TRACE();
|
||||||
|
|
||||||
|
QC_SQLITE_INFO* info = this_thread.info;
|
||||||
|
ss_dassert(info);
|
||||||
|
|
||||||
|
if (this_unit.sql_mode != QC_SQL_MODE_ORACLE)
|
||||||
|
{
|
||||||
|
info->status = QC_QUERY_INVALID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void maxscaleDeallocate(Parse* pParse, Token* pName)
|
void maxscaleDeallocate(Parse* pParse, Token* pName)
|
||||||
{
|
{
|
||||||
QC_TRACE();
|
QC_TRACE();
|
||||||
@ -2506,6 +2519,7 @@ int maxscaleKeyword(int token)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case TK_BEGIN:
|
case TK_BEGIN:
|
||||||
|
case TK_DECLARE:
|
||||||
if (this_unit.sql_mode == QC_SQL_MODE_ORACLE)
|
if (this_unit.sql_mode == QC_SQL_MODE_ORACLE)
|
||||||
{
|
{
|
||||||
// The beginning of a BLOCK. We'll assume it is in a single
|
// The beginning of a BLOCK. We'll assume it is in a single
|
||||||
|
@ -111,6 +111,7 @@ extern void maxscaleAlterTable(Parse*, mxs_alter_t command, SrcList*, Token*);
|
|||||||
extern void maxscaleCall(Parse*, SrcList* pName, int uses_variables);
|
extern void maxscaleCall(Parse*, SrcList* pName, int uses_variables);
|
||||||
extern void maxscaleCheckTable(Parse*, SrcList* pTables);
|
extern void maxscaleCheckTable(Parse*, SrcList* pTables);
|
||||||
extern void maxscaleCreateSequence(Parse*, Token* pDatabase, Token* pTable);
|
extern void maxscaleCreateSequence(Parse*, Token* pDatabase, Token* pTable);
|
||||||
|
extern void maxscaleDeclare(Parse* pParse);
|
||||||
extern void maxscaleDeallocate(Parse*, Token* pName);
|
extern void maxscaleDeallocate(Parse*, Token* pName);
|
||||||
extern void maxscaleDo(Parse*, ExprList* pEList);
|
extern void maxscaleDo(Parse*, ExprList* pEList);
|
||||||
extern void maxscaleDrop(Parse*, int what, Token* pDatabase, Token* pName);
|
extern void maxscaleDrop(Parse*, int what, Token* pDatabase, Token* pName);
|
||||||
@ -3325,4 +3326,10 @@ cmd ::= DROP SEQUENCE nm(X) dbnm(Y).{ // CREATE SEQUENCE db
|
|||||||
maxscaleDrop(pParse, MXS_DROP_SEQUENCE, pDatabase, pTable);
|
maxscaleDrop(pParse, MXS_DROP_SEQUENCE, pDatabase, pTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//////////////////////// ORACLE DECLARE ////////////////////////////////////
|
||||||
|
//
|
||||||
|
cmd ::= DECLARE. {
|
||||||
|
maxscaleDeclare(pParse);
|
||||||
|
}
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
|
@ -218,6 +218,7 @@ static Keyword aKeywordTable[] = {
|
|||||||
#ifdef MAXSCALE
|
#ifdef MAXSCALE
|
||||||
{ "DATABASES", "TK_DATABASES_KW", ALWAYS },
|
{ "DATABASES", "TK_DATABASES_KW", ALWAYS },
|
||||||
{ "DEALLOCATE", "TK_DEALLOCATE", ALWAYS },
|
{ "DEALLOCATE", "TK_DEALLOCATE", ALWAYS },
|
||||||
|
{ "DECLARE", "TK_DECLARE", ALWAYS },
|
||||||
#endif
|
#endif
|
||||||
{ "DEFAULT", "TK_DEFAULT", ALWAYS },
|
{ "DEFAULT", "TK_DEFAULT", ALWAYS },
|
||||||
{ "DEFERRED", "TK_DEFERRED", ALWAYS },
|
{ "DEFERRED", "TK_DEFERRED", ALWAYS },
|
||||||
|
Reference in New Issue
Block a user