MCPcopy
hub / github.com/pingcap/tidb / TestCast

Function TestCast

pkg/planner/core/expression_test.go:154–203  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

152}
153
154func TestCast(t *testing.T) {
155 f := types.NewFieldType(mysql.TypeLonglong)
156
157 expr := &ast.FuncCastExpr{
158 Expr: ast.NewValueExpr(1, "", ""),
159 Tp: f,
160 }
161
162 ctx := MockContext()
163 defer func() {
164 do := domain.GetDomain(ctx)
165 do.StatsHandle().Close()
166 }()
167 ast.SetFlag(expr)
168 v, err := evalAstExpr(ctx, expr)
169 require.NoError(t, err)
170 require.Equal(t, types.NewDatum(int64(1)), v)
171 require.Equal(t, types.NewDatum(int64(1)), buildExprAndEval(t, ctx, expr))
172
173 f.AddFlag(mysql.UnsignedFlag)
174 v, err = evalAstExpr(ctx, expr)
175 require.NoError(t, err)
176 require.Equal(t, types.NewDatum(uint64(1)), v)
177 require.Equal(t, types.NewDatum(uint64(1)), buildExprAndEval(t, ctx, expr))
178
179 f.SetType(mysql.TypeString)
180 f.SetCharset(charset.CharsetBin)
181 f.SetFlen(-1)
182 f.SetDecimal(-1)
183 v, err = evalAstExpr(ctx, expr)
184 require.NoError(t, err)
185 testutil.DatumEqual(t, types.NewDatum([]byte("1")), v)
186 testutil.DatumEqual(t, types.NewDatum([]byte("1")), buildExprAndEval(t, ctx, expr))
187
188 f.SetType(mysql.TypeString)
189 f.SetCharset(charset.CharsetUTF8)
190 f.SetFlen(-1)
191 f.SetDecimal(-1)
192 v, err = evalAstExpr(ctx, expr)
193 require.NoError(t, err)
194 testutil.DatumEqual(t, types.NewDatum([]byte("1")), v)
195 testutil.DatumEqual(t, types.NewDatum([]byte("1")), buildExprAndEval(t, ctx, expr))
196
197 expr.Expr = ast.NewValueExpr(nil, "", "")
198 v, err = evalAstExpr(ctx, expr)
199 require.NoError(t, err)
200 require.Equal(t, types.KindNull, v.Kind())
201 v = buildExprAndEval(t, ctx, expr)
202 require.Equal(t, types.KindNull, v.Kind())
203}
204
205func TestPatternIn(t *testing.T) {
206 tests := []testCase{

Callers

nothing calls this directly

Calls 15

AddFlagMethod · 0.95
SetTypeMethod · 0.95
SetCharsetMethod · 0.95
SetFlenMethod · 0.95
SetDecimalMethod · 0.95
NewFieldTypeFunction · 0.92
GetDomainFunction · 0.92
SetFlagFunction · 0.92
NewDatumFunction · 0.92
DatumEqualFunction · 0.92
MockContextFunction · 0.85
evalAstExprFunction · 0.85

Tested by

no test coverage detected