Uploaded image for project: 'Hive'
  1. Hive
  2. HIVE-9377

UDF in_file() in WHERE predicate causes NPE.

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 0.14.0
    • 1.0.2, 1.1.0
    • UDF
    • None

    Description

      Consider the following query:

      SELECT foo, bar from mythdb.foobar where in_file( bar, '/tmp/bar_list.txt' );
      

      Using in_file() in a WHERE predicate causes the following NPE:

      java.lang.NullPointerException
      	at org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorUtils.getWritableConstantValue(ObjectInspectorUtils.java:1041)
      	at org.apache.hadoop.hive.ql.udf.generic.GenericUDFInFile.getRequiredFiles(GenericUDFInFile.java:93)
      	at org.apache.hadoop.hive.ql.optimizer.ConstantPropagateProcFactory.isDeterministicUdf(ConstantPropagateProcFactory.java:303)
      	at org.apache.hadoop.hive.ql.optimizer.ConstantPropagateProcFactory.foldExpr(ConstantPropagateProcFactory.java:226)
      	at org.apache.hadoop.hive.ql.optimizer.ConstantPropagateProcFactory.access$000(ConstantPropagateProcFactory.java:92)
      	at org.apache.hadoop.hive.ql.optimizer.ConstantPropagateProcFactory$ConstantPropagateFilterProc.process(ConstantPropagateProcFactory.java:623)
      	at org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher.dispatch(DefaultRuleDispatcher.java:90)
      	at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatchAndReturn(DefaultGraphWalker.java:94)
      	at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.dispatch(DefaultGraphWalker.java:78)
      	at org.apache.hadoop.hive.ql.optimizer.ConstantPropagate$ConstantPropagateWalker.walk(ConstantPropagate.java:147)
      	at org.apache.hadoop.hive.ql.lib.DefaultGraphWalker.startWalking(DefaultGraphWalker.java:109)
      	at org.apache.hadoop.hive.ql.optimizer.ConstantPropagate.transform(ConstantPropagate.java:117)
      	at org.apache.hadoop.hive.ql.optimizer.Optimizer.optimize(Optimizer.java:177)
      	at org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:10032)
      	at org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:189)
      	at org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:224)
      	at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:420)
      	at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:306)
      	at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1108)
      	at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1156)
      	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1045)
      	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1035)
      	at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:206)
      	at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:158)
      	at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:369)
      	at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:304)
      	at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:701)
      	at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:674)
      	at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:614)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
      

      I have a tentative fix I need advice on.

      Attachments

        1. HIVE-9377.1.patch
          1 kB
          Mithun Radhakrishnan

        Activity

          People

            mithun Mithun Radhakrishnan
            mithun Mithun Radhakrishnan
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: