Skip to content

Commit 4778066

Browse files
committed
Done. Here's what changed:
**Removed `genericDbMethod`** — the `identifier LPAREN arguments? RPAREN` catch-all rule from `dbStatement`. Same pattern we already removed for collection methods (`genericMethod`). **Added 45 new lexer tokens** for the 48 missing db methods (3 already had tokens: `AGGREGATE`, `WATCH`, `SET_WRITE_CONCERN`). **Added 48 new `dbStatement` alternatives** — each follows the explicit pattern `DB DOT TOKEN LPAREN arguments? RPAREN` with a labeled alternative name. **Updated `getDatabaseMethodCandidates()`** — expanded from 15 to 63 methods (all db methods now listed alphabetically). **Updated `identifier` rule** — all 45 new tokens added so they can still be used as identifiers (collection names, keys, etc.).
1 parent 9e687af commit 4778066

8 files changed

Lines changed: 12555 additions & 3914 deletions

mongodb/MongoShellLexer.g4

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,53 @@ GET_NAME: 'getName';
110110
GET_MONGO: 'getMongo';
111111
GET_SIBLING_DB: 'getSiblingDB';
112112

113+
// Database methods (additional)
114+
AUTH: 'auth';
115+
CHANGE_USER_PASSWORD: 'changeUserPassword';
116+
CLONE_DATABASE: 'cloneDatabase';
117+
COMMAND_HELP: 'commandHelp';
118+
COPY_DATABASE: 'copyDatabase';
119+
CREATE_ROLE: 'createRole';
120+
CREATE_USER: 'createUser';
121+
CREATE_VIEW: 'createView';
122+
CURRENT_OP: 'currentOp';
123+
DROP_ALL_ROLES: 'dropAllRoles';
124+
DROP_ALL_USERS: 'dropAllUsers';
125+
DROP_ROLE: 'dropRole';
126+
DROP_USER: 'dropUser';
127+
FSYNC_LOCK: 'fsyncLock';
128+
FSYNC_UNLOCK: 'fsyncUnlock';
129+
GET_LOG_COMPONENTS: 'getLogComponents';
130+
GET_PROFILING_LEVEL: 'getProfilingLevel';
131+
GET_PROFILING_STATUS: 'getProfilingStatus';
132+
GET_REPLICATION_INFO: 'getReplicationInfo';
133+
GET_ROLE: 'getRole';
134+
GET_ROLES: 'getRoles';
135+
GET_USER: 'getUser';
136+
GET_USERS: 'getUsers';
137+
GRANT_PRIVILEGES_TO_ROLE: 'grantPrivilegesToRole';
138+
GRANT_ROLES_TO_ROLE: 'grantRolesToRole';
139+
GRANT_ROLES_TO_USER: 'grantRolesToUser';
140+
HELLO: 'hello';
141+
IS_MASTER: 'isMaster';
142+
KILL_OP: 'killOp';
143+
LOGOUT: 'logout';
144+
PRINT_COLLECTION_STATS: 'printCollectionStats';
145+
PRINT_REPLICATION_INFO: 'printReplicationInfo';
146+
PRINT_SECONDARY_REPLICATION_INFO: 'printSecondaryReplicationInfo';
147+
PRINT_SHARDING_STATUS: 'printShardingStatus';
148+
PRINT_SLAVE_REPLICATION_INFO: 'printSlaveReplicationInfo';
149+
REVOKE_PRIVILEGES_FROM_ROLE: 'revokePrivilegesFromRole';
150+
REVOKE_ROLES_FROM_ROLE: 'revokeRolesFromRole';
151+
REVOKE_ROLES_FROM_USER: 'revokeRolesFromUser';
152+
ROTATE_CERTIFICATES: 'rotateCertificates';
153+
SET_LOG_LEVEL: 'setLogLevel';
154+
SET_PROFILING_LEVEL: 'setProfilingLevel';
155+
SET_SECONDARY_OK: 'setSecondaryOk';
156+
SHUTDOWN_SERVER: 'shutdownServer';
157+
UPDATE_ROLE: 'updateRole';
158+
UPDATE_USER: 'updateUser';
159+
113160
// Connection methods
114161
MONGO: 'Mongo';
115162
CONNECT: 'connect';

mongodb/MongoShellParser.g4

