You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by kr...@apache.org on 2023/06/19 03:20:48 UTC

[hive] branch master updated: HIVE-27430: Upgrade Antlr in hplsql to 4.9.3 (Krisztian Kasa, reviewed by Laszlo Vegh, Dayakar M, Attila Turoczy)

This is an automated email from the ASF dual-hosted git repository.

krisztiankasa pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 02851615a2f HIVE-27430: Upgrade Antlr in hplsql to 4.9.3 (Krisztian Kasa, reviewed by Laszlo Vegh, Dayakar M, Attila Turoczy)
02851615a2f is described below

commit 02851615a2f4ae3fced4edec76c7c4a06f6f63c1
Author: Krisztian Kasa <kk...@cloudera.com>
AuthorDate: Mon Jun 19 05:20:42 2023 +0200

    HIVE-27430: Upgrade Antlr in hplsql to 4.9.3 (Krisztian Kasa, reviewed by Laszlo Vegh, Dayakar M, Attila Turoczy)
---
 bin/ext/hplsql.sh                                  |  2 +-
 hplsql/pom.xml                                     |  4 +--
 .../src/main/java/org/apache/hive/hplsql/Exec.java | 37 ++++++++++++++++------
 .../src/test/results/local/invalid_syntax.out.txt  |  3 +-
 pom.xml                                            |  2 ++
 5 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/bin/ext/hplsql.sh b/bin/ext/hplsql.sh
