@@ -42,7 +42,25 @@ public ParsedStatement parsedStatement(String sql) {
4242 if (parsedStmt .getStatementType () == StatementType .USE ) {
4343 stmt .setUseDatabase (parsedStmt .getDatabase ());
4444 }
45- // TODO: set roles
45+
46+ String rolesCount = parsedStmt .getSettings ().get ("_ROLES_COUNT" );
47+ if (rolesCount != null ) {
48+ int rolesCountInt = Integer .parseInt (rolesCount );
49+ ArrayList <String > roles = new ArrayList <>(rolesCountInt );
50+ boolean resetRoles = false ;
51+ for (int i = 0 ; i < rolesCountInt ; i ++) {
52+ String role = parsedStmt .getSettings ().get ("_ROLE_" + i );
53+ if (role .equalsIgnoreCase ("NONE" )) {
54+ resetRoles = true ;
55+ }
56+ roles .add (parsedStmt .getSettings ().get ("_ROLE_" + i ));
57+ }
58+ if (resetRoles ) {
59+ roles .clear ();
60+ }
61+ stmt .setRoles (roles );
62+ }
63+
4664 stmt .setInsert (parsedStmt .getStatementType () == StatementType .INSERT );
4765 stmt .setHasErrors (parsedStmt .getStatementType () == StatementType .UNKNOWN );
4866 stmt .setHasResultSet (isStmtWithResultSet (parsedStmt ));
@@ -66,7 +84,11 @@ public ParsedPreparedStatement parsePreparedStatement(String sql) {
6684 stmt .setInsert (parsedStmt .getStatementType () == StatementType .INSERT );
6785 stmt .setHasErrors (parsedStmt .getStatementType () == StatementType .UNKNOWN );
6886 stmt .setHasResultSet (isStmtWithResultSet (parsedStmt ));
69- stmt .setTable (parsedStmt .getTable ());
87+ String tableName = parsedStmt .getTable ();
88+ if (parsedStmt .getDatabase () != null && parsedStmt .getTable () != null ) {
89+ tableName = String .format ("%s.%s" , parsedStmt .getDatabase (), parsedStmt .getTable ());
90+ }
91+ stmt .setTable (tableName );
7092 stmt .setInsertWithSelect (parsedStmt .containsKeyword ("SELECT" ) && (parsedStmt .getStatementType () == StatementType .INSERT ));
7193 stmt .setAssignValuesGroups (parsedStmt .getValueGroups ());
7294
0 commit comments