Lines changed: 94 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,57 @@ dbStatement
6767
| DB DOT GET_NAME LPAREN RPAREN # getName
6868
| DB DOT GET_MONGO LPAREN RPAREN # getMongo
6969
| DB DOT GET_SIBLING_DB LPAREN argument RPAREN # getSiblingDB
70-
| DB DOT genericDbMethod # dbGenericMethod
70+
| DB DOT AGGREGATE LPAREN arguments? RPAREN # dbAggregate
71+
| DB DOT AUTH LPAREN arguments? RPAREN # dbAuth
72+
| DB DOT CHANGE_USER_PASSWORD LPAREN arguments? RPAREN # dbChangeUserPassword
73+
| DB DOT CLONE_DATABASE LPAREN arguments? RPAREN # dbCloneDatabase
74+
| DB DOT COMMAND_HELP LPAREN arguments? RPAREN # dbCommandHelp
75+
| DB DOT COPY_DATABASE LPAREN arguments? RPAREN # dbCopyDatabase
76+
| DB DOT CREATE_ROLE LPAREN arguments? RPAREN # dbCreateRole
77+
| DB DOT CREATE_USER LPAREN arguments? RPAREN # dbCreateUser
78+
| DB DOT CREATE_VIEW LPAREN arguments? RPAREN # dbCreateView
79+
| DB DOT CURRENT_OP LPAREN arguments? RPAREN # dbCurrentOp
80+
| DB DOT DROP_ALL_ROLES LPAREN arguments? RPAREN # dbDropAllRoles
81+
| DB DOT DROP_ALL_USERS LPAREN arguments? RPAREN # dbDropAllUsers
82+
| DB DOT DROP_ROLE LPAREN arguments? RPAREN # dbDropRole
83+
| DB DOT DROP_USER LPAREN arguments? RPAREN # dbDropUser
84+
| DB DOT FSYNC_LOCK LPAREN arguments? RPAREN # dbFsyncLock
85+
| DB DOT FSYNC_UNLOCK LPAREN arguments? RPAREN # dbFsyncUnlock
86+
| DB DOT GET_LOG_COMPONENTS LPAREN arguments? RPAREN # dbGetLogComponents
87+
| DB DOT GET_PROFILING_LEVEL LPAREN arguments? RPAREN # dbGetProfilingLevel
88+
| DB DOT GET_PROFILING_STATUS LPAREN arguments? RPAREN # dbGetProfilingStatus
89+
| DB DOT GET_REPLICATION_INFO LPAREN arguments? RPAREN # dbGetReplicationInfo
90+
| DB DOT GET_ROLE LPAREN arguments? RPAREN # dbGetRole
91+
| DB DOT GET_ROLES LPAREN arguments? RPAREN # dbGetRoles
92+
| DB DOT GET_USER LPAREN arguments? RPAREN # dbGetUser
93+
| DB DOT GET_USERS LPAREN arguments? RPAREN # dbGetUsers
94+
| DB DOT GRANT_PRIVILEGES_TO_ROLE LPAREN arguments? RPAREN # dbGrantPrivilegesToRole
95+
| DB DOT GRANT_ROLES_TO_ROLE LPAREN arguments? RPAREN # dbGrantRolesToRole
96+
| DB DOT GRANT_ROLES_TO_USER LPAREN arguments? RPAREN # dbGrantRolesToUser
97+
| DB DOT HELLO LPAREN arguments? RPAREN # dbHello
98+
| DB DOT IS_MASTER LPAREN arguments? RPAREN # dbIsMaster
99+
| DB DOT KILL_OP LPAREN arguments? RPAREN # dbKillOp
100+
| DB DOT LOGOUT LPAREN arguments? RPAREN # dbLogout
101+
| DB DOT PRINT_COLLECTION_STATS LPAREN arguments? RPAREN # dbPrintCollectionStats
102+
| DB DOT PRINT_REPLICATION_INFO LPAREN arguments? RPAREN # dbPrintReplicationInfo
103+
| DB DOT PRINT_SECONDARY_REPLICATION_INFO LPAREN arguments? RPAREN # dbPrintSecondaryReplicationInfo
104+
| DB DOT PRINT_SHARDING_STATUS LPAREN arguments? RPAREN # dbPrintShardingStatus
105+
| DB DOT PRINT_SLAVE_REPLICATION_INFO LPAREN arguments? RPAREN # dbPrintSlaveReplicationInfo
106+
| DB DOT REVOKE_PRIVILEGES_FROM_ROLE LPAREN arguments? RPAREN # dbRevokePrivilegesFromRole
107+
| DB DOT REVOKE_ROLES_FROM_ROLE LPAREN arguments? RPAREN # dbRevokeRolesFromRole
108+
| DB DOT REVOKE_ROLES_FROM_USER LPAREN arguments? RPAREN # dbRevokeRolesFromUser
109+
| DB DOT ROTATE_CERTIFICATES LPAREN arguments? RPAREN # dbRotateCertificates
110+
| DB DOT SET_LOG_LEVEL LPAREN arguments? RPAREN # dbSetLogLevel
111+
| DB DOT SET_PROFILING_LEVEL LPAREN arguments? RPAREN # dbSetProfilingLevel
112+
| DB DOT SET_SECONDARY_OK LPAREN arguments? RPAREN # dbSetSecondaryOk
113+
| DB DOT SET_WRITE_CONCERN LPAREN arguments? RPAREN # dbSetWriteConcern
114+
| DB DOT SHUTDOWN_SERVER LPAREN arguments? RPAREN # dbShutdownServer
115+
| DB DOT UPDATE_ROLE LPAREN arguments? RPAREN # dbUpdateRole
116+
| DB DOT UPDATE_USER LPAREN arguments? RPAREN # dbUpdateUser
117+
| DB DOT WATCH LPAREN arguments? RPAREN # dbWatch
71118
| DB collectionAccess methodChain # collectionOperation
72119
;
73120

