MCPcopy Create free account
hub / github.com/araddon/qlbridge / parseUpdateList

Method parseUpdateList

rel/parse_sql.go:1039–1076  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1037}
1038
1039func (m *Sqlbridge) parseUpdateList() (map[string]*ValueColumn, error) {
1040
1041 cols := make(map[string]*ValueColumn)
1042 lastColName := ""
1043 for {
1044
1045 //u.Debugf("col:%v cur:%v", lastColName, m.Cur().String())
1046 switch m.Cur().T {
1047 case lex.TokenWhere, lex.TokenLimit, lex.TokenEOS, lex.TokenEOF:
1048 return cols, nil
1049 case lex.TokenValue:
1050 cols[lastColName] = &ValueColumn{Value: value.NewStringValue(m.Cur().V)}
1051 case lex.TokenInteger:
1052 iv, _ := strconv.ParseInt(m.Cur().V, 10, 64)
1053 cols[lastColName] = &ValueColumn{Value: value.NewIntValue(iv)}
1054 case lex.TokenComma, lex.TokenEqual:
1055 // don't need to do anything
1056 case lex.TokenIdentity:
1057 // TODO: this is a bug in lexer
1058 lv := m.Cur().V
1059 if bv, err := strconv.ParseBool(lv); err == nil {
1060 cols[lastColName] = &ValueColumn{Value: value.NewBoolValue(bv)}
1061 } else {
1062 lastColName = m.Cur().V
1063 }
1064 case lex.TokenUdfExpr:
1065 exprNode, err := expr.ParseExprWithFuncs(m, m.funcs)
1066 if err != nil {
1067 return nil, err
1068 }
1069 cols[lastColName] = &ValueColumn{Expr: exprNode}
1070 default:
1071 u.Warnf("don't know how to handle ? %v", m.Cur())
1072 return nil, m.ErrMsg("expected column")
1073 }
1074 m.Next()
1075 }
1076}
1077
1078func (m *Sqlbridge) parseValueList() ([][]*ValueColumn, error) {
1079

Callers 2

parseSqlUpdateMethod · 0.95
parseSqlUpsertMethod · 0.95

Calls 7

NewStringValueFunction · 0.92
NewIntValueFunction · 0.92
NewBoolValueFunction · 0.92
ParseExprWithFuncsFunction · 0.92
CurMethod · 0.65
ErrMsgMethod · 0.65
NextMethod · 0.65

Tested by

no test coverage detected