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

Method parseValueList

rel/parse_sql.go:1078–1156  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1076}
1077
1078func (m *Sqlbridge) parseValueList() ([][]*ValueColumn, error) {
1079
1080 if m.Cur().T != lex.TokenLeftParenthesis {
1081 return nil, m.ErrMsg("Expecting opening paren ( ")
1082 }
1083
1084 var row []*ValueColumn
1085 values := make([][]*ValueColumn, 0)
1086
1087 for {
1088
1089 //u.Debug(m.Cur().String())
1090 switch m.Cur().T {
1091 case lex.TokenLeftParenthesis:
1092 // start of row
1093 if len(row) > 0 {
1094 values = append(values, row)
1095 }
1096 row = make([]*ValueColumn, 0)
1097 case lex.TokenRightParenthesis:
1098 values = append(values, row)
1099 case lex.TokenFrom, lex.TokenInto, lex.TokenLimit, lex.TokenEOS, lex.TokenEOF:
1100 if len(row) > 0 {
1101 values = append(values, row)
1102 }
1103 return values, nil
1104 case lex.TokenValue:
1105 row = append(row, &ValueColumn{Value: value.NewStringValue(m.Cur().V)})
1106 case lex.TokenInteger:
1107 iv, err := strconv.ParseInt(m.Cur().V, 10, 64)
1108 if err != nil {
1109 return nil, err
1110 }
1111 row = append(row, &ValueColumn{Value: value.NewIntValue(iv)})
1112 case lex.TokenFloat:
1113 fv, err := strconv.ParseFloat(m.Cur().V, 64)
1114 if err != nil {
1115 return nil, err
1116 }
1117 row = append(row, &ValueColumn{Value: value.NewNumberValue(fv)})
1118 case lex.TokenBool:
1119 bv, err := strconv.ParseBool(m.Cur().V)
1120 if err != nil {
1121 return nil, err
1122 }
1123 row = append(row, &ValueColumn{Value: value.NewBoolValue(bv)})
1124 case lex.TokenIdentity:
1125 // TODO: this is a bug in lexer
1126 lv := m.Cur().V
1127 if bv, err := strconv.ParseBool(lv); err == nil {
1128 row = append(row, &ValueColumn{Value: value.NewBoolValue(bv)})
1129 } else {
1130 // error?
1131 u.Warnf("Could not figure out how to use: %v", m.Cur())
1132 }
1133 case lex.TokenLeftBracket:
1134 // an array of values?
1135 m.Next() // Consume the [

Callers 2

parseSqlInsertMethod · 0.95
parseSqlUpsertMethod · 0.95

Calls 10

NewStringValueFunction · 0.92
NewIntValueFunction · 0.92
NewNumberValueFunction · 0.92
NewBoolValueFunction · 0.92
ValueArrayFunction · 0.92
ParseExprWithFuncsFunction · 0.92
CurMethod · 0.65
ErrMsgMethod · 0.65
NextMethod · 0.65
PeekMethod · 0.65

Tested by

no test coverage detected