You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-01 06:46:55 +03:00
MCOL-1384 Parser accepts quotes with qualified dbobject identifiers.
This commit is contained in:
@ -48,6 +48,7 @@
|
||||
*/
|
||||
|
||||
%{
|
||||
#include "string.h"
|
||||
#include "sqlparser.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
@ -121,7 +122,7 @@ REFERENCES RENAME RESTRICT SET SMALLINT TABLE TEXT TIME TINYBLOB TINYTEXT
|
||||
TINYINT TO UNIQUE UNSIGNED UPDATE USER SESSION_USER SYSTEM_USER VARCHAR VARBINARY
|
||||
VARYING WITH ZONE DOUBLE IDB_FLOAT REAL CHARSET IDB_IF EXISTS CHANGE TRUNCATE
|
||||
|
||||
%token <str> IDENT FCONST SCONST CP_SEARCH_CONDITION_TEXT ICONST DATE
|
||||
%token <str> FQ_IDENT IDENT FCONST SCONST CP_SEARCH_CONDITION_TEXT ICONST DATE
|
||||
|
||||
/* Notes:
|
||||
* 1. "ata" stands for alter_table_action
|
||||
@ -611,7 +612,19 @@ table_name:
|
||||
;
|
||||
|
||||
qualified_name:
|
||||
IDENT '.' IDENT {$$ = new QualifiedName($1, $3);}
|
||||
FQ_IDENT {
|
||||
char* delimeterPosition = strchr(const_cast<char*>($1), '.');
|
||||
if( delimeterPosition )
|
||||
{
|
||||
*delimeterPosition = '\0';
|
||||
char* schemaName = const_cast<char*>($1);
|
||||
char* tableName = delimeterPosition + 1;
|
||||
$$ = new QualifiedName(schemaName, tableName);
|
||||
*delimeterPosition = '.';
|
||||
}
|
||||
else
|
||||
$$ = new QualifiedName($1);
|
||||
}
|
||||
| IDENT {
|
||||
if (x->fDBSchema.size())
|
||||
$$ = new QualifiedName((char*)x->fDBSchema.c_str(), $1);
|
||||
|
Reference in New Issue
Block a user