DBZ-6978 [MariaDB] Add support for spaces in username spec

This commit is contained in:
Kaustuv chakrabarti 2023-09-28 12:54:31 +02:00 committed by Chris Cranford
parent c7caa6726f
commit 0390a17e44
7 changed files with 37 additions and 31 deletions

View File

@ -273,6 +273,7 @@ Kanha Gupta
Kanthi Subramanian
Katerina Galieva
Kaushik Iyer
Kaustuv Chakrabarti
Kazuki MATSUDA / 松田一樹
Keith Barber
Keri Harris

View File

@ -1338,35 +1338,15 @@ DOT_ID: '.' ID_LITERAL;
ID: ID_LITERAL;
// DOUBLE_QUOTE_ID: '"' ~'"'+ '"';
REVERSE_QUOTE_ID: BQUOTA_STRING;
STRING_USER_NAME: (
SQUOTA_STRING | DQUOTA_STRING
| BQUOTA_STRING | ID_LITERAL
) '@'
HOST_IP_ADDRESS: (AT_SIGN IP_ADDRESS);
LOCAL_ID: AT_SIGN
(
SQUOTA_STRING | DQUOTA_STRING
| BQUOTA_STRING | ID_LITERAL
| IP_ADDRESS
STRING_LITERAL | [A-Z0-9._$\u0080-\uFFFF]+
);
IP_ADDRESS: (
[0-9]+ '.' [0-9.]+
| [0-9A-F]* ':' [0-9A-F]* ':' [0-9A-F:]+
);
STRING_USER_NAME_MARIADB: (
SQUOTA_STRING | DQUOTA_STRING
| BQUOTA_STRING | ID_LITERAL
) '@';
LOCAL_ID: '@'
GLOBAL_ID: AT_SIGN AT_SIGN
(
[A-Z0-9._$\u0080-\uFFFF]+
| SQUOTA_STRING
| DQUOTA_STRING
| BQUOTA_STRING
);
GLOBAL_ID: '@' '@'
(
[A-Z0-9._$\u0080-\uFFFF]+
| BQUOTA_STRING
);
[A-Z0-9._$\u0080-\uFFFF]+ | BQUOTA_STRING
);
// Fragments for Literal primitives
@ -1389,6 +1369,7 @@ fragment BQUOTA_STRING: '`' ( ~'`' | '``' )* '`';
fragment HEX_DIGIT: [0-9A-F];
fragment DEC_DIGIT: [0-9];
fragment BIT_STRING_L: 'B' '\'' [01]+ '\'';
fragment IP_ADDRESS: [0-9]+ '.' [0-9.]+ | [0-9A-F]* ':' [0-9A-F]* ':' [0-9A-F:]+;

View File

@ -313,8 +313,12 @@ charSet
| CHAR SET
;
currentUserExpression
: CURRENT_USER ( '(' ')')?
;
ownerStatement
: DEFINER '=' (userName | CURRENT_USER ( '(' ')')? | CURRENT_ROLE) // CURRENT_ROLE is MariaDB-specific only
: DEFINER '=' (userName | currentUserExpression | CURRENT_ROLE) // CURRENT_ROLE is MariaDB-specific only
;
scheduleExpression
@ -2161,8 +2165,16 @@ indexColumnName
: ((uid | STRING_LITERAL) ('(' decimalLiteral ')')? | expression) sortType=(ASC | DESC)?
;
simpleUserName
: STRING_LITERAL
| ID
| ADMIN
| keywordsCanBeId;
hostName: (LOCAL_ID | HOST_IP_ADDRESS | '@' );
userName
: STRING_USER_NAME | STRING_USER_NAME_MARIADB | ID | STRING_LITERAL | ADMIN | keywordsCanBeId;
: simpleUserName
| simpleUserName hostName
| currentUserExpression;
mysqlVariable
: LOCAL_ID
@ -2474,8 +2486,9 @@ specificFunction
: (
CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP
| CURDATE | CURTIME // MariaDB-specific only
| CURRENT_USER | LOCALTIME | UTC_TIMESTAMP | SCHEMA
| LOCALTIME | UTC_TIMESTAMP | SCHEMA
) ('(' ')')? #simpleFunctionCall
| currentUserExpression #currentUser
| CONVERT '(' expression separator=',' convertedDataType ')' #dataTypeFunctionCall
| CONVERT '(' expression USING charsetName ')' #dataTypeFunctionCall
| CAST '(' expression AS convertedDataType ')' #dataTypeFunctionCall

View File

@ -0,0 +1,7 @@
-- https://dev.mysql.com/doc/refman/8.0/en/set-statement.html
SET GLOBAL v1=1;
SET @@global.v2=2;
SET LOCAL v1=1;
SET @@local.v2=2;
SET SESSION v1=1;
SET @@session.v2=2;

View File

@ -13,6 +13,7 @@ GET CURRENT DIAGNOSTICS errcount = NUMBER;
-- Create User
CREATE USER 'test_crm_debezium'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' PASSWORD EXPIRE NEVER COMMENT '-';
CREATE USER 'jim'@'localhost' ATTRIBUTE '{"fname": "James", "lname": "Scott", "phone": "123-456-7890"}';
CREATE USER 'jim' @'localhost' ATTRIBUTE '{"fname": "James", "lname": "Scott", "phone": "123-456-7890"}';
-- Create Table
create table new_t (like t1);
create table log_table(row varchar(512));

View File

@ -3,6 +3,8 @@ GRANT ALL ON tbl TO admin;
GRANT ALL ON tbl TO audit_admin;
GRANT ALL PRIVILEGES ON tbl TO admin;
GRANT ALL ON *.* TO admin;
GRANT ALL ON *.* TO `foo2` @`%`;
GRANT ALL ON *.* TO `foo2` @test;
GRANT USAGE ON *.* TO foo2@test IDENTIFIED BY 'mariadb';
GRANT USAGE ON *.* TO foo2@test IDENTIFIED BY PASSWORD '*54958E764CE10E50764C2EECBB71D01F08549980';
GRANT USAGE ON *.* TO `admin`@`%` IDENTIFIED VIA pam;

View File

@ -233,3 +233,4 @@ rolevinks,Stein Rolevink
matan-cohen,Matan Cohen
BigGillyStyle,Andy Pickler
rkudryashov,Roman Kudryashov
pricelessjunk,Kaustuv Chakrabarti