From 1c43f55f909594cc2e7a109179ca34f018ba3789 Mon Sep 17 00:00:00 2001 From: Shenghui Wu <793703860@qq.com> Date: Thu, 1 Aug 2019 14:30:07 +0800 Subject: [PATCH] parser: support cast as float (#11519) --- expression/integration_test.go | 28 ++++++++++++++++++++++++++++ go.mod | 2 +- go.sum | 4 ++-- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/expression/integration_test.go b/expression/integration_test.go index 04b4526e3cb53..785457b8a0097 100644 --- a/expression/integration_test.go +++ b/expression/integration_test.go @@ -2372,6 +2372,34 @@ func (s *testIntegrationSuite) TestBuiltin(c *C) { result = tk.MustQuery("select cast(0x12345678 as double)") result.Check(testkit.Rows("305419896")) + // test cast as float + result = tk.MustQuery("select cast(1 as float)") + result.Check(testkit.Rows("1")) + result = tk.MustQuery("select cast(cast(12345 as unsigned) as float)") + result.Check(testkit.Rows("12345")) + result = tk.MustQuery("select cast(1.1 as float) = 1.1") + result.Check(testkit.Rows("1")) + result = tk.MustQuery("select cast(-1.1 as float) = -1.1") + result.Check(testkit.Rows("1")) + result = tk.MustQuery("select cast('123.321' as float) =123.321") + result.Check(testkit.Rows("1")) + result = tk.MustQuery("select cast('12345678901234567890' as float) = 1.2345678901234567e19") + result.Check(testkit.Rows("1")) + result = tk.MustQuery("select cast(-1 as float)") + result.Check(testkit.Rows("-1")) + result = tk.MustQuery("select cast(null as float)") + result.Check(testkit.Rows("")) + result = tk.MustQuery("select cast(12345678901234567890 as float) = 1.2345678901234567e19") + result.Check(testkit.Rows("1")) + result = tk.MustQuery("select cast(cast(-1 as unsigned) as float) = 1.8446744073709552e19") + result.Check(testkit.Rows("1")) + result = tk.MustQuery("select cast(1e100 as float(40)) = 1e100") + result.Check(testkit.Rows("1")) + result = tk.MustQuery("select cast(123456789012345678901234567890 as float(40)) = 1.2345678901234568e29") + result.Check(testkit.Rows("1")) + result = tk.MustQuery("select cast(0x12345678 as float(40)) = 305419896") + result.Check(testkit.Rows("1")) + // test cast time as decimal overflow tk.MustExec("drop table if exists t1") tk.MustExec("create table t1(s1 time);") diff --git a/go.mod b/go.mod index d35cff7ab4845..ce0b1ec56a1a9 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/pingcap/goleveldb v0.0.0-20171020122428-b9ff6c35079e github.com/pingcap/kvproto v0.0.0-20190703131923-d9830856b531 github.com/pingcap/log v0.0.0-20190307075452-bd41d9273596 - github.com/pingcap/parser v0.0.0-20190730091357-5238015a66f8 + github.com/pingcap/parser v0.0.0-20190801033650-4849eb88ee66 github.com/pingcap/pd v0.0.0-20190712044914-75a1f9f3062b github.com/pingcap/tidb-tools v2.1.3-0.20190321065848-1e8b48f5c168+incompatible github.com/pingcap/tipb v0.0.0-20190428032612-535e1abaa330 diff --git a/go.sum b/go.sum index a9cc96d8b451c..37382ecbbf34e 100644 --- a/go.sum +++ b/go.sum @@ -165,8 +165,8 @@ github.com/pingcap/kvproto v0.0.0-20190703131923-d9830856b531/go.mod h1:QMdbTAXC github.com/pingcap/log v0.0.0-20190214045112-b37da76f67a7/go.mod h1:xsfkWVaFVV5B8e1K9seWfyJWFrIhbtUTAD8NV1Pq3+w= github.com/pingcap/log v0.0.0-20190307075452-bd41d9273596 h1:t2OQTpPJnrPDGlvA+3FwJptMTt6MEPdzK1Wt99oaefQ= github.com/pingcap/log v0.0.0-20190307075452-bd41d9273596/go.mod h1:WpHUKhNZ18v116SvGrmjkA9CBhYmuUTKL+p8JC9ANEw= -github.com/pingcap/parser v0.0.0-20190730091357-5238015a66f8 h1:Htdqrie9rVA/x2yqnXjqYu+VNvff3Cnj7clCNvIyXVU= -github.com/pingcap/parser v0.0.0-20190730091357-5238015a66f8/go.mod h1:1FNvfp9+J0wvc4kl8eGNh7Rqrxveg15jJoWo/a0uHwA= +github.com/pingcap/parser v0.0.0-20190801033650-4849eb88ee66 h1:RQlXn268eNxAh4ZcDGHSdDkv20x1eJDQu8vYvQh3x5c= +github.com/pingcap/parser v0.0.0-20190801033650-4849eb88ee66/go.mod h1:1FNvfp9+J0wvc4kl8eGNh7Rqrxveg15jJoWo/a0uHwA= github.com/pingcap/pd v0.0.0-20190712044914-75a1f9f3062b h1:oS9PftxQqgcRouKhhdaB52tXhVLEP7Ng3Qqsd6Z18iY= github.com/pingcap/pd v0.0.0-20190712044914-75a1f9f3062b/go.mod h1:3DlDlFT7EF64A1bmb/tulZb6wbPSagm5G4p1AlhaEDs= github.com/pingcap/tidb-tools v2.1.3-0.20190321065848-1e8b48f5c168+incompatible h1:MkWCxgZpJBgY2f4HtwWMMFzSBb3+JPzeJgF3VrXE/bU=