func (v *typeInferrer) aggregateFunc(x *ast.AggregateFuncExpr) { name := strings.ToLower(x.F) switch name { case "count": ft := types.NewFieldType(mysql.TypeLonglong) ft.Flen = 21 x.SetType(ft) } }
func (v *typeInferrer) aggregateFunc(x *ast.AggregateFuncExpr) { name := strings.ToLower(x.F) switch name { case ast.AggFuncCount: ft := types.NewFieldType(mysql.TypeLonglong) ft.Flen = 21 ft.Charset = charset.CharsetBin ft.Collate = charset.CollationBin x.SetType(ft) case ast.AggFuncMax, ast.AggFuncMin: x.SetType(x.Args[0].GetType()) case ast.AggFuncSum, ast.AggFuncAvg: ft := types.NewFieldType(mysql.TypeNewDecimal) ft.Charset = charset.CharsetBin ft.Collate = charset.CollationBin x.SetType(ft) case ast.AggFuncGroupConcat: ft := types.NewFieldType(mysql.TypeVarString) ft.Charset = v.defaultCharset cln, err := charset.GetDefaultCollation(v.defaultCharset) if err != nil { v.err = err } ft.Collate = cln x.SetType(ft) } }
func (v *typeInferrer) aggregateFunc(x *ast.AggregateFuncExpr) { name := strings.ToLower(x.F) switch name { case "count": ft := types.NewFieldType(mysql.TypeLonglong) ft.Flen = 21 ft.Charset = charset.CharsetBin ft.Collate = charset.CollationBin x.SetType(ft) case "sum": ft := types.NewFieldType(mysql.TypeNewDecimal) ft.Charset = charset.CharsetBin ft.Collate = charset.CollationBin x.SetType(ft) } }