Skip to content

Commit 6129ffa

Browse files
wangyumgatorsmile
authored andcommitted
[SPARK-22821][TEST] Basic tests for WidenSetOperationTypes, BooleanEquality, StackCoercion and Division
## What changes were proposed in this pull request? Test Coverage for `WidenSetOperationTypes`, `BooleanEquality`, `StackCoercion` and `Division`, this is a Sub-tasks for [SPARK-22722](https://issues.apache.org/jira/browse/SPARK-22722). ## How was this patch tested? N/A Author: Yuming Wang <wgyumg@gmail.com> Closes #20006 from wangyum/SPARK-22821.
1 parent ef10f45 commit 6129ffa

File tree

6 files changed

+3820
-0
lines changed

6 files changed

+3820
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
--
2+
-- Licensed to the Apache Software Foundation (ASF) under one or more
3+
-- contributor license agreements. See the NOTICE file distributed with
4+
-- this work for additional information regarding copyright ownership.
5+
-- The ASF licenses this file to You under the Apache License, Version 2.0
6+
-- (the "License"); you may not use this file except in compliance with
7+
-- the License. You may obtain a copy of the License at
8+
--
9+
-- http://www.apache.org/licenses/LICENSE-2.0
10+
--
11+
-- Unless required by applicable law or agreed to in writing, software
12+
-- distributed under the License is distributed on an "AS IS" BASIS,
13+
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
-- See the License for the specific language governing permissions and
15+
-- limitations under the License.
16+
--
17+
18+
CREATE TEMPORARY VIEW t AS SELECT 1;
19+
20+
SELECT true = cast(1 as tinyint) FROM t;
21+
SELECT true = cast(1 as smallint) FROM t;
22+
SELECT true = cast(1 as int) FROM t;
23+
SELECT true = cast(1 as bigint) FROM t;
24+
SELECT true = cast(1 as float) FROM t;
25+
SELECT true = cast(1 as double) FROM t;
26+
SELECT true = cast(1 as decimal(10, 0)) FROM t;
27+
SELECT true = cast(1 as string) FROM t;
28+
SELECT true = cast('1' as binary) FROM t;
29+
SELECT true = cast(1 as boolean) FROM t;
30+
SELECT true = cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
31+
SELECT true = cast('2017-12-11 09:30:00' as date) FROM t;
32+
33+
SELECT true <=> cast(1 as tinyint) FROM t;
34+
SELECT true <=> cast(1 as smallint) FROM t;
35+
SELECT true <=> cast(1 as int) FROM t;
36+
SELECT true <=> cast(1 as bigint) FROM t;
37+
SELECT true <=> cast(1 as float) FROM t;
38+
SELECT true <=> cast(1 as double) FROM t;
39+
SELECT true <=> cast(1 as decimal(10, 0)) FROM t;
40+
SELECT true <=> cast(1 as string) FROM t;
41+
SELECT true <=> cast('1' as binary) FROM t;
42+
SELECT true <=> cast(1 as boolean) FROM t;
43+
SELECT true <=> cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
44+
SELECT true <=> cast('2017-12-11 09:30:00' as date) FROM t;
45+
46+
SELECT cast(1 as tinyint) = true FROM t;
47+
SELECT cast(1 as smallint) = true FROM t;
48+
SELECT cast(1 as int) = true FROM t;
49+
SELECT cast(1 as bigint) = true FROM t;
50+
SELECT cast(1 as float) = true FROM t;
51+
SELECT cast(1 as double) = true FROM t;
52+
SELECT cast(1 as decimal(10, 0)) = true FROM t;
53+
SELECT cast(1 as string) = true FROM t;
54+
SELECT cast('1' as binary) = true FROM t;
55+
SELECT cast(1 as boolean) = true FROM t;
56+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) = true FROM t;
57+
SELECT cast('2017-12-11 09:30:00' as date) = true FROM t;
58+
59+
SELECT cast(1 as tinyint) <=> true FROM t;
60+
SELECT cast(1 as smallint) <=> true FROM t;
61+
SELECT cast(1 as int) <=> true FROM t;
62+
SELECT cast(1 as bigint) <=> true FROM t;
63+
SELECT cast(1 as float) <=> true FROM t;
64+
SELECT cast(1 as double) <=> true FROM t;
65+
SELECT cast(1 as decimal(10, 0)) <=> true FROM t;
66+
SELECT cast(1 as string) <=> true FROM t;
67+
SELECT cast('1' as binary) <=> true FROM t;
68+
SELECT cast(1 as boolean) <=> true FROM t;
69+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) <=> true FROM t;
70+
SELECT cast('2017-12-11 09:30:00' as date) <=> true FROM t;
71+
72+
SELECT false = cast(0 as tinyint) FROM t;
73+
SELECT false = cast(0 as smallint) FROM t;
74+
SELECT false = cast(0 as int) FROM t;
75+
SELECT false = cast(0 as bigint) FROM t;
76+
SELECT false = cast(0 as float) FROM t;
77+
SELECT false = cast(0 as double) FROM t;
78+
SELECT false = cast(0 as decimal(10, 0)) FROM t;
79+
SELECT false = cast(0 as string) FROM t;
80+
SELECT false = cast('0' as binary) FROM t;
81+
SELECT false = cast(0 as boolean) FROM t;
82+
SELECT false = cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
83+
SELECT false = cast('2017-12-11 09:30:00' as date) FROM t;
84+
85+
SELECT false <=> cast(0 as tinyint) FROM t;
86+
SELECT false <=> cast(0 as smallint) FROM t;
87+
SELECT false <=> cast(0 as int) FROM t;
88+
SELECT false <=> cast(0 as bigint) FROM t;
89+
SELECT false <=> cast(0 as float) FROM t;
90+
SELECT false <=> cast(0 as double) FROM t;
91+
SELECT false <=> cast(0 as decimal(10, 0)) FROM t;
92+
SELECT false <=> cast(0 as string) FROM t;
93+
SELECT false <=> cast('0' as binary) FROM t;
94+
SELECT false <=> cast(0 as boolean) FROM t;
95+
SELECT false <=> cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
96+
SELECT false <=> cast('2017-12-11 09:30:00' as date) FROM t;
97+
98+
SELECT cast(0 as tinyint) = false FROM t;
99+
SELECT cast(0 as smallint) = false FROM t;
100+
SELECT cast(0 as int) = false FROM t;
101+
SELECT cast(0 as bigint) = false FROM t;
102+
SELECT cast(0 as float) = false FROM t;
103+
SELECT cast(0 as double) = false FROM t;
104+
SELECT cast(0 as decimal(10, 0)) = false FROM t;
105+
SELECT cast(0 as string) = false FROM t;
106+
SELECT cast('0' as binary) = false FROM t;
107+
SELECT cast(0 as boolean) = false FROM t;
108+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) = false FROM t;
109+
SELECT cast('2017-12-11 09:30:00' as date) = false FROM t;
110+
111+
SELECT cast(0 as tinyint) <=> false FROM t;
112+
SELECT cast(0 as smallint) <=> false FROM t;
113+
SELECT cast(0 as int) <=> false FROM t;
114+
SELECT cast(0 as bigint) <=> false FROM t;
115+
SELECT cast(0 as float) <=> false FROM t;
116+
SELECT cast(0 as double) <=> false FROM t;
117+
SELECT cast(0 as decimal(10, 0)) <=> false FROM t;
118+
SELECT cast(0 as string) <=> false FROM t;
119+
SELECT cast('0' as binary) <=> false FROM t;
120+
SELECT cast(0 as boolean) <=> false FROM t;
121+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) <=> false FROM t;
122+
SELECT cast('2017-12-11 09:30:00' as date) <=> false FROM t;
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
--
2+
-- Licensed to the Apache Software Foundation (ASF) under one or more
3+
-- contributor license agreements. See the NOTICE file distributed with
4+
-- this work for additional information regarding copyright ownership.
5+
-- The ASF licenses this file to You under the Apache License, Version 2.0
6+
-- (the "License"); you may not use this file except in compliance with
7+
-- the License. You may obtain a copy of the License at
8+
--
9+
-- http://www.apache.org/licenses/LICENSE-2.0
10+
--
11+
-- Unless required by applicable law or agreed to in writing, software
12+
-- distributed under the License is distributed on an "AS IS" BASIS,
13+
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
-- See the License for the specific language governing permissions and
15+
-- limitations under the License.
16+
--
17+
18+
CREATE TEMPORARY VIEW t AS SELECT 1;
19+
20+
SELECT cast(1 as tinyint) / cast(1 as tinyint) FROM t;
21+
SELECT cast(1 as tinyint) / cast(1 as smallint) FROM t;
22+
SELECT cast(1 as tinyint) / cast(1 as int) FROM t;
23+
SELECT cast(1 as tinyint) / cast(1 as bigint) FROM t;
24+
SELECT cast(1 as tinyint) / cast(1 as float) FROM t;
25+
SELECT cast(1 as tinyint) / cast(1 as double) FROM t;
26+
SELECT cast(1 as tinyint) / cast(1 as decimal(10, 0)) FROM t;
27+
SELECT cast(1 as tinyint) / cast(1 as string) FROM t;
28+
SELECT cast(1 as tinyint) / cast('1' as binary) FROM t;
29+
SELECT cast(1 as tinyint) / cast(1 as boolean) FROM t;
30+
SELECT cast(1 as tinyint) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
31+
SELECT cast(1 as tinyint) / cast('2017-12-11 09:30:00' as date) FROM t;
32+
33+
SELECT cast(1 as smallint) / cast(1 as tinyint) FROM t;
34+
SELECT cast(1 as smallint) / cast(1 as smallint) FROM t;
35+
SELECT cast(1 as smallint) / cast(1 as int) FROM t;
36+
SELECT cast(1 as smallint) / cast(1 as bigint) FROM t;
37+
SELECT cast(1 as smallint) / cast(1 as float) FROM t;
38+
SELECT cast(1 as smallint) / cast(1 as double) FROM t;
39+
SELECT cast(1 as smallint) / cast(1 as decimal(10, 0)) FROM t;
40+
SELECT cast(1 as smallint) / cast(1 as string) FROM t;
41+
SELECT cast(1 as smallint) / cast('1' as binary) FROM t;
42+
SELECT cast(1 as smallint) / cast(1 as boolean) FROM t;
43+
SELECT cast(1 as smallint) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
44+
SELECT cast(1 as smallint) / cast('2017-12-11 09:30:00' as date) FROM t;
45+
46+
SELECT cast(1 as int) / cast(1 as tinyint) FROM t;
47+
SELECT cast(1 as int) / cast(1 as smallint) FROM t;
48+
SELECT cast(1 as int) / cast(1 as int) FROM t;
49+
SELECT cast(1 as int) / cast(1 as bigint) FROM t;
50+
SELECT cast(1 as int) / cast(1 as float) FROM t;
51+
SELECT cast(1 as int) / cast(1 as double) FROM t;
52+
SELECT cast(1 as int) / cast(1 as decimal(10, 0)) FROM t;
53+
SELECT cast(1 as int) / cast(1 as string) FROM t;
54+
SELECT cast(1 as int) / cast('1' as binary) FROM t;
55+
SELECT cast(1 as int) / cast(1 as boolean) FROM t;
56+
SELECT cast(1 as int) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
57+
SELECT cast(1 as int) / cast('2017-12-11 09:30:00' as date) FROM t;
58+
59+
SELECT cast(1 as bigint) / cast(1 as tinyint) FROM t;
60+
SELECT cast(1 as bigint) / cast(1 as smallint) FROM t;
61+
SELECT cast(1 as bigint) / cast(1 as int) FROM t;
62+
SELECT cast(1 as bigint) / cast(1 as bigint) FROM t;
63+
SELECT cast(1 as bigint) / cast(1 as float) FROM t;
64+
SELECT cast(1 as bigint) / cast(1 as double) FROM t;
65+
SELECT cast(1 as bigint) / cast(1 as decimal(10, 0)) FROM t;
66+
SELECT cast(1 as bigint) / cast(1 as string) FROM t;
67+
SELECT cast(1 as bigint) / cast('1' as binary) FROM t;
68+
SELECT cast(1 as bigint) / cast(1 as boolean) FROM t;
69+
SELECT cast(1 as bigint) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
70+
SELECT cast(1 as bigint) / cast('2017-12-11 09:30:00' as date) FROM t;
71+
72+
SELECT cast(1 as float) / cast(1 as tinyint) FROM t;
73+
SELECT cast(1 as float) / cast(1 as smallint) FROM t;
74+
SELECT cast(1 as float) / cast(1 as int) FROM t;
75+
SELECT cast(1 as float) / cast(1 as bigint) FROM t;
76+
SELECT cast(1 as float) / cast(1 as float) FROM t;
77+
SELECT cast(1 as float) / cast(1 as double) FROM t;
78+
SELECT cast(1 as float) / cast(1 as decimal(10, 0)) FROM t;
79+
SELECT cast(1 as float) / cast(1 as string) FROM t;
80+
SELECT cast(1 as float) / cast('1' as binary) FROM t;
81+
SELECT cast(1 as float) / cast(1 as boolean) FROM t;
82+
SELECT cast(1 as float) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
83+
SELECT cast(1 as float) / cast('2017-12-11 09:30:00' as date) FROM t;
84+
85+
SELECT cast(1 as double) / cast(1 as tinyint) FROM t;
86+
SELECT cast(1 as double) / cast(1 as smallint) FROM t;
87+
SELECT cast(1 as double) / cast(1 as int) FROM t;
88+
SELECT cast(1 as double) / cast(1 as bigint) FROM t;
89+
SELECT cast(1 as double) / cast(1 as float) FROM t;
90+
SELECT cast(1 as double) / cast(1 as double) FROM t;
91+
SELECT cast(1 as double) / cast(1 as decimal(10, 0)) FROM t;
92+
SELECT cast(1 as double) / cast(1 as string) FROM t;
93+
SELECT cast(1 as double) / cast('1' as binary) FROM t;
94+
SELECT cast(1 as double) / cast(1 as boolean) FROM t;
95+
SELECT cast(1 as double) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
96+
SELECT cast(1 as double) / cast('2017-12-11 09:30:00' as date) FROM t;
97+
98+
SELECT cast(1 as decimal(10, 0)) / cast(1 as tinyint) FROM t;
99+
SELECT cast(1 as decimal(10, 0)) / cast(1 as smallint) FROM t;
100+
SELECT cast(1 as decimal(10, 0)) / cast(1 as int) FROM t;
101+
SELECT cast(1 as decimal(10, 0)) / cast(1 as bigint) FROM t;
102+
SELECT cast(1 as decimal(10, 0)) / cast(1 as float) FROM t;
103+
SELECT cast(1 as decimal(10, 0)) / cast(1 as double) FROM t;
104+
SELECT cast(1 as decimal(10, 0)) / cast(1 as decimal(10, 0)) FROM t;
105+
SELECT cast(1 as decimal(10, 0)) / cast(1 as string) FROM t;
106+
SELECT cast(1 as decimal(10, 0)) / cast('1' as binary) FROM t;
107+
SELECT cast(1 as decimal(10, 0)) / cast(1 as boolean) FROM t;
108+
SELECT cast(1 as decimal(10, 0)) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
109+
SELECT cast(1 as decimal(10, 0)) / cast('2017-12-11 09:30:00' as date) FROM t;
110+
111+
SELECT cast(1 as string) / cast(1 as tinyint) FROM t;
112+
SELECT cast(1 as string) / cast(1 as smallint) FROM t;
113+
SELECT cast(1 as string) / cast(1 as int) FROM t;
114+
SELECT cast(1 as string) / cast(1 as bigint) FROM t;
115+
SELECT cast(1 as string) / cast(1 as float) FROM t;
116+
SELECT cast(1 as string) / cast(1 as double) FROM t;
117+
SELECT cast(1 as string) / cast(1 as decimal(10, 0)) FROM t;
118+
SELECT cast(1 as string) / cast(1 as string) FROM t;
119+
SELECT cast(1 as string) / cast('1' as binary) FROM t;
120+
SELECT cast(1 as string) / cast(1 as boolean) FROM t;
121+
SELECT cast(1 as string) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
122+
SELECT cast(1 as string) / cast('2017-12-11 09:30:00' as date) FROM t;
123+
124+
SELECT cast('1' as binary) / cast(1 as tinyint) FROM t;
125+
SELECT cast('1' as binary) / cast(1 as smallint) FROM t;
126+
SELECT cast('1' as binary) / cast(1 as int) FROM t;
127+
SELECT cast('1' as binary) / cast(1 as bigint) FROM t;
128+
SELECT cast('1' as binary) / cast(1 as float) FROM t;
129+
SELECT cast('1' as binary) / cast(1 as double) FROM t;
130+
SELECT cast('1' as binary) / cast(1 as decimal(10, 0)) FROM t;
131+
SELECT cast('1' as binary) / cast(1 as string) FROM t;
132+
SELECT cast('1' as binary) / cast('1' as binary) FROM t;
133+
SELECT cast('1' as binary) / cast(1 as boolean) FROM t;
134+
SELECT cast('1' as binary) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
135+
SELECT cast('1' as binary) / cast('2017-12-11 09:30:00' as date) FROM t;
136+
137+
SELECT cast(1 as boolean) / cast(1 as tinyint) FROM t;
138+
SELECT cast(1 as boolean) / cast(1 as smallint) FROM t;
139+
SELECT cast(1 as boolean) / cast(1 as int) FROM t;
140+
SELECT cast(1 as boolean) / cast(1 as bigint) FROM t;
141+
SELECT cast(1 as boolean) / cast(1 as float) FROM t;
142+
SELECT cast(1 as boolean) / cast(1 as double) FROM t;
143+
SELECT cast(1 as boolean) / cast(1 as decimal(10, 0)) FROM t;
144+
SELECT cast(1 as boolean) / cast(1 as string) FROM t;
145+
SELECT cast(1 as boolean) / cast('1' as binary) FROM t;
146+
SELECT cast(1 as boolean) / cast(1 as boolean) FROM t;
147+
SELECT cast(1 as boolean) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
148+
SELECT cast(1 as boolean) / cast('2017-12-11 09:30:00' as date) FROM t;
149+
150+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast(1 as tinyint) FROM t;
151+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast(1 as smallint) FROM t;
152+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast(1 as int) FROM t;
153+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast(1 as bigint) FROM t;
154+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast(1 as float) FROM t;
155+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast(1 as double) FROM t;
156+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast(1 as decimal(10, 0)) FROM t;
157+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast(1 as string) FROM t;
158+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast('1' as binary) FROM t;
159+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast(1 as boolean) FROM t;
160+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
161+
SELECT cast('2017-12-11 09:30:00.0' as timestamp) / cast('2017-12-11 09:30:00' as date) FROM t;
162+
163+
SELECT cast('2017-12-11 09:30:00' as date) / cast(1 as tinyint) FROM t;
164+
SELECT cast('2017-12-11 09:30:00' as date) / cast(1 as smallint) FROM t;
165+
SELECT cast('2017-12-11 09:30:00' as date) / cast(1 as int) FROM t;
166+
SELECT cast('2017-12-11 09:30:00' as date) / cast(1 as bigint) FROM t;
167+
SELECT cast('2017-12-11 09:30:00' as date) / cast(1 as float) FROM t;
168+
SELECT cast('2017-12-11 09:30:00' as date) / cast(1 as double) FROM t;
169+
SELECT cast('2017-12-11 09:30:00' as date) / cast(1 as decimal(10, 0)) FROM t;
170+
SELECT cast('2017-12-11 09:30:00' as date) / cast(1 as string) FROM t;
171+
SELECT cast('2017-12-11 09:30:00' as date) / cast('1' as binary) FROM t;
172+
SELECT cast('2017-12-11 09:30:00' as date) / cast(1 as boolean) FROM t;
173+
SELECT cast('2017-12-11 09:30:00' as date) / cast('2017-12-11 09:30:00.0' as timestamp) FROM t;
174+
SELECT cast('2017-12-11 09:30:00' as date) / cast('2017-12-11 09:30:00' as date) FROM t;

0 commit comments

Comments
 (0)