code: func numericContextResultType(ft *types.FieldType) types.EvalType {
  	if types.IsTypeTemporal(ft.Tp) {
  		if ft.Decimal > 0 {
  			return types.ETDecimal
  		}
  		return types.ETInt
  	}
  	if types.IsBinaryStr(ft) {
  		return types.ETInt
  	}
  	evalTp4Ft := types.ETReal
  	if !ft.Hybrid() {
  		evalTp4Ft = ft.EvalType()
  		if evalTp4Ft != types.ETDecimal && evalTp4Ft != types.ETInt {
  			evalTp4Ft = types.ETReal
  		}
  	}
  	return evalTp4Ft
  }
docs: // numericContextResultType returns types.EvalType for numeric function's parameters.
  // the returned types.EvalType should be one of: types.ETInt, types.ETDecimal, types.ETReal