74-
// Generic database method for extensibility (unsupported methods)
75-
genericDbMethod
76-
: identifier LPAREN arguments? RPAREN
77-
;
78-
79121
// Bulk operation statements
80122
// Pattern: db.collection.initializeOrderedBulkOp().find(...).update(...).execute()
81123
bulkStatement
@@ -1005,4 +1047,50 @@ identifier
10051047
| CREATE_SEARCH_INDEXES
10061048
| DROP_SEARCH_INDEX
10071049
| UPDATE_SEARCH_INDEX
1050+
// Database method tokens (additional)
1051+
| AUTH
1052+
| CHANGE_USER_PASSWORD
1053+
| CLONE_DATABASE
1054+
| COMMAND_HELP
1055+
| COPY_DATABASE
1056+
| CREATE_ROLE
1057+
| CREATE_USER
1058+
| CREATE_VIEW
1059+
| CURRENT_OP
1060+
| DROP_ALL_ROLES
1061+
| DROP_ALL_USERS
1062+
| DROP_ROLE
1063+
| DROP_USER
1064+
| FSYNC_LOCK
1065+
| FSYNC_UNLOCK
1066+
| GET_LOG_COMPONENTS
1067+
| GET_PROFILING_LEVEL
1068+
| GET_PROFILING_STATUS
1069+
| GET_REPLICATION_INFO
1070+
| GET_ROLE
1071+
| GET_ROLES
1072+
| GET_USER
1073+
| GET_USERS
1074+
| GRANT_PRIVILEGES_TO_ROLE
1075+
| GRANT_ROLES_TO_ROLE
1076+
| GRANT_ROLES_TO_USER
1077+
| HELLO
1078+
| IS_MASTER
1079+
| KILL_OP
1080+
| LOGOUT
1081+
| PRINT_COLLECTION_STATS
1082+
| PRINT_REPLICATION_INFO
1083+
| PRINT_SECONDARY_REPLICATION_INFO
1084+
| PRINT_SHARDING_STATUS
1085+
| PRINT_SLAVE_REPLICATION_INFO
1086+
| REVOKE_PRIVILEGES_FROM_ROLE
1087+
| REVOKE_ROLES_FROM_ROLE
1088+
| REVOKE_ROLES_FROM_USER
1089+
| ROTATE_CERTIFICATES
1090+
| SET_LOG_LEVEL
1091+
| SET_PROFILING_LEVEL
1092+
| SET_SECONDARY_OK
1093+
| SHUTDOWN_SERVER
1094+
| UPDATE_ROLE
1095+
| UPDATE_USER
10081096
;

0 commit comments

Comments
 (0)