Index: CHANGES.txt =================================================================== --- CHANGES.txt (revision 740935) +++ CHANGES.txt (working copy) @@ -288,3 +288,5 @@ right outer join gave spurious rows in join. (Namit Jain via athusoo) HIVE-189. Make sampling tests deterministic by sorting output. (athusoo) + + HIVE-273. Fix avg UDAF which got broken hive 65. (athusoo) Index: ql/src/test/results/clientpositive/groupby3_map.q.out =================================================================== --- ql/src/test/results/clientpositive/groupby3_map.q.out (revision 740935) +++ ql/src/test/results/clientpositive/groupby3_map.q.out (working copy) @@ -53,7 +53,7 @@ expr: max(VALUE.1) expr: avg(DISTINCT UDFToDouble(KEY.0)) expr: min(VALUE.3) - expr: avg(UDFToDouble(VALUE.4)) + expr: avg(VALUE.4) mode: partial2 File Output Operator compressed: false @@ -65,7 +65,7 @@ Stage: Stage-2 Map Reduce Alias -> Map Operator Tree: - /data/users/athusoo/commits/hive_trunk_ws3/build/ql/tmp/1389629365/204290894.10001 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/153620472/510260835.10001 Reduce Output Operator sort order: tag: -1 @@ -85,9 +85,9 @@ aggregations: expr: sum(VALUE.0) expr: max(VALUE.1) - expr: avg(UDFToDouble(VALUE.2)) + expr: avg(VALUE.2) expr: min(VALUE.3) - expr: avg(UDFToDouble(VALUE.4)) + expr: avg(VALUE.4) mode: final Select Operator expressions: @@ -132,4 +132,4 @@ name: dest1 -130091.0 NULL NULL 98.0 98.0 +130091.0 260.182 256.10355987055016 98.0 98.0 Index: ql/src/test/results/clientpositive/udf3.q.out =================================================================== --- ql/src/test/results/clientpositive/udf3.q.out (revision 740935) +++ ql/src/test/results/clientpositive/udf3.q.out (working copy) @@ -40,7 +40,7 @@ Stage: Stage-2 Map Reduce Alias -> Map Operator Tree: - /data/users/athusoo/apacheprojects/hive_local_ws3/build/ql/tmp/68854306/763012378.10001 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/461551864/1010092958.10001 Reduce Output Operator sort order: tag: -1 @@ -59,7 +59,7 @@ Group By Operator aggregations: expr: max(VALUE.0) - expr: avg(UDFToDouble(VALUE.1)) + expr: avg(VALUE.1) expr: count(VALUE.2) expr: sum(VALUE.3) expr: min(VALUE.4) Index: ql/src/test/results/clientpositive/udf7.q.out =================================================================== --- ql/src/test/results/clientpositive/udf7.q.out (revision 0) +++ ql/src/test/results/clientpositive/udf7.q.out (revision 0) @@ -0,0 +1,77 @@ +ABSTRACT SYNTAX TREE: + (TOK_QUERY (TOK_FROM (TOK_TABREF dest1)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION avg (TOK_COLREF c1))) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_COLREF c1))) (TOK_SELEXPR (TOK_FUNCTION count (TOK_COLREF c1)))))) + +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-2 depends on stages: Stage-1 + Stage-0 is a root stage + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Alias -> Map Operator Tree: + dest1 + Reduce Output Operator + sort order: + Map-reduce partition columns: + expr: rand() + type: double + tag: -1 + value expressions: + expr: c1 + type: string + Reduce Operator Tree: + Group By Operator + aggregations: + expr: sum(UDFToDouble(VALUE.0)) + expr: count(VALUE.0) + expr: avg(UDFToDouble(VALUE.0)) + mode: partial1 + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.SequenceFileInputFormat + output format: org.apache.hadoop.mapred.SequenceFileOutputFormat + name: binary_table + + Stage: Stage-2 + Map Reduce + Alias -> Map Operator Tree: + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/181599227/280831237.10002 + Reduce Output Operator + sort order: + tag: -1 + value expressions: + expr: 0 + type: double + expr: 1 + type: bigint + expr: 2 + type: string + Reduce Operator Tree: + Group By Operator + aggregations: + expr: sum(VALUE.0) + expr: count(VALUE.1) + expr: avg(VALUE.2) + mode: final + Select Operator + expressions: + expr: 2 + type: double + expr: 0 + type: double + expr: 1 + type: bigint + File Output Operator + compressed: false + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat + + Stage: Stage-0 + Fetch Operator + limit: -1 + + +1.0 1.0 1 Index: ql/src/test/results/clientpositive/groupby3.q.out =================================================================== --- ql/src/test/results/clientpositive/groupby3.q.out (revision 740935) +++ ql/src/test/results/clientpositive/groupby3.q.out (working copy) @@ -43,7 +43,7 @@ Stage: Stage-2 Map Reduce Alias -> Map Operator Tree: - /data/users/athusoo/commits/hive_trunk_ws3/build/ql/tmp/1302296/900109453.10001 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/315128328/717538.10001 Reduce Output Operator sort order: tag: -1 @@ -63,9 +63,9 @@ aggregations: expr: sum(VALUE.0) expr: max(VALUE.1) - expr: avg(UDFToDouble(VALUE.2)) + expr: avg(VALUE.2) expr: min(VALUE.3) - expr: avg(UDFToDouble(VALUE.4)) + expr: avg(VALUE.4) mode: final Select Operator expressions: @@ -110,4 +110,4 @@ name: dest1 -130091.0 NULL NULL 98.0 98.0 +130091.0 260.182 256.10355987055016 98.0 98.0 Index: ql/src/test/results/compiler/plan/groupby1.q.xml =================================================================== --- ql/src/test/results/compiler/plan/groupby1.q.xml (revision 740935) +++ ql/src/test/results/compiler/plan/groupby1.q.xml (working copy) @@ -35,7 +35,7 @@ true - /data/users/zshao/sync/apache-trunk-HIVE-105/ql/../build/ql/tmp/361270251/169850988.10000.insclause-0 + /data/users/athusoo/commits/hive_trunk_ws2/ql/../build/ql/tmp/568109016/211707412.10000.insclause-0 @@ -84,7 +84,7 @@ location - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/dest1 + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/dest1 @@ -118,7 +118,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/361270251/169850988.10001 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/568109016/211707412.10001 @@ -242,7 +242,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/361270251/169850988.10001 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/568109016/211707412.10001 @@ -316,6 +316,13 @@ + + + + iterate + + + @@ -365,6 +372,13 @@ + + + + terminatePartial + + + @@ -677,10 +691,10 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/361270251/169850988.10001 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/568109016/211707412.10001 - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/361270251/169850988.10001 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/568109016/211707412.10001 @@ -689,7 +703,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/361270251/169850988.10001 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/568109016/211707412.10001 @@ -711,7 +725,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/ql/../build/ql/tmp/361270251/169850988.10000.insclause-0 + /data/users/athusoo/commits/hive_trunk_ws2/ql/../build/ql/tmp/568109016/211707412.10000.insclause-0 @@ -805,6 +819,13 @@ + + + + merge + + + @@ -830,6 +851,13 @@ + + + + terminate + + + @@ -923,7 +951,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src src @@ -935,7 +963,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src @@ -987,7 +1015,7 @@ location - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src Index: ql/src/test/results/compiler/plan/groupby2.q.xml =================================================================== --- ql/src/test/results/compiler/plan/groupby2.q.xml (revision 740935) +++ ql/src/test/results/compiler/plan/groupby2.q.xml (working copy) @@ -20,7 +20,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/187708922/156247810.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/622430055/9149509.10002 @@ -158,7 +158,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/187708922/156247810.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/622430055/9149509.10002 @@ -242,6 +242,16 @@ + + + + iterate + + + iterate + + + @@ -315,6 +325,16 @@ + + + + terminatePartial + + + terminatePartial + + + @@ -666,10 +686,10 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/187708922/156247810.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/622430055/9149509.10002 - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/187708922/156247810.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/622430055/9149509.10002 @@ -678,7 +698,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/187708922/156247810.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/622430055/9149509.10002 @@ -700,7 +720,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/ql/../build/ql/tmp/187708922/156247810.10001.insclause-0 + /data/users/athusoo/commits/hive_trunk_ws2/ql/../build/ql/tmp/622430055/9149509.10001.insclause-0 @@ -897,6 +917,16 @@ + + + + merge + + + merge + + + @@ -943,6 +973,16 @@ + + + + terminate + + + terminate + + + @@ -1046,7 +1086,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src src @@ -1058,7 +1098,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src @@ -1110,7 +1150,7 @@ location - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src Index: ql/src/test/results/compiler/plan/groupby3.q.xml =================================================================== --- ql/src/test/results/compiler/plan/groupby3.q.xml (revision 740935) +++ ql/src/test/results/compiler/plan/groupby3.q.xml (working copy) @@ -20,7 +20,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/6568832/173702865.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/362183700/102440280.10002 @@ -173,7 +173,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/6568832/173702865.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/362183700/102440280.10002 @@ -277,6 +277,25 @@ + + + + iterate + + + iterate + + + iterate + + + iterate + + + iterate + + + @@ -461,6 +480,25 @@ + + + + terminatePartial + + + terminatePartial + + + terminatePartial + + + terminatePartial + + + terminatePartial + + + @@ -802,10 +840,10 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/6568832/173702865.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/362183700/102440280.10002 - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/6568832/173702865.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/362183700/102440280.10002 @@ -814,7 +852,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/6568832/173702865.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/362183700/102440280.10002 @@ -836,7 +874,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/ql/../build/ql/tmp/1072875330.10001.insclause-0 + /data/users/athusoo/commits/hive_trunk_ws2/ql/../build/ql/tmp/343125472.10001.insclause-0 @@ -1012,6 +1050,25 @@ + + + + merge + + + merge + + + merge + + + merge + + + merge + + + @@ -1064,36 +1121,12 @@ - - - org.apache.hadoop.hive.ql.udf.UDFToDouble + + + VALUE.2 - - - evaluate - - - java.lang.String - - - - - - - - - - VALUE.2 - - - - - - - - - + @@ -1130,36 +1163,12 @@ - - - org.apache.hadoop.hive.ql.udf.UDFToDouble + + + VALUE.4 - - - evaluate - - - java.lang.String - - - - - - - - - - VALUE.4 - - - - - - - - - + @@ -1169,6 +1178,25 @@ + + + + terminate + + + terminate + + + terminate + + + terminate + + + terminate + + + @@ -1281,7 +1309,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src src @@ -1293,7 +1321,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src @@ -1345,7 +1373,7 @@ location - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src Index: ql/src/test/results/compiler/plan/groupby4.q.xml =================================================================== --- ql/src/test/results/compiler/plan/groupby4.q.xml (revision 740935) +++ ql/src/test/results/compiler/plan/groupby4.q.xml (working copy) @@ -20,7 +20,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/42922291/496011429.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/578183610/484947383.10002 @@ -129,7 +129,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/42922291/496011429.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/578183610/484947383.10002 @@ -193,9 +193,15 @@ + + + + + + @@ -545,10 +551,10 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/42922291/496011429.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/578183610/484947383.10002 - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/42922291/496011429.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/578183610/484947383.10002 @@ -557,7 +563,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/42922291/496011429.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/578183610/484947383.10002 @@ -579,7 +585,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/ql/../build/ql/tmp/731171602.10001.insclause-0 + /data/users/athusoo/commits/hive_trunk_ws2/ql/../build/ql/tmp/284773865.10001.insclause-0 @@ -675,9 +681,15 @@ + + + + + + @@ -761,7 +773,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src src @@ -773,7 +785,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src @@ -825,7 +837,7 @@ location - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src Index: ql/src/test/results/compiler/plan/groupby5.q.xml =================================================================== --- ql/src/test/results/compiler/plan/groupby5.q.xml (revision 740935) +++ ql/src/test/results/compiler/plan/groupby5.q.xml (working copy) @@ -20,7 +20,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/475879510/9101030.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/259144896/37104862.10002 @@ -144,7 +144,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/475879510/9101030.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/259144896/37104862.10002 @@ -218,6 +218,13 @@ + + + + iterate + + + @@ -267,6 +274,13 @@ + + + + terminatePartial + + + @@ -579,10 +593,10 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/475879510/9101030.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/259144896/37104862.10002 - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/475879510/9101030.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/259144896/37104862.10002 @@ -591,7 +605,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/475879510/9101030.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/259144896/37104862.10002 @@ -613,7 +627,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/ql/../build/ql/tmp/475879510/9101030.10001.insclause-0 + /data/users/athusoo/commits/hive_trunk_ws2/ql/../build/ql/tmp/259144896/37104862.10001.insclause-0 @@ -729,6 +743,13 @@ + + + + merge + + + @@ -754,6 +775,13 @@ + + + + terminate + + + @@ -847,7 +875,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src src @@ -859,7 +887,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src @@ -911,7 +939,7 @@ location - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src Index: ql/src/test/results/compiler/plan/groupby6.q.xml =================================================================== --- ql/src/test/results/compiler/plan/groupby6.q.xml (revision 740935) +++ ql/src/test/results/compiler/plan/groupby6.q.xml (working copy) @@ -20,7 +20,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/593011474/260610884.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/1903292308/734509258.10002 @@ -129,7 +129,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/593011474/260610884.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/1903292308/734509258.10002 @@ -193,9 +193,15 @@ + + + + + + @@ -545,10 +551,10 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/593011474/260610884.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/1903292308/734509258.10002 - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/593011474/260610884.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/1903292308/734509258.10002 @@ -557,7 +563,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/tmp/593011474/260610884.10002 + /data/users/athusoo/commits/hive_trunk_ws2/build/ql/tmp/1903292308/734509258.10002 @@ -579,7 +585,7 @@ - /data/users/zshao/sync/apache-trunk-HIVE-105/ql/../build/ql/tmp/14682144.10001.insclause-0 + /data/users/athusoo/commits/hive_trunk_ws2/ql/../build/ql/tmp/279156304.10001.insclause-0 @@ -675,9 +681,15 @@ + + + + + + @@ -761,7 +773,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src src @@ -773,7 +785,7 @@ - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src @@ -825,7 +837,7 @@ location - file:/data/users/zshao/sync/apache-trunk-HIVE-105/build/ql/test/data/warehouse/src + file:/data/users/athusoo/commits/hive_trunk_ws2/build/ql/test/data/warehouse/src Index: ql/src/test/queries/clientpositive/udf7.q =================================================================== --- ql/src/test/queries/clientpositive/udf7.q (revision 0) +++ ql/src/test/queries/clientpositive/udf7.q (revision 0) @@ -0,0 +1,10 @@ +CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT '' WHERE src.key = 86; + +FROM src INSERT OVERWRITE TABLE dest1 SELECT '1' WHERE src.key = 86; + +EXPLAIN +SELECT avg(c1), sum(c1), count(c1) FROM dest1; + +SELECT avg(c1), sum(c1), count(c1) FROM dest1; Index: ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java (revision 740935) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java (working copy) @@ -147,15 +147,11 @@ // aggregationsEvaluateMethods aggregationsAggregateMethods = new Method[aggregationClasses.length]; aggregationsEvaluateMethods = new Method[aggregationClasses.length]; - String evaluateMethodName = ((conf.getMode() == groupByDesc.Mode.PARTIAL1 || conf.getMode() == groupByDesc.Mode.HASH || - conf.getMode() == groupByDesc.Mode.PARTIAL2) - ? "terminatePartial" : "terminate"); for(int i=0; i keys; private java.util.ArrayList aggregators; + private java.util.ArrayList evalMethods; + private java.util.ArrayList aggMethods; public groupByDesc() { } public groupByDesc( final Mode mode, final java.util.ArrayList keys, - final java.util.ArrayList aggregators) { + final java.util.ArrayList aggregators, + final java.util.ArrayList evalMethods, + final java.util.ArrayList aggMethods) { this.mode = mode; this.keys = keys; this.aggregators = aggregators; + this.evalMethods = evalMethods; + this.aggMethods = aggMethods; } public Mode getMode() { return this.mode; @@ -79,4 +85,18 @@ public void setAggregators(final java.util.ArrayList aggregators) { this.aggregators = aggregators; } + + public java.util.ArrayList getEvalMethods() { + return this.evalMethods; + } + public void setEvalMethods(final java.util.ArrayList evalMethods) { + this.evalMethods = evalMethods; + } + + public java.util.ArrayList getAggMethods() { + return this.aggMethods; + } + public void setAggMethods(final java.util.ArrayList aggMethods) { + this.aggMethods = aggMethods; + } } Index: ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (revision 740935) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (working copy) @@ -1205,6 +1205,8 @@ ArrayList convertedParameters; Class retType; Class evalClass; + Method evalMethod; + Method aggMethod; } /** @@ -1229,32 +1231,37 @@ throw new SemanticException(ErrorMsg.INVALID_FUNCTION_SIGNATURE.getMsg((ASTNode)aggTree.getChild(0), reason)); } - Method aggregateMethod = null; + r.aggMethod = null; + String funcName = (((mode == groupByDesc.Mode.PARTIAL1) || (mode == groupByDesc.Mode.HASH)) ? "iterate" : "merge"); + if (aggTree.getToken().getType() == HiveParser.TOK_FUNCTIONDI && (mode != groupByDesc.Mode.FINAL)) + funcName = "iterate"; + for(Method m: r.evalClass.getMethods()) { - if (m.getName().equalsIgnoreCase("iterate")) { - aggregateMethod = m; + if (m.getName().equalsIgnoreCase(funcName)) { + r.aggMethod = m; } } - if (null == aggregateMethod) { + if (null == r.aggMethod) { String reason = "Looking for UDAF Evaluator Iterator\"" + aggName + "\" with parameters " + aggClasses; throw new SemanticException(ErrorMsg.INVALID_FUNCTION_SIGNATURE.getMsg((ASTNode)aggTree.getChild(0), reason)); } - r.convertedParameters = convertParameters(aggregateMethod, aggParameters); - - Method evaluateMethod = FunctionRegistry.getUDAFEvaluateMethod(aggName, mode); - String funcName = (mode == groupByDesc.Mode.COMPLETE || mode == groupByDesc.Mode.FINAL) ? "terminate" : "terminatePartial"; + r.convertedParameters = convertParameters(r.aggMethod, aggParameters); + + funcName = ((mode == groupByDesc.Mode.PARTIAL1 || mode == groupByDesc.Mode.HASH || + mode == groupByDesc.Mode.PARTIAL2) ? "terminatePartial" : "terminate"); + r.evalMethod = null; for(Method m: r.evalClass.getMethods()) { if (m.getName().equalsIgnoreCase(funcName)) { - evaluateMethod = m; + r.evalMethod = m; } } - if (evaluateMethod == null) { + if (r.evalMethod == null) { String reason = "UDAF \"" + aggName + "\" does not have terminate()/terminatePartial() methods."; throw new SemanticException(ErrorMsg.INVALID_FUNCTION.getMsg((ASTNode)aggTree.getChild(0), reason)); } - r.retType = evaluateMethod.getReturnType(); + r.retType = r.evalMethod.getReturnType(); return r; } @@ -1276,6 +1283,8 @@ groupByOutputRowResolver.setIsExprResolver(true); ArrayList groupByKeys = new ArrayList(); ArrayList aggregations = new ArrayList(); + ArrayList evalMethods = new ArrayList(); + ArrayList aggMethods = new ArrayList(); List grpByExprs = getGroupByForClause(parseInfo, dest); for (int i = 0; i < grpByExprs.size(); ++i) { ASTNode grpbyExpr = grpByExprs.get(i); @@ -1319,13 +1328,15 @@ aggregations.add(new aggregationDesc(udaf.evalClass, udaf.convertedParameters, value.getToken().getType() == HiveParser.TOK_FUNCTIONDI)); + evalMethods.add(udaf.evalMethod.getName()); + aggMethods.add(udaf.aggMethod.getName()); groupByOutputRowResolver.put("",value.toStringTree(), new ColumnInfo(Integer.valueOf(groupByKeys.size() + aggregations.size() -1).toString(), udaf.retType)); } return - putOpInsertMap(OperatorFactory.getAndMakeChild(new groupByDesc(mode, groupByKeys, aggregations), + putOpInsertMap(OperatorFactory.getAndMakeChild(new groupByDesc(mode, groupByKeys, aggregations, evalMethods, aggMethods), new RowSchema(groupByOutputRowResolver.getColumnInfos()), reduceSinkOperatorInfo), groupByOutputRowResolver @@ -1349,6 +1360,8 @@ groupByOutputRowResolver.setIsExprResolver(true); ArrayList groupByKeys = new ArrayList(); ArrayList aggregations = new ArrayList(); + ArrayList evalMethods = new ArrayList(); + ArrayList aggMethods = new ArrayList(); List grpByExprs = getGroupByForClause(parseInfo, dest); for (int i = 0; i < grpByExprs.size(); ++i) { ASTNode grpbyExpr = grpByExprs.get(i); @@ -1404,13 +1417,15 @@ UDAFInfo udaf = getUDAFInfo(aggName, mode, aggParameters, value); aggregations.add(new aggregationDesc(udaf.evalClass, udaf.convertedParameters, ((mode == groupByDesc.Mode.FINAL) ? false : (value.getToken().getType() == HiveParser.TOK_FUNCTIONDI)))); + evalMethods.add(udaf.evalMethod.getName()); + aggMethods.add(udaf.aggMethod.getName()); groupByOutputRowResolver.put("", value.toStringTree(), new ColumnInfo(Integer.valueOf(groupByKeys.size() + aggregations.size() - 1).toString(), udaf.retType)); } return putOpInsertMap( - OperatorFactory.getAndMakeChild(new groupByDesc(mode, groupByKeys, aggregations), + OperatorFactory.getAndMakeChild(new groupByDesc(mode, groupByKeys, aggregations, evalMethods, aggMethods), new RowSchema(groupByOutputRowResolver.getColumnInfos()), reduceSinkOperatorInfo), groupByOutputRowResolver); @@ -1433,6 +1448,8 @@ groupByOutputRowResolver.setIsExprResolver(true); ArrayList groupByKeys = new ArrayList(); ArrayList aggregations = new ArrayList(); + ArrayList evalMethods = new ArrayList(); + ArrayList aggMethods = new ArrayList(); List grpByExprs = getGroupByForClause(parseInfo, dest); for (int i = 0; i < grpByExprs.size(); ++i) { ASTNode grpbyExpr = grpByExprs.get(i); @@ -1486,13 +1503,15 @@ aggregations.add(new aggregationDesc(udaf.evalClass, udaf.convertedParameters, value.getToken().getType() == HiveParser.TOK_FUNCTIONDI)); + evalMethods.add(udaf.evalMethod.getName()); + aggMethods.add(udaf.aggMethod.getName()); groupByOutputRowResolver.put("",value.toStringTree(), new ColumnInfo(Integer.valueOf(groupByKeys.size() + aggregations.size() -1).toString(), udaf.retType)); } return putOpInsertMap( - OperatorFactory.getAndMakeChild(new groupByDesc(mode, groupByKeys, aggregations), + OperatorFactory.getAndMakeChild(new groupByDesc(mode, groupByKeys, aggregations, evalMethods, aggMethods), new RowSchema(groupByOutputRowResolver.getColumnInfos()), inputOperatorInfo), groupByOutputRowResolver); @@ -1777,6 +1796,8 @@ groupByOutputRowResolver2.setIsExprResolver(true); ArrayList groupByKeys = new ArrayList(); ArrayList aggregations = new ArrayList(); + ArrayList evalMethods = new ArrayList(); + ArrayList aggMethods = new ArrayList(); List grpByExprs = getGroupByForClause(parseInfo, dest); for (int i = 0; i < grpByExprs.size(); ++i) { ASTNode grpbyExpr = grpByExprs.get(i); @@ -1815,13 +1836,15 @@ UDAFInfo udaf = getUDAFInfo(aggName, mode, aggParameters, value); aggregations.add(new aggregationDesc(udaf.evalClass, udaf.convertedParameters, ((mode == groupByDesc.Mode.FINAL) ? false : (value.getToken().getType() == HiveParser.TOK_FUNCTIONDI)))); + evalMethods.add(udaf.evalMethod.getName()); + aggMethods.add(udaf.aggMethod.getName()); groupByOutputRowResolver2.put("", value.toStringTree(), new ColumnInfo(Integer.valueOf(groupByKeys.size() + aggregations.size() - 1).toString(), udaf.retType)); } return putOpInsertMap( - OperatorFactory.getAndMakeChild(new groupByDesc(mode, groupByKeys, aggregations), + OperatorFactory.getAndMakeChild(new groupByDesc(mode, groupByKeys, aggregations, evalMethods, aggMethods), new RowSchema(groupByOutputRowResolver2.getColumnInfos()), reduceSinkOperatorInfo2), groupByOutputRowResolver2