Merge branch '2.3' into develop
This commit is contained in:
@ -2250,24 +2250,44 @@ public:
|
||||
m_type_mask = (QUERY_TYPE_WRITE | QUERY_TYPE_COMMIT);
|
||||
m_operation = QUERY_OP_DROP;
|
||||
|
||||
if (what == MXS_DROP_SEQUENCE)
|
||||
switch (what)
|
||||
{
|
||||
const char* zDatabase = NULL;
|
||||
char database[pDatabase ? pDatabase->n + 1 : 1];
|
||||
|
||||
if (pDatabase)
|
||||
case MXS_DROP_DATABASE:
|
||||
{
|
||||
#ifdef TODO_SPECIFIC_OP_FOR_DROP_DATABASE_ADDED
|
||||
// TODO: As there is only QUERY_OP_DROP, you can't be fully
|
||||
// TODO: certain what a returned database actually refers to
|
||||
// TODO: so better not to provide a name until there is a
|
||||
// TODO: specific op.
|
||||
char database[pDatabase->n + 1];
|
||||
strncpy(database, pDatabase->z, pDatabase->n);
|
||||
database[pDatabase->n] = 0;
|
||||
|
||||
zDatabase = database;
|
||||
update_database_names(database);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
char table[pName->n + 1];
|
||||
strncpy(table, pName->z, pName->n);
|
||||
table[pName->n] = 0;
|
||||
case MXS_DROP_SEQUENCE:
|
||||
{
|
||||
const char* zDatabase = NULL;
|
||||
char database[pDatabase ? pDatabase->n + 1 : 1];
|
||||
|
||||
update_names(zDatabase, table, NULL, NULL);
|
||||
if (pDatabase)
|
||||
{
|
||||
strncpy(database, pDatabase->z, pDatabase->n);
|
||||
database[pDatabase->n] = 0;
|
||||
|
||||
zDatabase = database;
|
||||
}
|
||||
|
||||
char table[pName->n + 1];
|
||||
strncpy(table, pName->z, pName->n);
|
||||
table[pName->n] = 0;
|
||||
|
||||
update_names(zDatabase, table, NULL, NULL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -615,7 +615,7 @@ columnid(A) ::= nm(X). {
|
||||
// TODO: However, if not here then rules such as CAST need to be modified.
|
||||
BINARY
|
||||
/*CASCADE*/ CAST CLOSE COLUMNKW COLUMNS COMMENT CONCURRENT /*CONFLICT*/
|
||||
DATA /*DATABASE*/ DEALLOCATE DEFERRED /*DESC*/ /*DETACH*/ DUMPFILE
|
||||
DATA DATABASE DEALLOCATE DEFERRED /*DESC*/ /*DETACH*/ DUMPFILE
|
||||
/*EACH*/ END ENGINE ENUM EXCLUSIVE /*EXPLAIN*/
|
||||
FIRST FLUSH /*FOR*/ FORMAT
|
||||
GLOBAL
|
||||
@ -2861,6 +2861,12 @@ eq_opt ::= EQ.
|
||||
default_opt ::= .
|
||||
default_opt ::= DEFAULT.
|
||||
|
||||
////////////////////////// DROP DATABASE statement /////////////////////////////////////
|
||||
//
|
||||
cmd ::= DROP DATABASE ifexists id(X). {
|
||||
maxscaleDrop(pParse, MXS_DROP_DATABASE, &X, NULL);
|
||||
}
|
||||
|
||||
//////////////////////// CALL statement ////////////////////////////////////
|
||||
//
|
||||
cmd ::= call.
|
||||
|
@ -4094,6 +4094,7 @@ int sqlite3DbstatRegister(sqlite3*);
|
||||
|
||||
typedef enum mxs_drop
|
||||
{
|
||||
MXS_DROP_DATABASE,
|
||||
MXS_DROP_FUNCTION,
|
||||
MXS_DROP_SEQUENCE,
|
||||
} mxs_drop_t;
|
||||
|
@ -216,8 +216,10 @@ static Keyword aKeywordTable[] = {
|
||||
{ "CURRENT_TIMESTAMP","TK_CTIME_KW", ALWAYS },
|
||||
#ifdef MAXSCALE
|
||||
{ "DATA", "TK_DATA", ALWAYS },
|
||||
#endif
|
||||
{ "DATABASE", "TK_DATABASE", ALWAYS },
|
||||
#else
|
||||
{ "DATABASE", "TK_DATABASE", ATTACH },
|
||||
#endif
|
||||
#ifdef MAXSCALE
|
||||
{ "DATABASES", "TK_DATABASES_KW", ALWAYS },
|
||||
{ "DEALLOCATE", "TK_DEALLOCATE", ALWAYS },
|
||||
|
Reference in New Issue
Block a user