Merge branch '2.3' into develop

This commit is contained in:
Markus Mäkelä
2019-04-01 11:31:49 +03:00
15 changed files with 200 additions and 73 deletions

View File

@ -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;
}
}

View File

@ -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.

View File

@ -4094,6 +4094,7 @@ int sqlite3DbstatRegister(sqlite3*);
typedef enum mxs_drop
{
MXS_DROP_DATABASE,
MXS_DROP_FUNCTION,
MXS_DROP_SEQUENCE,
} mxs_drop_t;

View File

@ -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 },