Beispiel #1
0
func (e *Evaluator) funcCast(v *ast.FuncCastExpr) bool {
	d := *v.Expr.GetDatum()
	// Casting nil to any type returns null
	if d.IsNull() {
		v.SetNull()
		return true
	}
	var err error
	d, err = d.Cast(v.Tp)
	if err != nil {
		e.err = errors.Trace(err)
		return false
	}
	v.SetDatum(d)
	return true
}
Beispiel #2
0
func (e *Evaluator) funcCast(v *ast.FuncCastExpr) bool {
	value := v.Expr.GetValue()
	// Casting nil to any type returns null
	if value == nil {
		v.SetValue(nil)
		return true
	}
	var err error
	value, err = types.Cast(value, v.Tp)
	if err != nil {
		e.err = errors.Trace(err)
		return false
	}
	v.SetValue(value)
	return true
}