index ddaf3247207..aa6fa713c0d 100644
--- a/bin/ext/hplsql.sh
+++ b/bin/ext/hplsql.sh
@@ -21,7 +21,7 @@ hplsql () {
 
   # include only the HPL/SQL jar and its dependencies
   hplsqlJarPath=`ls ${HIVE_LIB}/hive-hplsql-*.jar`
-  antlrJarPath="${HIVE_LIB}/antlr-runtime-4.5.jar"
+  antlrJarPath="${HIVE_LIB}/antlr4-runtime-*.jar"
   hadoopClasspath=""
   if [[ -n "${HADOOP_CLASSPATH}" ]]
   then
diff --git a/hplsql/pom.xml b/hplsql/pom.xml
index d913481d963..f9f9356eb44 100644
--- a/hplsql/pom.xml
+++ b/hplsql/pom.xml
@@ -48,7 +48,7 @@
     <dependency>
       <groupId>org.antlr</groupId>
       <artifactId>antlr4-runtime</artifactId>
-      <version>4.5</version>
+      <version>${antlr4.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.hadoop</groupId>
@@ -127,7 +127,7 @@
       <plugin>
         <groupId>org.antlr</groupId>
         <artifactId>antlr4-maven-plugin</artifactId>
-        <version>4.5</version>
+        <version>${antlr4.version}</version>
         <configuration>
           <visitor>true</visitor>
         </configuration>
diff --git a/hplsql/src/main/java/org/apache/hive/hplsql/Exec.java b/hplsql/src/main/java/org/apache/hive/hplsql/Exec.java
index f9561ad70c1..12690126374 100644
--- a/hplsql/src/main/java/org/apache/hive/hplsql/Exec.java
+++ b/hplsql/src/main/java/org/apache/hive/hplsql/Exec.java
@@ -19,12 +19,14 @@
 package org.apache.hive.hplsql;
 
 import static java.util.Collections.singletonList;
+import static org.apache.commons.lang3.StringUtils.isNotBlank;
 import static org.apache.hive.hplsql.objects.MethodDictionary.__GETITEM__;
 import static org.apache.hive.hplsql.objects.MethodDictionary.__SETITEM__;
 import static org.apache.hive.hplsql.objects.MethodParams.Arity.UNARY;
 
 import java.io.ByteArrayInputStream;
 import java.io.Closeable;
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -33,6 +35,7 @@ import java.io.PrintWriter;
 import java.io.UncheckedIOException;
 import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Paths;
 import java.sql.Connection;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -83,13 +86,17 @@ import org.apache.hive.hplsql.packages.HmsPackageRegistry;
 import org.apache.hive.hplsql.packages.InMemoryPackageRegistry;
 import org.apache.hive.hplsql.packages.PackageRegistry;
 import org.apache.thrift.TException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * HPL/SQL script executor
  *
  */
 public class Exec extends HplsqlBaseVisitor<Integer> implements Closeable {
-  
+
+  private static final Logger LOG = LoggerFactory.getLogger(Exec.class);
+
   public static final String VERSION = "HPL/SQL 0.3.31";
   public static final String ERRORCODE = "ERRORCODE";
   public static final String SQLCODE = "SQLCODE";
@@ -637,15 +644,8 @@ public class Exec extends HplsqlBaseVisitor<Integer> implements Closeable {
     }
     ArrayList<String> sql = new ArrayList<>();
     String dir = Utils.getExecDir();
-    String hplsqlJarName = "hplsql.jar";
-    for(String jarName: new java.io.File(dir).list()) {
-      if(jarName.startsWith("hive-hplsql") && jarName.endsWith(".jar")) {
-        hplsqlJarName = jarName;
-        break;
-      }
-    }
-    sql.add("ADD JAR " + dir + hplsqlJarName);
-    sql.add("ADD JAR " + dir + "antlr4-runtime-4.5.jar");
+    addJar(sql, dir, "hive-hplsql");
+    addJar(sql, dir, "antlr4-runtime");
     if(!conf.getLocation().equals("")) {
       sql.add("ADD FILE " + conf.getLocation());
     } else {
@@ -666,6 +666,23 @@ public class Exec extends HplsqlBaseVisitor<Integer> implements Closeable {
     udfRegistered = true;
   }
 
+  private static void addJar(ArrayList<String> sql, String dir, String jarNamePrefix) {
+    String jarName = findJarLike(dir, jarNamePrefix);
+    if (isNotBlank(jarName)) {
+      sql.add("ADD JAR " + Paths.get(dir, jarName));
+    }
+  }
+
+  private static String findJarLike(String dir, String prefix) {
+    String[] files = new File(dir).list((dir1, name) -> name.startsWith(prefix) && name.endsWith(".jar"));
+    if (files == null || files.length < 1) {
+      LOG.warn("No jar file found in directory '{}' with prefix '{}'", dir, prefix);
+      return null;
+    }
+
+    return files[0];
+  }
+
   /**
    * Initialize options
    */
diff --git a/hplsql/src/test/results/local/invalid_syntax.out.txt b/hplsql/src/test/results/local/invalid_syntax.out.txt
index b286f12d8ac..56206511ecb 100644
--- a/hplsql/src/test/results/local/invalid_syntax.out.txt
+++ b/hplsql/src/test/results/local/invalid_syntax.out.txt
@@ -1,4 +1,3 @@
 Syntax error at line 1:27 no viable alternative at input 'b,'
-Syntax error at line 1:27 extraneous input ',' expecting {<EOF>, '@', '#', '!', T_ACTION, T_ADD2, T_ALL, T_ALLOCATE, T_ALTER, T_AND, T_ANSI_NULLS, T_ANSI_PADDING, T_AS, T_ASC, T_ASSOCIATE, T_AT, T_AUTO_INCREMENT, T_AVG, T_BATCHSIZE, T_BEGIN, T_BETWEEN, T_BIGINT, T_BINARY_DOUBLE, T_BINARY_FLOAT, T_BIT, T_BODY, T_BREAK, T_BULK, T_BY, T_BYTE, T_CALL, T_CALLER, T_CASCADE, T_CASE, T_CASESPECIFIC, T_CAST, T_CHAR, T_CHARACTER, T_CHARSET, T_CLIENT, T_CLOSE, T_CLUSTERED, T_CMP, T_COLLECT, T_COLLE [...]
-Syntax error at line 1:32 no viable alternative at input 'INT)'
+Syntax error at line 1:27 mismatched input ',' expecting {<EOF>, '@', '#', '!', T_ACTION, T_ADD2, T_ALL, T_ALLOCATE, T_ALTER, T_AND, T_ANSI_NULLS, T_ANSI_PADDING, T_AS, T_ASC, T_ASSOCIATE, T_AT, T_AUTO_INCREMENT, T_AVG, T_BATCHSIZE, T_BEGIN, T_BETWEEN, T_BIGINT, T_BINARY_DOUBLE, T_BINARY_FLOAT, T_BIT, T_BODY, T_BREAK, T_BULK, T_BY, T_BYTE, T_CALL, T_CALLER, T_CASCADE, T_CASE, T_CASESPECIFIC, T_CAST, T_CHAR, T_CHARACTER, T_CHARSET, T_CLIENT, T_CLOSE, T_CLUSTERED, T_CMP, T_COLLECT, T_COLLE [...]
 Ln:1 identifier 'CREATE' must be declared.
diff --git a/pom.xml b/pom.xml
index ada10180e30..dd108a2e870 100644
--- a/pom.xml
+++ b/pom.xml
@@ -104,6 +104,8 @@
     <accumulo.version>1.10.1</accumulo.version>
     <ant.version>1.10.13</ant.version>
     <antlr.version>3.5.2</antlr.version>
+    <!-- Make sure to sync it with standalone-metastore/pom.xml -->
+    <antlr4.version>4.9.3</antlr4.version>
     <apache-directory-server.version>1.5.7</apache-directory-server.version>
     <!-- Include arrow for LlapOutputFormatService -->
     <arrow.version>12.0.0</arrow.version>