(pos Pos)
| 1110 | } |
| 1111 | |
| 1112 | func (p *Parser) parsePrivilegeSystem(pos Pos) (*PrivilegeClause, error) { |
| 1113 | keywords := []string{KeywordShow} |
| 1114 | switch { |
| 1115 | case p.matchOneOfKeywords(KeywordShutdown, KeywordMerges, KeywordFetches, KeywordSends, KeywordMoves, KeywordCluster): |
| 1116 | keyword := p.last().String |
| 1117 | _ = p.lexer.consumeToken() |
| 1118 | keywords = append(keywords, keyword) |
| 1119 | case p.tryConsumeKeywords(KeywordDrop): |
| 1120 | keywords = append(keywords, KeywordDrop) |
| 1121 | switch { |
| 1122 | case p.tryConsumeKeywords(KeywordCache): |
| 1123 | keywords = append(keywords, KeywordCache) |
| 1124 | case p.matchOneOfKeywords(KeywordMark, KeywordDNS, KeywordUncompressed): |
| 1125 | keyword := p.last().String |
| 1126 | _ = p.lexer.consumeToken() |
| 1127 | keywords = append(keywords, keyword) |
| 1128 | if err := p.expectKeyword(KeywordCache); err != nil { |
| 1129 | return nil, err |
| 1130 | } |
| 1131 | keywords = append(keywords, KeywordCache) |
| 1132 | default: |
| 1133 | return nil, fmt.Errorf("expected CACHE|MARK|DNS|UNCOMPRESSED") |
| 1134 | } |
| 1135 | case p.tryConsumeKeywords(KeywordReload): |
| 1136 | keywords = append(keywords, KeywordReload) |
| 1137 | switch { |
| 1138 | case p.matchOneOfKeywords(KeywordDictionary, KeywordFunction, KeywordFunctions, KeywordConfig): |
| 1139 | keyword := p.last().String |
| 1140 | _ = p.lexer.consumeToken() |
| 1141 | keywords = append(keywords, keyword) |
| 1142 | default: |
| 1143 | return nil, fmt.Errorf("expected DICTIONARY|FUNCTION|FUNCTIONS|CONFIG") |
| 1144 | } |
| 1145 | case p.tryConsumeKeywords(KeywordFlush): |
| 1146 | keywords = append(keywords, KeywordFlush) |
| 1147 | switch { |
| 1148 | case p.matchOneOfKeywords(KeywordLogs, KeywordDistributed): |
| 1149 | keyword := p.last().String |
| 1150 | _ = p.lexer.consumeToken() |
| 1151 | keywords = append(keywords, keyword) |
| 1152 | default: |
| 1153 | return nil, fmt.Errorf("expected LOGS|DISTRIBUTED") |
| 1154 | } |
| 1155 | case p.tryConsumeKeywords(KeywordTtl): |
| 1156 | keywords = append(keywords, KeywordTtl) |
| 1157 | if err := p.expectKeyword(KeywordMerges); err != nil { |
| 1158 | return nil, err |
| 1159 | } |
| 1160 | keywords = append(keywords, KeywordMerges) |
| 1161 | case p.matchOneOfKeywords(KeywordSync, KeywordRestart): |
| 1162 | keyword := p.last().String |
| 1163 | _ = p.lexer.consumeToken() |
| 1164 | keywords = append(keywords, keyword) |
| 1165 | if err := p.expectKeyword(KeywordReplica); err != nil { |
| 1166 | return nil, err |
| 1167 | } |
| 1168 | keywords = append(keywords, KeywordReplica) |
| 1169 | case p.tryConsumeKeywords(KeywordReplication): |
no test coverage detected