MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / parseAlterRoleStatement

Method parseAlterRoleStatement

pkg/sql/parser/alter.go:148–212  ·  view source on GitHub ↗

parseAlterRoleStatement parses ALTER ROLE statements

(stmt *ast.AlterStatement)

Source from the content-addressed store, hash-verified

146
147// parseAlterRoleStatement parses ALTER ROLE statements
148func (p *Parser) parseAlterRoleStatement(stmt *ast.AlterStatement) (*ast.AlterStatement, error) {
149 stmt.Name = p.parseIdentAsString()
150 op := &ast.AlterRoleOperation{}
151
152 switch {
153 case p.matchType(models.TokenTypeRename):
154 if !p.matchType(models.TokenTypeTo) {
155 return nil, p.expectedError("TO")
156 }
157 op.Type = ast.RenameRole
158 op.NewName = p.parseIdentAsString()
159
160 case p.matchType(models.TokenTypeAdd):
161 if !p.matchType(models.TokenTypeMember) {
162 return nil, p.expectedError("MEMBER")
163 }
164 op.Type = ast.AddMember
165 op.MemberName = p.parseIdentAsString()
166
167 case p.matchType(models.TokenTypeDrop):
168 if !p.matchType(models.TokenTypeMember) {
169 return nil, p.expectedError("MEMBER")
170 }
171 op.Type = ast.DropMember
172 op.MemberName = p.parseIdentAsString()
173
174 case p.matchType(models.TokenTypeSet):
175 op.Type = ast.SetConfig
176 op.ConfigName = p.parseIdentAsString()
177 if p.matchType(models.TokenTypeTo) || p.matchType(models.TokenTypeEq) {
178 expr, err := p.parseExpression()
179 if err != nil {
180 return nil, err
181 }
182 op.ConfigValue = expr
183 }
184
185 case p.matchType(models.TokenTypeReset):
186 op.Type = ast.ResetConfig
187 if p.matchType(models.TokenTypeAll) {
188 op.ConfigName = "ALL"
189 } else {
190 op.ConfigName = p.parseIdentAsString()
191 }
192
193 case p.matchType(models.TokenTypeWith):
194 op.Type = ast.WithOptions
195 for {
196 option, err := p.parseRoleOption()
197 if err != nil {
198 return nil, err
199 }
200 op.Options = append(op.Options, *option)
201 if !p.matchType(models.TokenTypeComma) {
202 break
203 }
204 }
205

Callers 1

parseAlterStatementMethod · 0.95

Calls 5

parseIdentAsStringMethod · 0.95
matchTypeMethod · 0.95
expectedErrorMethod · 0.95
parseExpressionMethod · 0.95
parseRoleOptionMethod · 0.95

Tested by

no test coverage detected