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

Method parseAlterPolicyStatement

pkg/sql/parser/alter.go:215–270  ·  view source on GitHub ↗

parseAlterPolicyStatement parses ALTER POLICY statements

(stmt *ast.AlterStatement)

Source from the content-addressed store, hash-verified

213
214// parseAlterPolicyStatement parses ALTER POLICY statements
215func (p *Parser) parseAlterPolicyStatement(stmt *ast.AlterStatement) (*ast.AlterStatement, error) {
216 stmt.Name = p.parseIdentAsString()
217 if !p.matchType(models.TokenTypeOn) {
218 return nil, p.expectedError("ON")
219 }
220 p.parseIdentAsString() // table name
221
222 op := &ast.AlterPolicyOperation{}
223
224 if p.matchType(models.TokenTypeRename) {
225 if !p.matchType(models.TokenTypeTo) {
226 return nil, p.expectedError("TO")
227 }
228 op.Type = ast.RenamePolicy
229 op.NewName = p.parseIdentAsString()
230 } else {
231 op.Type = ast.ModifyPolicy
232 if p.matchType(models.TokenTypeTo) {
233 for {
234 op.To = append(op.To, p.parseIdentAsString())
235 if !p.matchType(models.TokenTypeComma) {
236 break
237 }
238 }
239 }
240 if p.matchType(models.TokenTypeUsing) {
241 if !p.matchType(models.TokenTypeLParen) {
242 return nil, p.expectedError("(")
243 }
244 expr, err := p.parseExpression()
245 if err != nil {
246 return nil, err
247 }
248 op.Using = expr
249 if !p.matchType(models.TokenTypeRParen) {
250 return nil, p.expectedError(")")
251 }
252 }
253 if p.matchType(models.TokenTypeWith) && p.matchType(models.TokenTypeCheck) {
254 if !p.matchType(models.TokenTypeLParen) {
255 return nil, p.expectedError("(")
256 }
257 expr, err := p.parseExpression()
258 if err != nil {
259 return nil, err
260 }
261 op.WithCheck = expr
262 if !p.matchType(models.TokenTypeRParen) {
263 return nil, p.expectedError(")")
264 }
265 }
266 }
267
268 stmt.Operation = op
269 return stmt, nil
270}
271
272// parseAlterConnectorStatement parses ALTER CONNECTOR statements

Callers 1

parseAlterStatementMethod · 0.95

Calls 4

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

Tested by

no test coverage detected