aboutsummaryrefslogtreecommitdiff
path: root/sql/hive
diff options
context:
space:
mode:
Diffstat (limited to 'sql/hive')
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala11
-rw-r--r--sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-45f5619d9e4510195fe67f7c8d14a5c0309
-rw-r--r--sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-a393cfc24ad74f930f3284743254c10c309
-rw-r--r--sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-ae497f1556f548c1e2da9244397a985d309
-rw-r--r--sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-c60b6075da793b826db5eb4b08d7bab9309
-rw-r--r--sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala3
6 files changed, 1250 insertions, 0 deletions
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala
index c7de4ab6d3..d50e2c65b7 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala
@@ -22,6 +22,7 @@ import scala.collection.mutable.ArrayBuffer
import org.apache.hadoop.hive.common.`type`.HiveDecimal
import org.apache.hadoop.hive.ql.exec.UDF
import org.apache.hadoop.hive.ql.exec.{FunctionInfo, FunctionRegistry}
+import org.apache.hadoop.hive.ql.udf.{UDFType => HiveUDFType}
import org.apache.hadoop.hive.ql.udf.generic._
import org.apache.hadoop.hive.serde2.objectinspector._
import org.apache.hadoop.hive.serde2.objectinspector.primitive._
@@ -237,6 +238,16 @@ private[hive] case class HiveGenericUdf(name: String, children: Seq[Expression])
@transient
protected lazy val returnInspector = function.initialize(argumentInspectors.toArray)
+ @transient
+ protected lazy val isUDFDeterministic = {
+ val udfType = function.getClass().getAnnotation(classOf[HiveUDFType])
+ (udfType != null && udfType.deterministic())
+ }
+
+ override def foldable = {
+ isUDFDeterministic && children.foldLeft(true)((prev, n) => prev && n.foldable)
+ }
+
val dataType: DataType = inspectorToDataType(returnInspector)
override def eval(input: Row): Any = {
diff --git a/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-45f5619d9e4510195fe67f7c8d14a5c0 b/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-45f5619d9e4510195fe67f7c8d14a5c0
new file mode 100644
index 0000000000..7643569a2c
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-45f5619d9e4510195fe67f7c8d14a5c0
@@ -0,0 +1,309 @@
+0.0 0 0 0 3
+2.0 0 2 0 1
+4.0 0 4 0 1
+5.0 0 15 0 3
+8.0 0 8 0 1
+9.0 0 9 0 1
+10.0 0 10 0 1
+11.0 0 11 0 1
+12.0 0 24 0 2
+15.0 0 30 0 2
+17.0 0 17 0 1
+18.0 0 36 0 2
+19.0 0 19 0 1
+20.0 0 20 0 1
+24.0 0 48 0 2
+26.0 0 52 0 2
+27.0 0 27 0 1
+28.0 0 28 0 1
+30.0 0 30 0 1
+33.0 0 33 0 1
+34.0 0 34 0 1
+35.0 0 105 0 3
+37.0 0 74 0 2
+41.0 0 41 0 1
+42.0 0 84 0 2
+43.0 0 43 0 1
+44.0 0 44 0 1
+47.0 0 47 0 1
+51.0 0 102 0 2
+53.0 0 53 0 1
+54.0 0 54 0 1
+57.0 0 57 0 1
+58.0 0 116 0 2
+64.0 0 64 0 1
+65.0 0 65 0 1
+66.0 0 66 0 1
+67.0 0 134 0 2
+69.0 0 69 0 1
+70.0 0 210 0 3
+72.0 0 144 0 2
+74.0 0 74 0 1
+76.0 0 152 0 2
+77.0 0 77 0 1
+78.0 0 78 0 1
+80.0 0 80 0 1
+82.0 0 82 0 1
+83.0 0 166 0 2
+84.0 0 168 0 2
+85.0 0 85 0 1
+86.0 0 86 0 1
+87.0 0 87 0 1
+90.0 0 270 0 3
+92.0 0 92 0 1
+95.0 0 190 0 2
+96.0 0 96 0 1
+97.0 0 194 0 2
+98.0 0 196 0 2
+100.0 0 200 0 2
+103.0 0 206 0 2
+104.0 0 208 0 2
+105.0 0 105 0 1
+111.0 0 111 0 1
+113.0 0 226 0 2
+114.0 0 114 0 1
+116.0 0 116 0 1
+118.0 0 236 0 2
+119.0 0 357 0 3
+120.0 0 240 0 2
+125.0 0 250 0 2
+126.0 0 126 0 1
+128.0 0 384 0 3
+129.0 0 258 0 2
+131.0 0 131 0 1
+133.0 0 133 0 1
+134.0 0 268 0 2
+136.0 0 136 0 1
+137.0 0 274 0 2
+138.0 0 552 0 4
+143.0 0 143 0 1
+145.0 0 145 0 1
+146.0 0 292 0 2
+149.0 0 298 0 2
+150.0 0 150 0 1
+152.0 0 304 0 2
+153.0 0 153 0 1
+155.0 0 155 0 1
+156.0 0 156 0 1
+157.0 0 157 0 1
+158.0 0 158 0 1
+160.0 0 160 0 1
+162.0 0 162 0 1
+163.0 0 163 0 1
+164.0 0 328 0 2
+165.0 0 330 0 2
+166.0 0 166 0 1
+167.0 0 501 0 3
+168.0 0 168 0 1
+169.0 0 676 0 4
+170.0 0 170 0 1
+172.0 0 344 0 2
+174.0 0 348 0 2
+175.0 0 350 0 2
+176.0 0 352 0 2
+177.0 0 177 0 1
+178.0 0 178 0 1
+179.0 0 358 0 2
+180.0 0 180 0 1
+181.0 0 181 0 1
+183.0 0 183 0 1
+186.0 0 186 0 1
+187.0 0 561 0 3
+189.0 0 189 0 1
+190.0 0 190 0 1
+191.0 0 382 0 2
+192.0 0 192 0 1
+193.0 0 579 0 3
+194.0 0 194 0 1
+195.0 0 390 0 2
+196.0 0 196 0 1
+197.0 0 394 0 2
+199.0 0 597 0 3
+200.0 0 400 0 2
+201.0 0 201 0 1
+202.0 0 202 0 1
+203.0 0 406 0 2
+205.0 0 410 0 2
+207.0 0 414 0 2
+208.0 0 624 0 3
+209.0 0 418 0 2
+213.0 0 426 0 2
+214.0 0 214 0 1
+216.0 0 432 0 2
+217.0 0 434 0 2
+218.0 0 218 0 1
+219.0 0 438 0 2
+221.0 0 442 0 2
+222.0 0 222 0 1
+223.0 0 446 0 2
+224.0 0 448 0 2
+226.0 0 226 0 1
+228.0 0 228 0 1
+229.0 0 458 0 2
+230.0 0 1150 0 5
+233.0 0 466 0 2
+235.0 0 235 0 1
+237.0 0 474 0 2
+238.0 0 476 0 2
+239.0 0 478 0 2
+241.0 0 241 0 1
+242.0 0 484 0 2
+244.0 0 244 0 1
+247.0 0 247 0 1
+248.0 0 248 0 1
+249.0 0 249 0 1
+252.0 0 252 0 1
+255.0 0 510 0 2
+256.0 0 512 0 2
+257.0 0 257 0 1
+258.0 0 258 0 1
+260.0 0 260 0 1
+262.0 0 262 0 1
+263.0 0 263 0 1
+265.0 0 530 0 2
+266.0 0 266 0 1
+272.0 0 544 0 2
+273.0 0 819 0 3
+274.0 0 274 0 1
+275.0 0 275 0 1
+277.0 0 1108 0 4
+278.0 0 556 0 2
+280.0 0 560 0 2
+281.0 0 562 0 2
+282.0 0 564 0 2
+283.0 0 283 0 1
+284.0 0 284 0 1
+285.0 0 285 0 1
+286.0 0 286 0 1
+287.0 0 287 0 1
+288.0 0 576 0 2
+289.0 0 289 0 1
+291.0 0 291 0 1
+292.0 0 292 0 1
+296.0 0 296 0 1
+298.0 0 894 0 3
+302.0 0 302 0 1
+305.0 0 305 0 1
+306.0 0 306 0 1
+307.0 0 614 0 2
+308.0 0 308 0 1
+309.0 0 618 0 2
+310.0 0 310 0 1
+311.0 0 933 0 3
+315.0 0 315 0 1
+316.0 0 948 0 3
+317.0 0 634 0 2
+318.0 0 954 0 3
+321.0 0 642 0 2
+322.0 0 644 0 2
+323.0 0 323 0 1
+325.0 0 650 0 2
+327.0 0 981 0 3
+331.0 0 662 0 2
+332.0 0 332 0 1
+333.0 0 666 0 2
+335.0 0 335 0 1
+336.0 0 336 0 1
+338.0 0 338 0 1
+339.0 0 339 0 1
+341.0 0 341 0 1
+342.0 0 684 0 2
+344.0 0 688 0 2
+345.0 0 345 0 1
+348.0 0 1740 0 5
+351.0 0 351 0 1
+353.0 0 706 0 2
+356.0 0 356 0 1
+360.0 0 360 0 1
+362.0 0 362 0 1
+364.0 0 364 0 1
+365.0 0 365 0 1
+366.0 0 366 0 1
+367.0 0 734 0 2
+368.0 0 368 0 1
+369.0 0 1107 0 3
+373.0 0 373 0 1
+374.0 0 374 0 1
+375.0 0 375 0 1
+377.0 0 377 0 1
+378.0 0 378 0 1
+379.0 0 379 0 1
+382.0 0 764 0 2
+384.0 0 1152 0 3
+386.0 0 386 0 1
+389.0 0 389 0 1
+392.0 0 392 0 1
+393.0 0 393 0 1
+394.0 0 394 0 1
+395.0 0 790 0 2
+396.0 0 1188 0 3
+397.0 0 794 0 2
+399.0 0 798 0 2
+400.0 0 400 0 1
+401.0 0 2005 0 5
+402.0 0 402 0 1
+403.0 0 1209 0 3
+404.0 0 808 0 2
+406.0 0 1624 0 4
+407.0 0 407 0 1
+409.0 0 1227 0 3
+411.0 0 411 0 1
+413.0 0 826 0 2
+414.0 0 828 0 2
+417.0 0 1251 0 3
+418.0 0 418 0 1
+419.0 0 419 0 1
+421.0 0 421 0 1
+424.0 0 848 0 2
+427.0 0 427 0 1
+429.0 0 858 0 2
+430.0 0 1290 0 3
+431.0 0 1293 0 3
+432.0 0 432 0 1
+435.0 0 435 0 1
+436.0 0 436 0 1
+437.0 0 437 0 1
+438.0 0 1314 0 3
+439.0 0 878 0 2
+443.0 0 443 0 1
+444.0 0 444 0 1
+446.0 0 446 0 1
+448.0 0 448 0 1
+449.0 0 449 0 1
+452.0 0 452 0 1
+453.0 0 453 0 1
+454.0 0 1362 0 3
+455.0 0 455 0 1
+457.0 0 457 0 1
+458.0 0 916 0 2
+459.0 0 918 0 2
+460.0 0 460 0 1
+462.0 0 924 0 2
+463.0 0 926 0 2
+466.0 0 1398 0 3
+467.0 0 467 0 1
+468.0 0 1872 0 4
+469.0 0 2345 0 5
+470.0 0 470 0 1
+472.0 0 472 0 1
+475.0 0 475 0 1
+477.0 0 477 0 1
+478.0 0 956 0 2
+479.0 0 479 0 1
+480.0 0 1440 0 3
+481.0 0 481 0 1
+482.0 0 482 0 1
+483.0 0 483 0 1
+484.0 0 484 0 1
+485.0 0 485 0 1
+487.0 0 487 0 1
+489.0 0 1956 0 4
+490.0 0 490 0 1
+491.0 0 491 0 1
+492.0 0 984 0 2
+493.0 0 493 0 1
+494.0 0 494 0 1
+495.0 0 495 0 1
+496.0 0 496 0 1
+497.0 0 497 0 1
+498.0 0 1494 0 3
diff --git a/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-a393cfc24ad74f930f3284743254c10c b/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-a393cfc24ad74f930f3284743254c10c
new file mode 100644
index 0000000000..f23b45c32e
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-a393cfc24ad74f930f3284743254c10c
@@ -0,0 +1,309 @@
+0.0 0.0 0 0 0 3
+0.0 2.0 0 2 0 1
+0.0 4.0 0 4 0 1
+0.0 5.0 0 15 0 3
+0.0 8.0 0 8 0 1
+0.0 9.0 0 9 0 1
+0.0 10.0 0 10 0 1
+0.0 11.0 0 11 0 1
+0.0 12.0 0 24 0 2
+0.0 15.0 0 30 0 2
+0.0 17.0 0 17 0 1
+0.0 18.0 0 36 0 2
+0.0 19.0 0 19 0 1
+0.0 20.0 0 20 0 1
+0.0 24.0 0 48 0 2
+0.0 26.0 0 52 0 2
+0.0 27.0 0 27 0 1
+0.0 28.0 0 28 0 1
+0.0 30.0 0 30 0 1
+0.0 33.0 0 33 0 1
+0.0 34.0 0 34 0 1
+0.0 35.0 0 105 0 3
+0.0 37.0 0 74 0 2
+0.0 41.0 0 41 0 1
+0.0 42.0 0 84 0 2
+0.0 43.0 0 43 0 1
+0.0 44.0 0 44 0 1
+0.0 47.0 0 47 0 1
+0.0 51.0 0 102 0 2
+0.0 53.0 0 53 0 1
+0.0 54.0 0 54 0 1
+0.0 57.0 0 57 0 1
+0.0 58.0 0 116 0 2
+0.0 64.0 0 64 0 1
+0.0 65.0 0 65 0 1
+0.0 66.0 0 66 0 1
+0.0 67.0 0 134 0 2
+0.0 69.0 0 69 0 1
+0.0 70.0 0 210 0 3
+0.0 72.0 0 144 0 2
+0.0 74.0 0 74 0 1
+0.0 76.0 0 152 0 2
+0.0 77.0 0 77 0 1
+0.0 78.0 0 78 0 1
+0.0 80.0 0 80 0 1
+0.0 82.0 0 82 0 1
+0.0 83.0 0 166 0 2
+0.0 84.0 0 168 0 2
+0.0 85.0 0 85 0 1
+0.0 86.0 0 86 0 1
+0.0 87.0 0 87 0 1
+0.0 90.0 0 270 0 3
+0.0 92.0 0 92 0 1
+0.0 95.0 0 190 0 2
+0.0 96.0 0 96 0 1
+0.0 97.0 0 194 0 2
+0.0 98.0 0 196 0 2
+0.0 100.0 0 200 0 2
+0.0 103.0 0 206 0 2
+0.0 104.0 0 208 0 2
+0.0 105.0 0 105 0 1
+0.0 111.0 0 111 0 1
+0.0 113.0 0 226 0 2
+0.0 114.0 0 114 0 1
+0.0 116.0 0 116 0 1
+0.0 118.0 0 236 0 2
+0.0 119.0 0 357 0 3
+0.0 120.0 0 240 0 2
+0.0 125.0 0 250 0 2
+0.0 126.0 0 126 0 1
+0.0 128.0 0 384 0 3
+0.0 129.0 0 258 0 2
+0.0 131.0 0 131 0 1
+0.0 133.0 0 133 0 1
+0.0 134.0 0 268 0 2
+0.0 136.0 0 136 0 1
+0.0 137.0 0 274 0 2
+0.0 138.0 0 552 0 4
+0.0 143.0 0 143 0 1
+0.0 145.0 0 145 0 1
+0.0 146.0 0 292 0 2
+0.0 149.0 0 298 0 2
+0.0 150.0 0 150 0 1
+0.0 152.0 0 304 0 2
+0.0 153.0 0 153 0 1
+0.0 155.0 0 155 0 1
+0.0 156.0 0 156 0 1
+0.0 157.0 0 157 0 1
+0.0 158.0 0 158 0 1
+0.0 160.0 0 160 0 1
+0.0 162.0 0 162 0 1
+0.0 163.0 0 163 0 1
+0.0 164.0 0 328 0 2
+0.0 165.0 0 330 0 2
+0.0 166.0 0 166 0 1
+0.0 167.0 0 501 0 3
+0.0 168.0 0 168 0 1
+0.0 169.0 0 676 0 4
+0.0 170.0 0 170 0 1
+0.0 172.0 0 344 0 2
+0.0 174.0 0 348 0 2
+0.0 175.0 0 350 0 2
+0.0 176.0 0 352 0 2
+0.0 177.0 0 177 0 1
+0.0 178.0 0 178 0 1
+0.0 179.0 0 358 0 2
+0.0 180.0 0 180 0 1
+0.0 181.0 0 181 0 1
+0.0 183.0 0 183 0 1
+0.0 186.0 0 186 0 1
+0.0 187.0 0 561 0 3
+0.0 189.0 0 189 0 1
+0.0 190.0 0 190 0 1
+0.0 191.0 0 382 0 2
+0.0 192.0 0 192 0 1
+0.0 193.0 0 579 0 3
+0.0 194.0 0 194 0 1
+0.0 195.0 0 390 0 2
+0.0 196.0 0 196 0 1
+0.0 197.0 0 394 0 2
+0.0 199.0 0 597 0 3
+0.0 200.0 0 400 0 2
+0.0 201.0 0 201 0 1
+0.0 202.0 0 202 0 1
+0.0 203.0 0 406 0 2
+0.0 205.0 0 410 0 2
+0.0 207.0 0 414 0 2
+0.0 208.0 0 624 0 3
+0.0 209.0 0 418 0 2
+0.0 213.0 0 426 0 2
+0.0 214.0 0 214 0 1
+0.0 216.0 0 432 0 2
+0.0 217.0 0 434 0 2
+0.0 218.0 0 218 0 1
+0.0 219.0 0 438 0 2
+0.0 221.0 0 442 0 2
+0.0 222.0 0 222 0 1
+0.0 223.0 0 446 0 2
+0.0 224.0 0 448 0 2
+0.0 226.0 0 226 0 1
+0.0 228.0 0 228 0 1
+0.0 229.0 0 458 0 2
+0.0 230.0 0 1150 0 5
+0.0 233.0 0 466 0 2
+0.0 235.0 0 235 0 1
+0.0 237.0 0 474 0 2
+0.0 238.0 0 476 0 2
+0.0 239.0 0 478 0 2
+0.0 241.0 0 241 0 1
+0.0 242.0 0 484 0 2
+0.0 244.0 0 244 0 1
+0.0 247.0 0 247 0 1
+0.0 248.0 0 248 0 1
+0.0 249.0 0 249 0 1
+0.0 252.0 0 252 0 1
+0.0 255.0 0 510 0 2
+0.0 256.0 0 512 0 2
+0.0 257.0 0 257 0 1
+0.0 258.0 0 258 0 1
+0.0 260.0 0 260 0 1
+0.0 262.0 0 262 0 1
+0.0 263.0 0 263 0 1
+0.0 265.0 0 530 0 2
+0.0 266.0 0 266 0 1
+0.0 272.0 0 544 0 2
+0.0 273.0 0 819 0 3
+0.0 274.0 0 274 0 1
+0.0 275.0 0 275 0 1
+0.0 277.0 0 1108 0 4
+0.0 278.0 0 556 0 2
+0.0 280.0 0 560 0 2
+0.0 281.0 0 562 0 2
+0.0 282.0 0 564 0 2
+0.0 283.0 0 283 0 1
+0.0 284.0 0 284 0 1
+0.0 285.0 0 285 0 1
+0.0 286.0 0 286 0 1
+0.0 287.0 0 287 0 1
+0.0 288.0 0 576 0 2
+0.0 289.0 0 289 0 1
+0.0 291.0 0 291 0 1
+0.0 292.0 0 292 0 1
+0.0 296.0 0 296 0 1
+0.0 298.0 0 894 0 3
+0.0 302.0 0 302 0 1
+0.0 305.0 0 305 0 1
+0.0 306.0 0 306 0 1
+0.0 307.0 0 614 0 2
+0.0 308.0 0 308 0 1
+0.0 309.0 0 618 0 2
+0.0 310.0 0 310 0 1
+0.0 311.0 0 933 0 3
+0.0 315.0 0 315 0 1
+0.0 316.0 0 948 0 3
+0.0 317.0 0 634 0 2
+0.0 318.0 0 954 0 3
+0.0 321.0 0 642 0 2
+0.0 322.0 0 644 0 2
+0.0 323.0 0 323 0 1
+0.0 325.0 0 650 0 2
+0.0 327.0 0 981 0 3
+0.0 331.0 0 662 0 2
+0.0 332.0 0 332 0 1
+0.0 333.0 0 666 0 2
+0.0 335.0 0 335 0 1
+0.0 336.0 0 336 0 1
+0.0 338.0 0 338 0 1
+0.0 339.0 0 339 0 1
+0.0 341.0 0 341 0 1
+0.0 342.0 0 684 0 2
+0.0 344.0 0 688 0 2
+0.0 345.0 0 345 0 1
+0.0 348.0 0 1740 0 5
+0.0 351.0 0 351 0 1
+0.0 353.0 0 706 0 2
+0.0 356.0 0 356 0 1
+0.0 360.0 0 360 0 1
+0.0 362.0 0 362 0 1
+0.0 364.0 0 364 0 1
+0.0 365.0 0 365 0 1
+0.0 366.0 0 366 0 1
+0.0 367.0 0 734 0 2
+0.0 368.0 0 368 0 1
+0.0 369.0 0 1107 0 3
+0.0 373.0 0 373 0 1
+0.0 374.0 0 374 0 1
+0.0 375.0 0 375 0 1
+0.0 377.0 0 377 0 1
+0.0 378.0 0 378 0 1
+0.0 379.0 0 379 0 1
+0.0 382.0 0 764 0 2
+0.0 384.0 0 1152 0 3
+0.0 386.0 0 386 0 1
+0.0 389.0 0 389 0 1
+0.0 392.0 0 392 0 1
+0.0 393.0 0 393 0 1
+0.0 394.0 0 394 0 1
+0.0 395.0 0 790 0 2
+0.0 396.0 0 1188 0 3
+0.0 397.0 0 794 0 2
+0.0 399.0 0 798 0 2
+0.0 400.0 0 400 0 1
+0.0 401.0 0 2005 0 5
+0.0 402.0 0 402 0 1
+0.0 403.0 0 1209 0 3
+0.0 404.0 0 808 0 2
+0.0 406.0 0 1624 0 4
+0.0 407.0 0 407 0 1
+0.0 409.0 0 1227 0 3
+0.0 411.0 0 411 0 1
+0.0 413.0 0 826 0 2
+0.0 414.0 0 828 0 2
+0.0 417.0 0 1251 0 3
+0.0 418.0 0 418 0 1
+0.0 419.0 0 419 0 1
+0.0 421.0 0 421 0 1
+0.0 424.0 0 848 0 2
+0.0 427.0 0 427 0 1
+0.0 429.0 0 858 0 2
+0.0 430.0 0 1290 0 3
+0.0 431.0 0 1293 0 3
+0.0 432.0 0 432 0 1
+0.0 435.0 0 435 0 1
+0.0 436.0 0 436 0 1
+0.0 437.0 0 437 0 1
+0.0 438.0 0 1314 0 3
+0.0 439.0 0 878 0 2
+0.0 443.0 0 443 0 1
+0.0 444.0 0 444 0 1
+0.0 446.0 0 446 0 1
+0.0 448.0 0 448 0 1
+0.0 449.0 0 449 0 1
+0.0 452.0 0 452 0 1
+0.0 453.0 0 453 0 1
+0.0 454.0 0 1362 0 3
+0.0 455.0 0 455 0 1
+0.0 457.0 0 457 0 1
+0.0 458.0 0 916 0 2
+0.0 459.0 0 918 0 2
+0.0 460.0 0 460 0 1
+0.0 462.0 0 924 0 2
+0.0 463.0 0 926 0 2
+0.0 466.0 0 1398 0 3
+0.0 467.0 0 467 0 1
+0.0 468.0 0 1872 0 4
+0.0 469.0 0 2345 0 5
+0.0 470.0 0 470 0 1
+0.0 472.0 0 472 0 1
+0.0 475.0 0 475 0 1
+0.0 477.0 0 477 0 1
+0.0 478.0 0 956 0 2
+0.0 479.0 0 479 0 1
+0.0 480.0 0 1440 0 3
+0.0 481.0 0 481 0 1
+0.0 482.0 0 482 0 1
+0.0 483.0 0 483 0 1
+0.0 484.0 0 484 0 1
+0.0 485.0 0 485 0 1
+0.0 487.0 0 487 0 1
+0.0 489.0 0 1956 0 4
+0.0 490.0 0 490 0 1
+0.0 491.0 0 491 0 1
+0.0 492.0 0 984 0 2
+0.0 493.0 0 493 0 1
+0.0 494.0 0 494 0 1
+0.0 495.0 0 495 0 1
+0.0 496.0 0 496 0 1
+0.0 497.0 0 497 0 1
+0.0 498.0 0 1494 0 3
diff --git a/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-ae497f1556f548c1e2da9244397a985d b/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-ae497f1556f548c1e2da9244397a985d
new file mode 100644
index 0000000000..7839d714c2
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-ae497f1556f548c1e2da9244397a985d
@@ -0,0 +1,309 @@
+0 3
+0 1
+0 1
+0 3
+0 1
+0 1
+0 1
+0 1
+0 2
+0 2
+0 1
+0 2
+0 1
+0 1
+0 2
+0 2
+0 1
+0 1
+0 1
+0 1
+0 1
+0 3
+0 2
+0 1
+0 2
+0 1
+0 1
+0 1
+0 2
+0 1
+0 1
+0 1
+0 2
+0 1
+0 1
+0 1
+0 2
+0 1
+0 3
+0 2
+0 1
+0 2
+0 1
+0 1
+0 1
+0 1
+0 2
+0 2
+0 1
+0 1
+0 1
+0 3
+0 1
+0 2
+0 1
+0 2
+0 2
+0 2
+0 2
+0 2
+0 1
+0 1
+0 2
+0 1
+0 1
+0 2
+0 3
+0 2
+0 2
+0 1
+0 3
+0 2
+0 1
+0 1
+0 2
+0 1
+0 2
+0 4
+0 1
+0 1
+0 2
+0 2
+0 1
+0 2
+0 1
+0 1
+0 1
+0 1
+0 1
+0 1
+0 1
+0 1
+0 2
+0 2
+0 1
+0 3
+0 1
+0 4
+0 1
+0 2
+0 2
+0 2
+0 2
+0 1
+0 1
+0 2
+0 1
+0 1
+0 1
+0 1
+0 3
+0 1
+0 1
+0 2
+0 1
+0 3
+0 1
+0 2
+0 1
+0 2
+0 3
+0 2
+0 1
+0 1
+0 2
+0 2
+0 2
+0 3
+0 2
+0 2
+0 1
+0 2
+0 2
+0 1
+0 2
+0 2
+0 1
+0 2
+0 2
+0 1
+0 1
+0 2
+0 5
+0 2
+0 1
+0 2
+0 2
+0 2
+0 1
+0 2
+0 1
+0 1
+0 1
+0 1
+0 1
+0 2
+0 2
+0 1
+0 1
+0 1
+0 1
+0 1
+0 2
+0 1
+0 2
+0 3
+0 1
+0 1
+0 4
+0 2
+0 2
+0 2
+0 2
+0 1
+0 1
+0 1
+0 1
+0 1
+0 2
+0 1
+0 1
+0 1
+0 1
+0 3
+0 1
+0 1
+0 1
+0 2
+0 1
+0 2
+0 1
+0 3
+0 1
+0 3
+0 2
+0 3
+0 2
+0 2
+0 1
+0 2
+0 3
+0 2
+0 1
+0 2
+0 1
+0 1
+0 1
+0 1
+0 1
+0 2
+0 2
+0 1
+0 5
+0 1
+0 2
+0 1
+0 1
+0 1
+0 1
+0 1
+0 1
+0 2
+0 1
+0 3
+0 1
+0 1
+0 1
+0 1
+0 1
+0 1
+0 2
+0 3
+0 1
+0 1
+0 1
+0 1
+0 1
+0 2
+0 3
+0 2
+0 2
+0 1
+0 5
+0 1
+0 3
+0 2
+0 4
+0 1
+0 3
+0 1
+0 2
+0 2
+0 3
+0 1
+0 1
+0 1
+0 2
+0 1
+0 2
+0 3
+0 3
+0 1
+0 1
+0 1
+0 1
+0 3
+0 2
+0 1
+0 1
+0 1
+0 1
+0 1
+0 1
+0 1
+0 3
+0 1
+0 1
+0 2
+0 2
+0 1
+0 2
+0 2
+0 3
+0 1
+0 4
+0 5
+0 1
+0 1
+0 1
+0 1
+0 2
+0 1
+0 3
+0 1
+0 1
+0 1
+0 1
+0 1
+0 1
+0 4
+0 1
+0 1
+0 2
+0 1
+0 1
+0 1
+0 1
+0 1
+0 3
diff --git a/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-c60b6075da793b826db5eb4b08d7bab9 b/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-c60b6075da793b826db5eb4b08d7bab9
new file mode 100644
index 0000000000..cd6b14ac2a
--- /dev/null
+++ b/sql/hive/src/test/resources/golden/Constant Folding Optimization for AVG_SUM_COUNT-0-c60b6075da793b826db5eb4b08d7bab9
@@ -0,0 +1,309 @@
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 4
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 4
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 5
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 4
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 5
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 5
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 4
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 2
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 4
+0.0 0 0 5
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 3
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 4
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 2
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 1
+0.0 0 0 3
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
index d224d2ee60..87a92d8338 100644
--- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
+++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
@@ -33,6 +33,9 @@ class HiveQuerySuite extends HiveComparisonTest {
hiveql("FROM src SELECT key").collect()
}
+ createQueryTest("Constant Folding Optimization for AVG_SUM_COUNT",
+ "SELECT AVG(0), SUM(0), COUNT(null), COUNT(value) FROM src GROUP BY key")
+
createQueryTest("Simple Average",
"SELECT AVG(key) FROM src")