コード例 #1
0
ファイル: evaluator.go プロジェクト: yangxuanjia/tidb
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
}
コード例 #2
0
ファイル: evaluator.go プロジェクト: mrtoms/tidb
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
}