MCPcopy Create free account
hub / github.com/AfterShip/clickhouse-sql-parser / parseAlterTableUpdate

Method parseAlterTableUpdate

parser/parser_alter.go:886–931  ·  view source on GitHub ↗

Syntax: ALTER TABLE UPDATE column1 = expr1 [, column2 = expr2, ...] [IN PARTITION partition_id] WHERE condition

(pos Pos)

Source from the content-addressed store, hash-verified

884
885// Syntax: ALTER TABLE UPDATE column1 = expr1 [, column2 = expr2, ...] [IN PARTITION partition_id] WHERE condition
886func (p *Parser) parseAlterTableUpdate(pos Pos) (AlterTableClause, error) {
887 if err := p.expectKeyword(KeywordUpdate); err != nil {
888 return nil, err
889 }
890
891 // Parse at least one assignment
892 assignments := make([]*UpdateAssignment, 0)
893 assignment, err := p.parseUpdateAssignment(p.Pos())
894 if err != nil {
895 return nil, err
896 }
897 assignments = append(assignments, assignment)
898
899 // Parse additional comma-separated assignments
900 for p.tryConsumeTokenKind(TokenKindComma) != nil {
901 assignment, err = p.parseUpdateAssignment(p.Pos())
902 if err != nil {
903 return nil, err
904 }
905 assignments = append(assignments, assignment)
906 }
907
908 var inPartition *PartitionClause
909 if p.tryConsumeKeywords(KeywordIn) {
910 inPartition, err = p.parsePartitionClause(p.Pos())
911 if err != nil {
912 return nil, err
913 }
914 }
915 if err := p.expectKeyword(KeywordWhere); err != nil {
916 return nil, err
917 }
918
919 whereExpr, err := p.parseExpr(p.Pos())
920 if err != nil {
921 return nil, err
922 }
923
924 return &AlterTableUpdate{
925 UpdatePos: pos,
926 StatementEnd: whereExpr.End(),
927 Assignments: assignments,
928 InPartition: inPartition,
929 WhereClause: whereExpr,
930 }, nil
931}
932
933// Parse column = expression assignment
934func (p *Parser) parseUpdateAssignment(pos Pos) (*UpdateAssignment, error) {

Callers 1

parseAlterTableMethod · 0.95

Calls 8

expectKeywordMethod · 0.95
parseUpdateAssignmentMethod · 0.95
PosMethod · 0.95
tryConsumeTokenKindMethod · 0.95
tryConsumeKeywordsMethod · 0.95
parsePartitionClauseMethod · 0.95
parseExprMethod · 0.95
EndMethod · 0.65

Tested by

no test coverage detected