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>