File tree Expand file tree Collapse file tree
catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis
core/src/test/resources/sql-tests Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -548,6 +548,7 @@ object TypeCoercion {
548548 }
549549
550550 private def isNumericOrNull (ex : Expression ): Boolean = {
551+ // We need to handle null types in case a query contains null literals.
551552 ex.dataType.isInstanceOf [NumericType ] || ex.dataType == NullType
552553 }
553554 }
Original file line number Diff line number Diff line change @@ -16,11 +16,19 @@ select + + 100;
1616select - - max (key) from testdata;
1717select + - key from testdata where key = 33 ;
1818
19+ -- div
20+ select 5 / 2 ;
21+ select 5 / 0 ;
22+ select 5 / null ;
23+ select null / 5 ;
24+ select 5 div 2 ;
25+ select 5 div 0 ;
26+ select 5 div null ;
27+ select null div 5 ;
28+
1929-- other arithmetics
2030select 1 + 2 ;
2131select 1 - 2 ;
2232select 2 * 5 ;
23- select 5 / 2 ;
24- select 5 div 2 ;
2533select 5 % 3 ;
2634select pmod(- 7 , 3 );
Original file line number Diff line number Diff line change 11-- Automatically generated by SQLQueryTestSuite
2- -- Number of queries: 22
2+ -- Number of queries: 28
33
44
55-- !query 0
@@ -123,35 +123,35 @@ struct<(- key):int>
123123
124124
125125-- !query 15
126- select 1 + 2
126+ select 5 / 2
127127-- !query 15 schema
128- struct<(1 + 2):int >
128+ struct<(CAST(5 AS DOUBLE) / CAST(2 AS DOUBLE)):double >
129129-- !query 15 output
130- 3
130+ 2.5
131131
132132
133133-- !query 16
134- select 1 - 2
134+ select 5 / 0
135135-- !query 16 schema
136- struct<(1 - 2):int >
136+ struct<(CAST(5 AS DOUBLE) / CAST(0 AS DOUBLE)):double >
137137-- !query 16 output
138- -1
138+ NULL
139139
140140
141141-- !query 17
142- select 2 * 5
142+ select 5 / null
143143-- !query 17 schema
144- struct<(2 * 5):int >
144+ struct<(CAST(5 AS DOUBLE) / CAST(NULL AS DOUBLE)):double >
145145-- !query 17 output
146- 10
146+ NULL
147147
148148
149149-- !query 18
150- select 5 / 2
150+ select null / 5
151151-- !query 18 schema
152- struct<(CAST(5 AS DOUBLE) / CAST(2 AS DOUBLE)):double>
152+ struct<(CAST(NULL AS DOUBLE) / CAST(5 AS DOUBLE)):double>
153153-- !query 18 output
154- 2.5
154+ NULL
155155
156156
157157-- !query 19
@@ -163,16 +163,64 @@ struct<CAST((CAST(5 AS DOUBLE) / CAST(2 AS DOUBLE)) AS BIGINT):bigint>
163163
164164
165165-- !query 20
166- select 5 % 3
166+ select 5 div 0
167167-- !query 20 schema
168- struct<(5 % 3):int >
168+ struct<CAST((CAST(5 AS DOUBLE) / CAST(0 AS DOUBLE)) AS BIGINT):bigint >
169169-- !query 20 output
170- 2
170+ NULL
171171
172172
173173-- !query 21
174- select pmod(-7, 3)
174+ select 5 div null
175175-- !query 21 schema
176- struct<pmod(-7, 3):int >
176+ struct<CAST((CAST(5 AS DOUBLE) / CAST(NULL AS DOUBLE)) AS BIGINT):bigint >
177177-- !query 21 output
178+ NULL
179+
180+
181+ -- !query 22
182+ select null div 5
183+ -- !query 22 schema
184+ struct<CAST((CAST(NULL AS DOUBLE) / CAST(5 AS DOUBLE)) AS BIGINT):bigint>
185+ -- !query 22 output
186+ NULL
187+
188+
189+ -- !query 23
190+ select 1 + 2
191+ -- !query 23 schema
192+ struct<(1 + 2):int>
193+ -- !query 23 output
194+ 3
195+
196+
197+ -- !query 24
198+ select 1 - 2
199+ -- !query 24 schema
200+ struct<(1 - 2):int>
201+ -- !query 24 output
202+ -1
203+
204+
205+ -- !query 25
206+ select 2 * 5
207+ -- !query 25 schema
208+ struct<(2 * 5):int>
209+ -- !query 25 output
210+ 10
211+
212+
213+ -- !query 26
214+ select 5 % 3
215+ -- !query 26 schema
216+ struct<(5 % 3):int>
217+ -- !query 26 output
218+ 2
219+
220+
221+ -- !query 27
222+ select pmod(-7, 3)
223+ -- !query 27 schema
224+ struct<pmod(-7, 3):int>
225+ -- !query 27 output
1782262
You can’t perform that action at this time.
0 commit comments