Repository: hive Updated Branches: refs/heads/master ac9405004 -> a354507cc
HIVE-13859: mask() UDF not retaining day and month field values (Madhan Neethiraj via Ashutosh Chauhan) Signed-off-by: Ashutosh Chauhan <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/a354507c Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/a354507c Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/a354507c Branch: refs/heads/master Commit: a354507ccf650a2b304a2ea76797e7846564e620 Parents: ac94050 Author: Madhan Neethiraj <[email protected]> Authored: Sat May 28 03:16:38 2016 -0700 Committer: Ashutosh Chauhan <[email protected]> Committed: Tue May 31 11:40:59 2016 -0700 ---------------------------------------------------------------------- .../hive/ql/udf/generic/GenericUDFMask.java | 12 ++++++++---- ql/src/test/queries/clientpositive/udf_mask.q | 9 ++++++++- .../test/results/clientpositive/udf_mask.q.out | 20 +++++++++++++++++--- 3 files changed, 33 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/a354507c/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMask.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMask.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMask.java index cd35142..b815aae 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMask.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMask.java @@ -96,12 +96,16 @@ class MaskTransformer extends AbstractTransformer { maskedNumber = MASKED_NUMBER; } - if(maskedDayValue < 1 || maskedDayValue > 31) { - maskedDayValue = MASKED_DAY_COMPONENT_VAL; + if(maskedDayValue != UNMASKED_VAL) { + if(maskedDayValue < 1 || maskedDayValue > 31) { + maskedDayValue = MASKED_DAY_COMPONENT_VAL; + } } - if(maskedMonthValue < 0 || maskedMonthValue > 11) { - maskedMonthValue = MASKED_MONTH_COMPONENT_VAL; + if(maskedMonthValue != UNMASKED_VAL) { + if(maskedMonthValue < 0 || maskedMonthValue > 11) { + maskedMonthValue = MASKED_MONTH_COMPONENT_VAL; + } } } http://git-wip-us.apache.org/repos/asf/hive/blob/a354507c/ql/src/test/queries/clientpositive/udf_mask.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/udf_mask.q b/ql/src/test/queries/clientpositive/udf_mask.q index 82b8ee7..15f7d27 100644 --- a/ql/src/test/queries/clientpositive/udf_mask.q +++ b/ql/src/test/queries/clientpositive/udf_mask.q @@ -10,4 +10,11 @@ select mask('TestString-123', 'X', 'x', '0', ':'), mask(cast(12345 as smallint), -1, -1, -1, -1, '5'), mask(cast(12345 as int), -1, -1, -1, -1, '5'), mask(cast(12345 as bigint), -1, -1, -1, -1, '5'), - mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 0, 0, 0); + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 0, 0, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, 0, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 1, -1, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 1, 0, -1), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 1, -1, -1), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, 0, -1), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, -1, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, -1, -1); http://git-wip-us.apache.org/repos/asf/hive/blob/a354507c/ql/src/test/results/clientpositive/udf_mask.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/udf_mask.q.out b/ql/src/test/results/clientpositive/udf_mask.q.out index cbafaee..ac0e273 100644 --- a/ql/src/test/results/clientpositive/udf_mask.q.out +++ b/ql/src/test/results/clientpositive/udf_mask.q.out @@ -53,7 +53,14 @@ PREHOOK: query: select mask('TestString-123', 'X', 'x', '0', ':'), mask(cast(12345 as smallint), -1, -1, -1, -1, '5'), mask(cast(12345 as int), -1, -1, -1, -1, '5'), mask(cast(12345 as bigint), -1, -1, -1, -1, '5'), - mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 0, 0, 0) + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 0, 0, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, 0, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 1, -1, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 1, 0, -1), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 1, -1, -1), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, 0, -1), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, -1, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, -1, -1) PREHOOK: type: QUERY PREHOOK: Input: _dummy_database@_dummy_table #### A masked pattern was here #### @@ -64,8 +71,15 @@ POSTHOOK: query: select mask('TestString-123', 'X', 'x', '0', ':'), mask(cast(12345 as smallint), -1, -1, -1, -1, '5'), mask(cast(12345 as int), -1, -1, -1, -1, '5'), mask(cast(12345 as bigint), -1, -1, -1, -1, '5'), - mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 0, 0, 0) + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 0, 0, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, 0, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 1, -1, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 1, 0, -1), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, 1, -1, -1), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, 0, -1), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, -1, 0), + mask(cast('2016-04-20' as date), -1, -1, -1, -1, -1, -1, -1, -1) POSTHOOK: type: QUERY POSTHOOK: Input: _dummy_database@_dummy_table #### A masked pattern was here #### -XxxxXxxxxx:000 XxxxXxxxxx:000 XxxxXxxxxx:000:::::::::: 43 -9981 55555 55555 1900-01-01 +XxxxXxxxxx:000 XxxxXxxxxx:000 XxxxXxxxxx:000:::::::::: 43 -9981 55555 55555 1900-01-01 1900-01-20 1900-04-01 2016-01-01 2016-04-01 2016-01-20 1900-04-20 2016-04-20
