[ 
https://issues.apache.org/jira/browse/HIVE-25403?focusedWorklogId=635563&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-635563
 ]

ASF GitHub Bot logged work on HIVE-25403:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 07/Aug/21 07:39
            Start Date: 07/Aug/21 07:39
    Worklog Time Spent: 10m 
      Work Description: warriersruthi commented on a change in pull request 
#2550:
URL: https://github.com/apache/hive/pull/2550#discussion_r684599307



##########
File path: 
ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFromUnixTime.java
##########
@@ -18,158 +18,101 @@
 
 package org.apache.hadoop.hive.ql.udf.generic;
 
-import java.text.SimpleDateFormat;
+import java.time.Instant;
 import java.time.ZoneId;
-import java.util.Date;
-import java.util.TimeZone;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.hadoop.hive.common.type.TimestampTZUtil;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hadoop.hive.ql.exec.Description;
-import org.apache.hadoop.hive.ql.exec.MapredContext;
 import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
-import org.apache.hadoop.hive.ql.exec.UDFArgumentLengthException;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector.Category;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters;
 import 
org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters.Converter;
 import org.apache.hadoop.hive.serde2.objectinspector.PrimitiveObjectInspector;
-import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.IntObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.LongObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
 import org.apache.hadoop.io.Text;
+import static 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils.PrimitiveGrouping.STRING_GROUP;
 
 /**
  * GenericUDFFromUnixTime.
  *
  */
 @Description(name = "from_unixtime",
-    value = "_FUNC_(unix_time, format) - returns unix_time in the specified 
format",
+    value = "_FUNC_(unix_time_in_seconds, format) - returns unix_time in the 
specified format",
     extended = "Example:\n"
-        + "  > SELECT _FUNC_(0, 'yyyy-MM-dd HH:mm:ss') FROM src LIMIT 1;\n"
+        + "  > SELECT _FUNC_(0, 'uuuu-MM-dd HH:mm:ss') FROM src LIMIT 1;\n"
         + "  '1970-01-01 00:00:00'")
 public class GenericUDFFromUnixTime extends GenericUDF {
 
-  private transient IntObjectInspector inputIntOI;
   private transient LongObjectInspector inputLongOI;
-  private transient Converter inputTextConverter;
   private transient ZoneId timeZone;
   private transient final Text result = new Text();
-
-  private transient SimpleDateFormat formatter = new 
SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-  private transient String lastFormat = null;
-
+  private transient String lastFormat ="uuuu-MM-dd HH:mm:ss";
+  private transient DateTimeFormatter FORMATTER = 
DateTimeFormatter.ofPattern(lastFormat);
+  private transient Converter[] converters = new Converter[2];
+  private transient PrimitiveObjectInspector.PrimitiveCategory[] inputTypes = 
new PrimitiveObjectInspector.PrimitiveCategory[2];
 
   @Override
   public ObjectInspector initialize(ObjectInspector[] arguments) throws 
UDFArgumentException {
-    if (arguments.length < 1) {
-      throw new UDFArgumentLengthException("The function " + 
getName().toUpperCase() +
-          "requires at least one argument");
-    }
-    if (arguments.length > 2) {
-      throw new UDFArgumentLengthException("Too many arguments for the 
function " + getName().toUpperCase());
-    }
-    for (ObjectInspector argument : arguments) {
-      if (argument.getCategory() != Category.PRIMITIVE) {
-        throw new UDFArgumentException(getName().toUpperCase() +
-            " only takes primitive types, got " + argument.getTypeName());
-      }
+    checkArgsSize(arguments, 1, 2);
+
+    for (int i = 0; i < arguments.length; i++) {
+      checkArgPrimitive(arguments, i);
     }
 
     PrimitiveObjectInspector arg0OI = (PrimitiveObjectInspector) arguments[0];
-    switch (arg0OI.getPrimitiveCategory()) {
-      case INT:
-        inputIntOI = (IntObjectInspector) arguments[0];
-        break;
-      case LONG:
-        inputLongOI = (LongObjectInspector) arguments[0];
-        break;
-      default:
-        throw new UDFArgumentException("The function " + 
getName().toUpperCase()
-            + " takes only int/long types for first argument. Got Type:" + 
arg0OI.getPrimitiveCategory().name());
+    if(arg0OI.getPrimitiveCategory() == 
PrimitiveObjectInspector.PrimitiveCategory.LONG) {

Review comment:
       Yes Sankar, I have reinstated the same.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 635563)
    Time Spent: 2h 50m  (was: 2h 40m)

>  from_unixtime() does not consider leap seconds
> -----------------------------------------------
>
>                 Key: HIVE-25403
>                 URL: https://issues.apache.org/jira/browse/HIVE-25403
>             Project: Hive
>          Issue Type: Sub-task
>          Components: Hive
>            Reporter: Sruthi Mooriyathvariam
>            Assignee: Sruthi Mooriyathvariam
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 3.1.2
>
>         Attachments: image-2021-07-29-14-42-49-806.png
>
>          Time Spent: 2h 50m
>  Remaining Estimate: 0h
>
> The Unix_timestamp() considers "leap second" while the from_unixtime is not; 
> which results in to wrong result as below:
> !image-2021-07-29-14-42-49-806.png!



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to