diff --git ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java index 70e0d5e..c825e13 100755 --- ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java +++ ql/src/java/org/apache/hadoop/hive/ql/udf/UDFSubstr.java @@ -26,15 +26,31 @@ public class UDFSubstr implements UDF { public UDFSubstr() { } - public String evaluate(String a, int start, int len) { - if (start >= a.length()) return ""; - if (start + len > a.length()) len = a.length() - start; - return a.substring(start, start + len); + public String evaluate(String s, Integer pos, Integer len) { + int start, end; + + if ((s == null) || (pos == null) || (len == null)) + return null; + if ((len <= 0) || (Math.abs(pos) > s.length())) + return ""; + + if (pos > 0) + start = pos - 1; + else if (pos < 0) + start = s.length() + pos; + else + start = 0; + + if ((s.length() - start) < len) + end = s.length(); + else + end = start + len; + + return s.substring(start, end); } - public String evaluate(String a, int start) { - if (start >= a.length()) return ""; - return a.substring(start); + public String evaluate(String s, Integer pos) { + return evaluate(s, pos, Integer.MAX_VALUE); } } diff --git ql/src/test/queries/clientpositive/groupby1.q ql/src/test/queries/clientpositive/groupby1.q index 2c65e4b..c735c6c 100755 --- ql/src/test/queries/clientpositive/groupby1.q +++ ql/src/test/queries/clientpositive/groupby1.q @@ -1,8 +1,8 @@ CREATE TABLE dest_g1(key INT, value DOUBLE) STORED AS TEXTFILE; EXPLAIN -FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key; +FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; -FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key; +FROM src INSERT OVERWRITE TABLE dest_g1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; SELECT dest_g1.* FROM dest_g1; diff --git ql/src/test/queries/clientpositive/groupby1_limit.q ql/src/test/queries/clientpositive/groupby1_limit.q index fa42c95..0c8e12a 100644 --- ql/src/test/queries/clientpositive/groupby1_limit.q +++ ql/src/test/queries/clientpositive/groupby1_limit.q @@ -3,8 +3,8 @@ set mapred.reduce.tasks=31; CREATE TABLE dest1(key INT, value DOUBLE) STORED AS TEXTFILE; EXPLAIN -FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key LIMIT 5; +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key LIMIT 5; -FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key LIMIT 5; +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key LIMIT 5; SELECT dest1.* FROM dest1; diff --git ql/src/test/queries/clientpositive/groupby1_map.q ql/src/test/queries/clientpositive/groupby1_map.q index 6ca1073..a7ce7af 100644 --- ql/src/test/queries/clientpositive/groupby1_map.q +++ ql/src/test/queries/clientpositive/groupby1_map.q @@ -3,8 +3,8 @@ set hive.map.aggr=true; CREATE TABLE dest1(key INT, value DOUBLE) STORED AS TEXTFILE; EXPLAIN -FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key; +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; -FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key; +FROM src INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key; SELECT dest1.* FROM dest1; diff --git ql/src/test/queries/clientpositive/groupby2.q ql/src/test/queries/clientpositive/groupby2.q index 90c9564..3feddd1 100755 --- ql/src/test/queries/clientpositive/groupby2.q +++ ql/src/test/queries/clientpositive/groupby2.q @@ -2,9 +2,9 @@ CREATE TABLE dest_g2(key STRING, c1 INT, c2 STRING) STORED AS TEXTFILE; EXPLAIN FROM src -INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,0,1), count(DISTINCT substr(src.value,4)), concat(substr(src.key,0,1),sum(substr(src.value,4))) GROUP BY substr(src.key,0,1); +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); FROM src -INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,0,1), count(DISTINCT substr(src.value,4)), concat(substr(src.key,0,1),sum(substr(src.value,4))) GROUP BY substr(src.key,0,1); +INSERT OVERWRITE TABLE dest_g2 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); SELECT dest_g2.* FROM dest_g2; diff --git ql/src/test/queries/clientpositive/groupby2_limit.q ql/src/test/queries/clientpositive/groupby2_limit.q index 7064438..4bc263c 100644 --- ql/src/test/queries/clientpositive/groupby2_limit.q +++ ql/src/test/queries/clientpositive/groupby2_limit.q @@ -1,7 +1,7 @@ set mapred.reduce.tasks=31; EXPLAIN -SELECT src.key, sum(substr(src.value,4)) FROM src GROUP BY src.key LIMIT 5; +SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key LIMIT 5; -SELECT src.key, sum(substr(src.value,4)) FROM src GROUP BY src.key LIMIT 5; +SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key LIMIT 5; diff --git ql/src/test/queries/clientpositive/groupby2_map.q ql/src/test/queries/clientpositive/groupby2_map.q index f818c81..e05f84b 100644 --- ql/src/test/queries/clientpositive/groupby2_map.q +++ ql/src/test/queries/clientpositive/groupby2_map.q @@ -4,9 +4,9 @@ CREATE TABLE dest1(key STRING, c1 INT, c2 STRING) STORED AS TEXTFILE; EXPLAIN FROM src -INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,0,1), count(DISTINCT substr(src.value,4)), concat(substr(src.key,0,1),sum(substr(src.value,4))) GROUP BY substr(src.key,0,1); +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); FROM src -INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,0,1), count(DISTINCT substr(src.value,4)), concat(substr(src.key,0,1),sum(substr(src.value,4))) GROUP BY substr(src.key,0,1); +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1); SELECT dest1.* FROM dest1; diff --git ql/src/test/queries/clientpositive/groupby3.q ql/src/test/queries/clientpositive/groupby3.q index 1cb4af6..af7cd06 100755 --- ql/src/test/queries/clientpositive/groupby3.q +++ ql/src/test/queries/clientpositive/groupby3.q @@ -2,9 +2,9 @@ CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE) STORED EXPLAIN FROM src -INSERT OVERWRITE TABLE dest1 SELECT sum(substr(src.value,4)), avg(substr(src.value,4)), avg(DISTINCT substr(src.value,4)), max(substr(src.value,4)), min(substr(src.value,4)); +INSERT OVERWRITE TABLE dest1 SELECT sum(substr(src.value,5)), avg(substr(src.value,5)), avg(DISTINCT substr(src.value,5)), max(substr(src.value,5)), min(substr(src.value,5)); FROM src -INSERT OVERWRITE TABLE dest1 SELECT sum(substr(src.value,4)), avg(substr(src.value,4)), avg(DISTINCT substr(src.value,4)), max(substr(src.value,4)), min(substr(src.value,4)); +INSERT OVERWRITE TABLE dest1 SELECT sum(substr(src.value,5)), avg(substr(src.value,5)), avg(DISTINCT substr(src.value,5)), max(substr(src.value,5)), min(substr(src.value,5)); SELECT dest1.* FROM dest1; diff --git ql/src/test/queries/clientpositive/groupby3_map.q ql/src/test/queries/clientpositive/groupby3_map.q index 746f6ab..943e103 100644 --- ql/src/test/queries/clientpositive/groupby3_map.q +++ ql/src/test/queries/clientpositive/groupby3_map.q @@ -4,9 +4,9 @@ CREATE TABLE dest1(c1 DOUBLE, c2 DOUBLE, c3 DOUBLE, c4 DOUBLE, c5 DOUBLE) STORED EXPLAIN FROM src -INSERT OVERWRITE TABLE dest1 SELECT sum(substr(src.value,4)), avg(substr(src.value,4)), avg(DISTINCT substr(src.value,4)), max(substr(src.value,4)), min(substr(src.value,4)); +INSERT OVERWRITE TABLE dest1 SELECT sum(substr(src.value,5)), avg(substr(src.value,5)), avg(DISTINCT substr(src.value,5)), max(substr(src.value,5)), min(substr(src.value,5)); FROM src -INSERT OVERWRITE TABLE dest1 SELECT sum(substr(src.value,4)), avg(substr(src.value,4)), avg(DISTINCT substr(src.value,4)), max(substr(src.value,4)), min(substr(src.value,4)); +INSERT OVERWRITE TABLE dest1 SELECT sum(substr(src.value,5)), avg(substr(src.value,5)), avg(DISTINCT substr(src.value,5)), max(substr(src.value,5)), min(substr(src.value,5)); SELECT dest1.* FROM dest1; diff --git ql/src/test/queries/clientpositive/groupby4.q ql/src/test/queries/clientpositive/groupby4.q index a6b224c..429d179 100755 --- ql/src/test/queries/clientpositive/groupby4.q +++ ql/src/test/queries/clientpositive/groupby4.q @@ -2,10 +2,10 @@ CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; EXPLAIN FROM src -INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,0,1) GROUP BY substr(src.key,0,1); +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1) GROUP BY substr(src.key,1,1); FROM src -INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,0,1) GROUP BY substr(src.key,0,1); +INSERT OVERWRITE TABLE dest1 SELECT substr(src.key,1,1) GROUP BY substr(src.key,1,1); SELECT dest1.* FROM dest1; diff --git ql/src/test/queries/clientpositive/groupby5.q ql/src/test/queries/clientpositive/groupby5.q index bf80d6a..e06974d 100755 --- ql/src/test/queries/clientpositive/groupby5.q +++ ql/src/test/queries/clientpositive/groupby5.q @@ -2,12 +2,12 @@ CREATE TABLE dest1(key INT, value STRING) STORED AS TEXTFILE; EXPLAIN INSERT OVERWRITE TABLE dest1 -SELECT src.key, sum(substr(src.value,4)) +SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key; INSERT OVERWRITE TABLE dest1 -SELECT src.key, sum(substr(src.value,4)) +SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key; diff --git ql/src/test/queries/clientpositive/groupby6.q ql/src/test/queries/clientpositive/groupby6.q index d0b310f..60f14b6 100755 --- ql/src/test/queries/clientpositive/groupby6.q +++ ql/src/test/queries/clientpositive/groupby6.q @@ -2,10 +2,10 @@ CREATE TABLE dest1(c1 STRING) STORED AS TEXTFILE; EXPLAIN FROM src -INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,4,1); +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); FROM src -INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,4,1); +INSERT OVERWRITE TABLE dest1 SELECT DISTINCT substr(src.value,5,1); SELECT dest1.* FROM dest1; diff --git ql/src/test/queries/clientpositive/groupby7.q ql/src/test/queries/clientpositive/groupby7.q index cad4dbd..c45e301 100644 --- ql/src/test/queries/clientpositive/groupby7.q +++ ql/src/test/queries/clientpositive/groupby7.q @@ -5,8 +5,8 @@ SET hive.exec.compress.intermediate=true; SET hive.exec.compress.output=true; FROM SRC -INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,4)) GROUP BY SRC.key -INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,4)) GROUP BY SRC.key; +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, sum(SUBSTR(SRC.value,5)) GROUP BY SRC.key; SELECT DEST1.* FROM DEST1; SELECT DEST2.* FROM DEST2; diff --git ql/src/test/queries/clientpositive/groupby8.q ql/src/test/queries/clientpositive/groupby8.q index 79249ed..f273bfd 100644 --- ql/src/test/queries/clientpositive/groupby8.q +++ ql/src/test/queries/clientpositive/groupby8.q @@ -2,8 +2,8 @@ CREATE TABLE DEST1(key INT, value STRING) STORED AS TEXTFILE; CREATE TABLE DEST2(key INT, value STRING) STORED AS TEXTFILE; FROM SRC -INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,4)) GROUP BY SRC.key -INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,4)) GROUP BY SRC.key; +INSERT OVERWRITE TABLE DEST1 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key +INSERT OVERWRITE TABLE DEST2 SELECT SRC.key, COUNT(DISTINCT SUBSTR(SRC.value,5)) GROUP BY SRC.key; SELECT DEST1.* FROM DEST1; SELECT DEST2.* FROM DEST2; diff --git ql/src/test/queries/clientpositive/udf_substr.q ql/src/test/queries/clientpositive/udf_substr.q new file mode 100644 index 0000000..4d93b31 --- /dev/null +++ ql/src/test/queries/clientpositive/udf_substr.q @@ -0,0 +1,37 @@ +SELECT + substr(null, 1), substr(null, 1, 1), + substr('ABC', null), substr('ABC', null, 1), + substr('ABC', 1, null) +FROM src LIMIT 1; + +SELECT + substr('ABC', 1, 0), substr('ABC', 1, -1), substr('ABC', 2, -100), + substr('ABC', 4), substr('ABC', 4, 100), + substr('ABC', -4), substr('ABC', -4, 100), + substr('ABC', 100), substr('ABC', 100, 100), + substr('ABC', -100), substr('ABC', -100, 100), + substr('ABC', 2147483647), substr('ABC', 2147483647, 2147483647) +FROM src LIMIT 1; + +SELECT + substr('ABCDEFG', 3, 4), substr('ABCDEFG', -5, 4), + substr('ABCDEFG', 3), substr('ABCDEFG', -5), + substr('ABC', 0), substr('ABC', 1), substr('ABC', 2), substr('ABC', 3), + substr('ABC', 1, 2147483647), substr('ABC', 2, 2147483647), + substr('A', 0), substr('A', 1), substr('A', -1) +FROM src LIMIT 1; + +SELECT + substr('ABC', 0, 1), substr('ABC', 0, 2), substr('ABC', 0, 3), substr('ABC', 0, 4), + substr('ABC', 1, 1), substr('ABC', 1, 2), substr('ABC', 1, 3), substr('ABC', 1, 4), + substr('ABC', 2, 1), substr('ABC', 2, 2), substr('ABC', 2, 3), substr('ABC', 2, 4), + substr('ABC', 3, 1), substr('ABC', 3, 2), substr('ABC', 3, 3), substr('ABC', 3, 4), + substr('ABC', 4, 1) +FROM src LIMIT 1; + +SELECT + substr('ABC', -1, 1), substr('ABC', -1, 2), substr('ABC', -1, 3), substr('ABC', -1, 4), + substr('ABC', -2, 1), substr('ABC', -2, 2), substr('ABC', -2, 3), substr('ABC', -2, 4), + substr('ABC', -3, 1), substr('ABC', -3, 2), substr('ABC', -3, 3), substr('ABC', -3, 4), + substr('ABC', -4, 1) +FROM src LIMIT 1; diff --git ql/src/test/queries/positive/groupby1.q ql/src/test/queries/positive/groupby1.q index de4ed5c..96b29b0 100755 --- ql/src/test/queries/positive/groupby1.q +++ ql/src/test/queries/positive/groupby1.q @@ -1,2 +1,2 @@ FROM src -INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,4)) GROUP BY src.key +INSERT OVERWRITE TABLE dest1 SELECT src.key, sum(substr(src.value,5)) GROUP BY src.key diff --git ql/src/test/queries/positive/groupby2.q ql/src/test/queries/positive/groupby2.q index d406438..d741eb6 100755 --- ql/src/test/queries/positive/groupby2.q +++ ql/src/test/queries/positive/groupby2.q @@ -1,2 +1,2 @@ FROM src -SELECT substr(src.key,0,1), count(DISTINCT substr(src.value,4)), concat(substr(src.key,0,1),sum(substr(src.value,4))) GROUP BY substr(src.key,0,1) +SELECT substr(src.key,1,1), count(DISTINCT substr(src.value,5)), concat(substr(src.key,1,1),sum(substr(src.value,5))) GROUP BY substr(src.key,1,1) diff --git ql/src/test/queries/positive/groupby3.q ql/src/test/queries/positive/groupby3.q index 29fe4a1..03b1248 100755 --- ql/src/test/queries/positive/groupby3.q +++ ql/src/test/queries/positive/groupby3.q @@ -1,2 +1,2 @@ FROM src -SELECT sum(substr(src.value,4)), avg(substr(src.value,4)), avg(DISTINCT substr(src.value,4)), max(substr(src.value,4)), min(substr(src.value,4)) +SELECT sum(substr(src.value,5)), avg(substr(src.value,5)), avg(DISTINCT substr(src.value,5)), max(substr(src.value,5)), min(substr(src.value,5)) diff --git ql/src/test/queries/positive/groupby4.q ql/src/test/queries/positive/groupby4.q index d421cb6..85271a9 100755 --- ql/src/test/queries/positive/groupby4.q +++ ql/src/test/queries/positive/groupby4.q @@ -1,2 +1,2 @@ FROM src -SELECT substr(src.key,0,1) GROUP BY substr(src.key,0,1) +SELECT substr(src.key,1,1) GROUP BY substr(src.key,1,1) diff --git ql/src/test/queries/positive/groupby5.q ql/src/test/queries/positive/groupby5.q index c20e4fa..ebd65b3 100755 --- ql/src/test/queries/positive/groupby5.q +++ ql/src/test/queries/positive/groupby5.q @@ -1,4 +1,4 @@ -SELECT src.key, sum(substr(src.value,4)) +SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key diff --git ql/src/test/queries/positive/groupby6.q ql/src/test/queries/positive/groupby6.q index c12f6a9..80654f2 100755 --- ql/src/test/queries/positive/groupby6.q +++ ql/src/test/queries/positive/groupby6.q @@ -1,2 +1,2 @@ FROM src -SELECT DISTINCT substr(src.value,4,1) +SELECT DISTINCT substr(src.value,5,1) diff --git ql/src/test/results/clientpositive/groupby1.q.out ql/src/test/results/clientpositive/groupby1.q.out index 33aaeca..e69e232 100644 --- ql/src/test/results/clientpositive/groupby1.q.out +++ ql/src/test/results/clientpositive/groupby1.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest_g1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4)))) (TOK_GROUPBY (TOK_COLREF src key)))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest_g1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5)))) (TOK_GROUPBY (TOK_COLREF src key)))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -21,7 +21,7 @@ STAGE PLANS: type: double tag: -1 value expressions: - expr: substr(value, 4) + expr: substr(value, 5) type: string Reduce Operator Tree: Group By Operator diff --git ql/src/test/results/clientpositive/groupby1_limit.q.out ql/src/test/results/clientpositive/groupby1_limit.q.out index 86dd788..27774ea 100644 --- ql/src/test/results/clientpositive/groupby1_limit.q.out +++ ql/src/test/results/clientpositive/groupby1_limit.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4)))) (TOK_GROUPBY (TOK_COLREF src key)) (TOK_LIMIT 5))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5)))) (TOK_GROUPBY (TOK_COLREF src key)) (TOK_LIMIT 5))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -22,7 +22,7 @@ STAGE PLANS: type: double tag: -1 value expressions: - expr: substr(value, 4) + expr: substr(value, 5) type: string Reduce Operator Tree: Group By Operator diff --git ql/src/test/results/clientpositive/groupby1_map.q.out ql/src/test/results/clientpositive/groupby1_map.q.out index a5babcd..049fe17 100644 --- ql/src/test/results/clientpositive/groupby1_map.q.out +++ ql/src/test/results/clientpositive/groupby1_map.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4)))) (TOK_GROUPBY (TOK_COLREF src key)))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5)))) (TOK_GROUPBY (TOK_COLREF src key)))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -13,7 +13,7 @@ STAGE PLANS: src Group By Operator aggregations: - expr: sum(UDFToDouble(substr(value, 4))) + expr: sum(UDFToDouble(substr(value, 5))) keys: expr: key type: string diff --git ql/src/test/results/clientpositive/groupby2.q.out ql/src/test/results/clientpositive/groupby2.q.out index f5d62dc..4adf0b7 100644 --- ql/src/test/results/clientpositive/groupby2.q.out +++ ql/src/test/results/clientpositive/groupby2.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest_g2)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 0 1)) (TOK_SELEXPR (TOK_FUNCTIONDI count (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION concat (TOK_FUNCTION substr (TOK_COLREF src key) 0 1) (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4))))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 0 1)))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest_g2)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 1 1)) (TOK_SELEXPR (TOK_FUNCTIONDI count (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION concat (TOK_FUNCTION substr (TOK_COLREF src key) 1 1) (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5))))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 1 1)))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -13,22 +13,22 @@ STAGE PLANS: src Reduce Output Operator key expressions: - expr: substr(key, 0, 1) + expr: substr(key, 1, 1) type: string - expr: substr(value, 4) + expr: substr(value, 5) type: string sort order: ++ Map-reduce partition columns: - expr: substr(key, 0, 1) + expr: substr(key, 1, 1) type: string - expr: substr(value, 4) + expr: substr(value, 5) type: string tag: -1 Reduce Operator Tree: Group By Operator aggregations: - expr: count(DISTINCT KEY.1) expr: sum(UDFToDouble(KEY.1)) + expr: count(DISTINCT KEY.1) keys: expr: KEY.0 type: string @@ -55,14 +55,14 @@ STAGE PLANS: tag: -1 value expressions: expr: 1 - type: bigint - expr: 2 type: double + expr: 2 + type: bigint Reduce Operator Tree: Group By Operator aggregations: - expr: count(VALUE.0) - expr: sum(VALUE.1) + expr: sum(VALUE.0) + expr: count(VALUE.1) keys: expr: KEY.0 type: string @@ -71,9 +71,9 @@ STAGE PLANS: expressions: expr: 0 type: string - expr: 1 + expr: 2 type: bigint - expr: concat(0, UDFToString(2)) + expr: concat(0, UDFToString(1)) type: string Select Operator expressions: diff --git ql/src/test/results/clientpositive/groupby2_limit.q.out ql/src/test/results/clientpositive/groupby2_limit.q.out index d02ce31..fb855cf 100644 --- ql/src/test/results/clientpositive/groupby2_limit.q.out +++ ql/src/test/results/clientpositive/groupby2_limit.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4)))) (TOK_GROUPBY (TOK_COLREF src key)) (TOK_LIMIT 5))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5)))) (TOK_GROUPBY (TOK_COLREF src key)) (TOK_LIMIT 5))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -21,7 +21,7 @@ STAGE PLANS: type: double tag: -1 value expressions: - expr: substr(value, 4) + expr: substr(value, 5) type: string Reduce Operator Tree: Group By Operator diff --git ql/src/test/results/clientpositive/groupby2_map.q.out ql/src/test/results/clientpositive/groupby2_map.q.out index df42def..4807056 100644 --- ql/src/test/results/clientpositive/groupby2_map.q.out +++ ql/src/test/results/clientpositive/groupby2_map.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 0 1)) (TOK_SELEXPR (TOK_FUNCTIONDI count (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION concat (TOK_FUNCTION substr (TOK_COLREF src key) 0 1) (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4))))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 0 1)))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 1 1)) (TOK_SELEXPR (TOK_FUNCTIONDI count (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION concat (TOK_FUNCTION substr (TOK_COLREF src key) 1 1) (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5))))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 1 1)))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -13,12 +13,12 @@ STAGE PLANS: src Group By Operator aggregations: - expr: count(DISTINCT substr(value, 4)) - expr: sum(UDFToDouble(substr(value, 4))) + expr: sum(UDFToDouble(substr(value, 5))) + expr: count(DISTINCT substr(value, 5)) keys: - expr: substr(key, 0, 1) + expr: substr(key, 1, 1) type: string - expr: substr(value, 4) + expr: substr(value, 5) type: string mode: hash Reduce Output Operator @@ -36,14 +36,14 @@ STAGE PLANS: tag: -1 value expressions: expr: 2 - type: bigint - expr: 3 type: double + expr: 3 + type: bigint Reduce Operator Tree: Group By Operator aggregations: expr: count(DISTINCT KEY.1) - expr: sum(VALUE.1) + expr: sum(VALUE.0) keys: expr: KEY.0 type: string @@ -70,14 +70,14 @@ STAGE PLANS: tag: -1 value expressions: expr: 1 - type: bigint - expr: 2 type: double + expr: 2 + type: bigint Reduce Operator Tree: Group By Operator aggregations: - expr: count(VALUE.0) - expr: sum(VALUE.1) + expr: sum(VALUE.0) + expr: count(VALUE.1) keys: expr: KEY.0 type: string @@ -86,9 +86,9 @@ STAGE PLANS: expressions: expr: 0 type: string - expr: 1 + expr: 2 type: bigint - expr: concat(0, UDFToString(2)) + expr: concat(0, UDFToString(1)) type: string Select Operator expressions: diff --git ql/src/test/results/clientpositive/groupby3.q.out ql/src/test/results/clientpositive/groupby3.q.out index 182f773..a9e4519 100644 --- ql/src/test/results/clientpositive/groupby3.q.out +++ ql/src/test/results/clientpositive/groupby3.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION avg (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTIONDI avg (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION max (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION min (TOK_FUNCTION substr (TOK_COLREF src value) 4)))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION avg (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTIONDI avg (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION max (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION min (TOK_FUNCTION substr (TOK_COLREF src value) 5)))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -17,21 +17,21 @@ STAGE PLANS: type: string Reduce Output Operator key expressions: - expr: substr(0, 4) + expr: substr(0, 5) type: string sort order: + Map-reduce partition columns: - expr: substr(0, 4) + expr: substr(0, 5) type: string tag: -1 Reduce Operator Tree: Group By Operator aggregations: - expr: avg(DISTINCT UDFToDouble(KEY.0)) expr: sum(UDFToDouble(KEY.0)) - expr: avg(UDFToDouble(KEY.0)) - expr: min(UDFToDouble(KEY.0)) expr: max(UDFToDouble(KEY.0)) + expr: avg(DISTINCT UDFToDouble(KEY.0)) + expr: min(UDFToDouble(KEY.0)) + expr: avg(UDFToDouble(KEY.0)) mode: partial1 File Output Operator compressed: false @@ -49,7 +49,7 @@ STAGE PLANS: tag: -1 value expressions: expr: 0 - type: string + type: double expr: 1 type: double expr: 2 @@ -57,26 +57,26 @@ STAGE PLANS: expr: 3 type: double expr: 4 - type: double + type: string Reduce Operator Tree: Group By Operator aggregations: - expr: avg(VALUE.0) - expr: sum(VALUE.1) + expr: sum(VALUE.0) + expr: max(VALUE.1) expr: avg(VALUE.2) expr: min(VALUE.3) - expr: max(VALUE.4) + expr: avg(VALUE.4) mode: final Select Operator expressions: - expr: 1 - type: double - expr: 2 - type: double expr: 0 type: double expr: 4 type: double + expr: 2 + type: double + expr: 1 + type: double expr: 3 type: double File Output Operator diff --git ql/src/test/results/clientpositive/groupby3_map.q.out ql/src/test/results/clientpositive/groupby3_map.q.out index e2b007a..f67488c 100644 --- ql/src/test/results/clientpositive/groupby3_map.q.out +++ ql/src/test/results/clientpositive/groupby3_map.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION avg (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTIONDI avg (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION max (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION min (TOK_FUNCTION substr (TOK_COLREF src value) 4)))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION avg (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTIONDI avg (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION max (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION min (TOK_FUNCTION substr (TOK_COLREF src value) 5)))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -17,13 +17,13 @@ STAGE PLANS: type: string Group By Operator aggregations: - expr: avg(DISTINCT UDFToDouble(substr(0, 4))) - expr: sum(UDFToDouble(substr(0, 4))) - expr: avg(UDFToDouble(substr(0, 4))) - expr: min(UDFToDouble(substr(0, 4))) - expr: max(UDFToDouble(substr(0, 4))) + expr: sum(UDFToDouble(substr(0, 5))) + expr: max(UDFToDouble(substr(0, 5))) + expr: avg(DISTINCT UDFToDouble(substr(0, 5))) + expr: min(UDFToDouble(substr(0, 5))) + expr: avg(UDFToDouble(substr(0, 5))) keys: - expr: substr(0, 4) + expr: substr(0, 5) type: string mode: hash Reduce Output Operator @@ -37,7 +37,7 @@ STAGE PLANS: tag: -1 value expressions: expr: 1 - type: string + type: double expr: 2 type: double expr: 3 @@ -45,15 +45,15 @@ STAGE PLANS: expr: 4 type: double expr: 5 - type: double + type: string Reduce Operator Tree: Group By Operator aggregations: expr: avg(DISTINCT UDFToDouble(KEY.0)) - expr: sum(VALUE.1) - expr: avg(VALUE.2) + expr: sum(VALUE.0) + expr: max(VALUE.1) expr: min(VALUE.3) - expr: max(VALUE.4) + expr: avg(VALUE.4) mode: partial2 File Output Operator compressed: false @@ -71,7 +71,7 @@ STAGE PLANS: tag: -1 value expressions: expr: 0 - type: string + type: double expr: 1 type: double expr: 2 @@ -79,26 +79,26 @@ STAGE PLANS: expr: 3 type: double expr: 4 - type: double + type: string Reduce Operator Tree: Group By Operator aggregations: - expr: avg(VALUE.0) - expr: sum(VALUE.1) + expr: sum(VALUE.0) + expr: max(VALUE.1) expr: avg(VALUE.2) expr: min(VALUE.3) - expr: max(VALUE.4) + expr: avg(VALUE.4) mode: final Select Operator expressions: - expr: 1 - type: double - expr: 2 - type: double expr: 0 type: double expr: 4 type: double + expr: 2 + type: double + expr: 1 + type: double expr: 3 type: double File Output Operator diff --git ql/src/test/results/clientpositive/groupby4.q.out ql/src/test/results/clientpositive/groupby4.q.out index 163786d..1e31fa1 100644 --- ql/src/test/results/clientpositive/groupby4.q.out +++ ql/src/test/results/clientpositive/groupby4.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 0 1))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 0 1)))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 1 1))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 1 1)))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -17,7 +17,7 @@ STAGE PLANS: type: string Reduce Output Operator key expressions: - expr: substr(0, 0, 1) + expr: substr(0, 1, 1) type: string sort order: + Map-reduce partition columns: diff --git ql/src/test/results/clientpositive/groupby5.q.out ql/src/test/results/clientpositive/groupby5.q.out index 0ef8c99..34ff031 100644 --- ql/src/test/results/clientpositive/groupby5.q.out +++ ql/src/test/results/clientpositive/groupby5.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4)))) (TOK_GROUPBY (TOK_COLREF src key)))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5)))) (TOK_GROUPBY (TOK_COLREF src key)))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -21,7 +21,7 @@ STAGE PLANS: type: double tag: -1 value expressions: - expr: substr(value, 4) + expr: substr(value, 5) type: string Reduce Operator Tree: Group By Operator diff --git ql/src/test/results/clientpositive/groupby6.q.out ql/src/test/results/clientpositive/groupby6.q.out index 7521396..6e58a33 100644 --- ql/src/test/results/clientpositive/groupby6.q.out +++ ql/src/test/results/clientpositive/groupby6.q.out @@ -1,5 +1,5 @@ ABSTRACT SYNTAX TREE: - (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECTDI (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src value) 4 1))))) + (TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECTDI (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src value) 5 1))))) STAGE DEPENDENCIES: Stage-1 is a root stage @@ -17,7 +17,7 @@ STAGE PLANS: type: string Reduce Output Operator key expressions: - expr: substr(0, 4, 1) + expr: substr(0, 5, 1) type: string sort order: + Map-reduce partition columns: diff --git ql/src/test/results/clientpositive/udf_substr.q.out ql/src/test/results/clientpositive/udf_substr.q.out new file mode 100644 index 0000000..6a9ce0d --- /dev/null +++ ql/src/test/results/clientpositive/udf_substr.q.out @@ -0,0 +1,5 @@ +NULL NULL NULL NULL NULL + +CDEF CDEF CDEFG CDEFG ABC ABC BC C ABC BC A A A +A AB ABC ABC A AB ABC ABC B BC BC BC C C C C +C C C C B BC BC BC A AB ABC ABC diff --git ql/src/test/results/compiler/parse/groupby1.q.out ql/src/test/results/compiler/parse/groupby1.q.out index cf6d263..90497c3 100755 --- ql/src/test/results/compiler/parse/groupby1.q.out +++ ql/src/test/results/compiler/parse/groupby1.q.out @@ -1 +1 @@ -(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4)))) (TOK_GROUPBY (TOK_COLREF src key)))) null \ No newline at end of file +(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_TAB dest1)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5)))) (TOK_GROUPBY (TOK_COLREF src key)))) null \ No newline at end of file diff --git ql/src/test/results/compiler/parse/groupby2.q.out ql/src/test/results/compiler/parse/groupby2.q.out index 286b362..79b69fa 100755 --- ql/src/test/results/compiler/parse/groupby2.q.out +++ ql/src/test/results/compiler/parse/groupby2.q.out @@ -1 +1 @@ -(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 0 1)) (TOK_SELEXPR (TOK_FUNCTIONDI count (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION concat (TOK_FUNCTION substr (TOK_COLREF src key) 0 1) (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4))))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 0 1)))) null \ No newline at end of file +(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 1 1)) (TOK_SELEXPR (TOK_FUNCTIONDI count (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION concat (TOK_FUNCTION substr (TOK_COLREF src key) 1 1) (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5))))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 1 1)))) null \ No newline at end of file diff --git ql/src/test/results/compiler/parse/groupby3.q.out ql/src/test/results/compiler/parse/groupby3.q.out index a7d0fda..80be30e 100644 --- ql/src/test/results/compiler/parse/groupby3.q.out +++ ql/src/test/results/compiler/parse/groupby3.q.out @@ -1 +1 @@ -(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION avg (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTIONDI avg (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION max (TOK_FUNCTION substr (TOK_COLREF src value) 4))) (TOK_SELEXPR (TOK_FUNCTION min (TOK_FUNCTION substr (TOK_COLREF src value) 4)))))) null \ No newline at end of file +(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION avg (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTIONDI avg (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION max (TOK_FUNCTION substr (TOK_COLREF src value) 5))) (TOK_SELEXPR (TOK_FUNCTION min (TOK_FUNCTION substr (TOK_COLREF src value) 5)))))) null \ No newline at end of file diff --git ql/src/test/results/compiler/parse/groupby4.q.out ql/src/test/results/compiler/parse/groupby4.q.out index 94bd83e..7db163d 100644 --- ql/src/test/results/compiler/parse/groupby4.q.out +++ ql/src/test/results/compiler/parse/groupby4.q.out @@ -1 +1 @@ -(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 0 1))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 0 1)))) null \ No newline at end of file +(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src key) 1 1))) (TOK_GROUPBY (TOK_FUNCTION substr (TOK_COLREF src key) 1 1)))) null \ No newline at end of file diff --git ql/src/test/results/compiler/parse/groupby5.q.out ql/src/test/results/compiler/parse/groupby5.q.out index 261cf76..a18f5d5 100644 --- ql/src/test/results/compiler/parse/groupby5.q.out +++ ql/src/test/results/compiler/parse/groupby5.q.out @@ -1 +1 @@ -(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 4)))) (TOK_GROUPBY (TOK_COLREF src key)))) null \ No newline at end of file +(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_COLREF src key)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_FUNCTION substr (TOK_COLREF src value) 5)))) (TOK_GROUPBY (TOK_COLREF src key)))) null \ No newline at end of file diff --git ql/src/test/results/compiler/parse/groupby6.q.out ql/src/test/results/compiler/parse/groupby6.q.out index 31e94d1..28b761d 100644 --- ql/src/test/results/compiler/parse/groupby6.q.out +++ ql/src/test/results/compiler/parse/groupby6.q.out @@ -1 +1 @@ -(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECTDI (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src value) 4 1))))) null \ No newline at end of file +(TOK_QUERY (TOK_FROM (TOK_TABREF src)) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECTDI (TOK_SELEXPR (TOK_FUNCTION substr (TOK_COLREF src value) 5 1))))) null \ No newline at end of file diff --git ql/src/test/results/compiler/plan/groupby1.q.xml ql/src/test/results/compiler/plan/groupby1.q.xml index e9031aa..861dcab 100755 --- ql/src/test/results/compiler/plan/groupby1.q.xml +++ ql/src/test/results/compiler/plan/groupby1.q.xml @@ -486,7 +486,7 @@ java.lang.String - int + java.lang.Integer @@ -513,7 +513,7 @@ - 4 + 5 diff --git ql/src/test/results/compiler/plan/groupby2.q.xml ql/src/test/results/compiler/plan/groupby2.q.xml index d26597a..9a570b0 100755 --- ql/src/test/results/compiler/plan/groupby2.q.xml +++ ql/src/test/results/compiler/plan/groupby2.q.xml @@ -97,7 +97,7 @@ - java.lang.Long + java.lang.Double @@ -111,7 +111,7 @@ - java.lang.Double + java.lang.Long @@ -138,7 +138,7 @@ serialization.ddl - struct binary_table { i64 reducesinkvalue0, double reducesinkvalue1} + struct binary_table { double reducesinkvalue0, i64 reducesinkvalue1} serialization.format @@ -182,7 +182,7 @@ serialization.ddl - struct binary_table { string temporarycol0, i64 temporarycol1, double temporarycol2} + struct binary_table { string temporarycol0, double temporarycol1, i64 temporarycol2} serialization.format @@ -250,30 +250,6 @@ - org.apache.hadoop.hive.ql.udf.UDAFCount - - - true - - - - - - - KEY.1 - - - - - - - - - - - - - org.apache.hadoop.hive.ql.udf.UDAFSum @@ -308,7 +284,31 @@ - + + + + + + + + + + + + org.apache.hadoop.hive.ql.udf.UDAFCount + + + true + + + + + + + KEY.1 + + + @@ -360,10 +360,10 @@ java.lang.String - int + java.lang.Integer - int + java.lang.Integer @@ -390,7 +390,7 @@ - 0 + 1 @@ -424,7 +424,7 @@ java.lang.String - int + java.lang.Integer @@ -447,7 +447,7 @@ - 4 + 5 @@ -759,7 +759,7 @@ 1 - + @@ -798,10 +798,10 @@ - 1 + 2 - + @@ -855,10 +855,10 @@ - 2 + 1 - + @@ -905,7 +905,7 @@ - org.apache.hadoop.hive.ql.udf.UDAFCount + org.apache.hadoop.hive.ql.udf.UDAFSum @@ -926,7 +926,7 @@ - org.apache.hadoop.hive.ql.udf.UDAFSum + org.apache.hadoop.hive.ql.udf.UDAFCount diff --git ql/src/test/results/compiler/plan/groupby3.q.xml ql/src/test/results/compiler/plan/groupby3.q.xml index 4ec6eea..8c5599c 100644 --- ql/src/test/results/compiler/plan/groupby3.q.xml +++ ql/src/test/results/compiler/plan/groupby3.q.xml @@ -82,7 +82,7 @@ - java.lang.String + java.lang.Double @@ -94,11 +94,7 @@ 1 - - - java.lang.Double - - + @@ -108,7 +104,11 @@ 2 - + + + java.lang.String + + @@ -118,7 +118,7 @@ 3 - + @@ -153,7 +153,7 @@ serialization.ddl - struct binary_table { string reducesinkvalue0, double reducesinkvalue1, string reducesinkvalue2, double reducesinkvalue3, double reducesinkvalue4} + struct binary_table { double reducesinkvalue0, double reducesinkvalue1, string reducesinkvalue2, double reducesinkvalue3, string reducesinkvalue4} serialization.format @@ -197,7 +197,7 @@ serialization.ddl - struct binary_table { string temporarycol0, double temporarycol1, string temporarycol2, double temporarycol3, double temporarycol4} + struct binary_table { double temporarycol0, double temporarycol1, string temporarycol2, double temporarycol3, string temporarycol4} serialization.format @@ -236,7 +236,7 @@ 1 - + @@ -246,7 +246,7 @@ 2 - + @@ -256,7 +256,7 @@ 3 - + @@ -285,10 +285,7 @@ - org.apache.hadoop.hive.ql.udf.UDAFAvg - - - true + org.apache.hadoop.hive.ql.udf.UDAFSum @@ -315,14 +312,14 @@ KEY.0 - + - + @@ -333,7 +330,7 @@ - org.apache.hadoop.hive.ql.udf.UDAFSum + org.apache.hadoop.hive.ql.udf.UDAFMax @@ -360,14 +357,14 @@ KEY.0 - + - + @@ -380,6 +377,9 @@ org.apache.hadoop.hive.ql.udf.UDAFAvg + + true + @@ -405,14 +405,14 @@ KEY.0 - + - + @@ -450,14 +450,14 @@ KEY.0 - + - + @@ -468,7 +468,7 @@ - org.apache.hadoop.hive.ql.udf.UDAFMax + org.apache.hadoop.hive.ql.udf.UDAFAvg @@ -495,14 +495,14 @@ KEY.0 - + - + @@ -543,7 +543,7 @@ java.lang.String - int + java.lang.Integer @@ -556,7 +556,7 @@ 0 - + @@ -570,14 +570,14 @@ - 4 + 5 - + @@ -680,7 +680,7 @@ value - + @@ -709,7 +709,7 @@ key - + @@ -719,7 +719,7 @@ value - + @@ -741,7 +741,7 @@ 0 - + @@ -763,7 +763,7 @@ KEY.0 - + @@ -802,7 +802,7 @@ VALUE.1 - + @@ -812,7 +812,7 @@ VALUE.2 - + @@ -822,7 +822,7 @@ VALUE.3 - + @@ -933,7 +933,7 @@ 0 - + @@ -943,7 +943,7 @@ 1 - + @@ -953,7 +953,7 @@ 2 - + @@ -963,7 +963,7 @@ 3 - + @@ -973,7 +973,7 @@ 4 - + @@ -992,40 +992,40 @@ - 1 + 0 - + - 2 + 4 - + - 0 + 2 - + - 4 + 1 - + @@ -1035,7 +1035,7 @@ 3 - + @@ -1068,7 +1068,7 @@ - org.apache.hadoop.hive.ql.udf.UDAFAvg + org.apache.hadoop.hive.ql.udf.UDAFSum @@ -1089,7 +1089,7 @@ - org.apache.hadoop.hive.ql.udf.UDAFSum + org.apache.hadoop.hive.ql.udf.UDAFMax @@ -1099,7 +1099,7 @@ VALUE.1 - + @@ -1120,7 +1120,7 @@ VALUE.2 - + @@ -1141,7 +1141,7 @@ VALUE.3 - + @@ -1152,7 +1152,7 @@ - org.apache.hadoop.hive.ql.udf.UDAFMax + org.apache.hadoop.hive.ql.udf.UDAFAvg @@ -1199,7 +1199,7 @@ 0 - + @@ -1209,7 +1209,7 @@ 1 - + @@ -1219,7 +1219,7 @@ 2 - + @@ -1229,7 +1229,7 @@ 3 - + @@ -1239,7 +1239,7 @@ 4 - + diff --git ql/src/test/results/compiler/plan/groupby4.q.xml ql/src/test/results/compiler/plan/groupby4.q.xml index 0658907..fb88b77 100644 --- ql/src/test/results/compiler/plan/groupby4.q.xml +++ ql/src/test/results/compiler/plan/groupby4.q.xml @@ -241,10 +241,10 @@ java.lang.String - int + java.lang.Integer - int + java.lang.Integer @@ -271,7 +271,7 @@ - 0 + 1 diff --git ql/src/test/results/compiler/plan/groupby5.q.xml ql/src/test/results/compiler/plan/groupby5.q.xml index aee72ca..d14d182 100644 --- ql/src/test/results/compiler/plan/groupby5.q.xml +++ ql/src/test/results/compiler/plan/groupby5.q.xml @@ -388,7 +388,7 @@ java.lang.String - int + java.lang.Integer @@ -415,7 +415,7 @@ - 4 + 5 diff --git ql/src/test/results/compiler/plan/groupby6.q.xml ql/src/test/results/compiler/plan/groupby6.q.xml index 11b0f76..971643c 100644 --- ql/src/test/results/compiler/plan/groupby6.q.xml +++ ql/src/test/results/compiler/plan/groupby6.q.xml @@ -241,10 +241,10 @@ java.lang.String - int + java.lang.Integer - int + java.lang.Integer @@ -271,7 +271,7 @@ - 4 + 5