示例#1
0
func (er *expressionRewriter) castToScalarFunc(v *ast.FuncCastExpr) {
	bt, err := evaluator.CastFuncFactory(v.Tp)
	if err != nil {
		er.err = errors.Trace(err)
		return
	}
	function := &expression.ScalarFunction{
		Args:     []expression.Expression{er.ctxStack[len(er.ctxStack)-1]},
		FuncName: model.NewCIStr("cast"),
		RetType:  v.Tp,
		Function: bt}
	er.ctxStack[len(er.ctxStack)-1] = function
}
示例#2
0
func (er *expressionRewriter) castToScalarFunc(v *ast.FuncCastExpr) {
	bt, err := evaluator.CastFuncFactory(v.Tp)
	if err != nil {
		er.err = errors.Trace(err)
		return
	}
	er.checkArgsOneColumn(er.ctxStack[len(er.ctxStack)-1])
	if er.err != nil {
		return
	}
	function := &expression.ScalarFunction{
		Args:      []expression.Expression{er.ctxStack[len(er.ctxStack)-1]},
		FuncName:  model.NewCIStr(ast.Cast),
		RetType:   v.Tp,
		Function:  bt,
		ArgValues: make([]types.Datum, 1)}
	er.ctxStack[len(er.ctxStack)-1] = function
}