@@ -3594,6 +3594,72 @@ func (p *Parser) parseAlterTableSwitchStatement(tableName *ast.SchemaObjectName)
35943594 }
35953595 stmt .Options = append (stmt .Options , opt )
35963596 }
3597+ } else if optionName == "WAIT_AT_LOW_PRIORITY" {
3598+ opt := & ast.LowPriorityLockWaitTableSwitchOption {
3599+ OptionKind : "LowPriorityLockWait" ,
3600+ }
3601+
3602+ // Expect (
3603+ if p .curTok .Type == TokenLParen {
3604+ p .nextToken ()
3605+
3606+ for p .curTok .Type != TokenRParen && p .curTok .Type != TokenEOF {
3607+ subOptName := strings .ToUpper (p .curTok .Literal )
3608+ p .nextToken ()
3609+
3610+ if subOptName == "MAX_DURATION" {
3611+ if p .curTok .Type == TokenEquals {
3612+ p .nextToken ()
3613+ }
3614+ // Parse the duration value
3615+ durExpr , err := p .parseScalarExpression ()
3616+ if err != nil {
3617+ return nil , err
3618+ }
3619+ subOpt := & ast.LowPriorityLockWaitMaxDurationOption {
3620+ OptionKind : "MaxDuration" ,
3621+ MaxDuration : durExpr ,
3622+ }
3623+ // Check for MINUTES
3624+ if strings .ToUpper (p .curTok .Literal ) == "MINUTES" {
3625+ subOpt .Unit = "Minutes"
3626+ p .nextToken ()
3627+ }
3628+ opt .Options = append (opt .Options , subOpt )
3629+ } else if subOptName == "ABORT_AFTER_WAIT" {
3630+ if p .curTok .Type == TokenEquals {
3631+ p .nextToken ()
3632+ }
3633+ value := p .curTok .Literal
3634+ p .nextToken ()
3635+ // Convert to proper case
3636+ abortValue := "None"
3637+ switch strings .ToUpper (value ) {
3638+ case "NONE" :
3639+ abortValue = "None"
3640+ case "SELF" :
3641+ abortValue = "Self"
3642+ case "BLOCKERS" :
3643+ abortValue = "Blockers"
3644+ }
3645+ subOpt := & ast.LowPriorityLockWaitAbortAfterWaitOption {
3646+ OptionKind : "AbortAfterWait" ,
3647+ AbortAfterWait : abortValue ,
3648+ }
3649+ opt .Options = append (opt .Options , subOpt )
3650+ }
3651+
3652+ if p .curTok .Type == TokenComma {
3653+ p .nextToken ()
3654+ }
3655+ }
3656+
3657+ if p .curTok .Type == TokenRParen {
3658+ p .nextToken ()
3659+ }
3660+ }
3661+
3662+ stmt .Options = append (stmt .Options , opt )
35973663 }
35983664
35993665 if p .curTok .Type == TokenComma {
0 commit comments