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 0afb02b1cc6 HIVE-28253: Unable to set the value for hplsql.onerror in
hplsql mode. (Dayakar M, reviewed by Krisztian Kasa)
0afb02b1cc6 is described below
commit 0afb02b1cc6ba995d63c2c6c17ee31128c3b00e4
Author: Dayakar M <[email protected]>
AuthorDate: Mon May 13 15:09:14 2024 +0530
HIVE-28253: Unable to set the value for hplsql.onerror in hplsql mode.
(Dayakar M, reviewed by Krisztian Kasa)
Co-authored-by: mdayakar <[email protected]>
---
.../main/antlr4/org/apache/hive/hplsql/Hplsql.g4 | 4 ++--
.../src/main/java/org/apache/hive/hplsql/Exec.java | 2 +-
.../apache/hive/beeline/TestHplSqlViaBeeLine.java | 27 ++++++++++++++++++++++
3 files changed, 30 insertions(+), 3 deletions(-)
diff --git a/hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4
b/hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4
index 14cf034ad01..43a32984612 100644
--- a/hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4
+++ b/hplsql/src/main/antlr4/org/apache/hive/hplsql/Hplsql.g4
@@ -140,8 +140,8 @@ assignment_stmt_item :
;
assignment_stmt_single_item :
- ident T_COLON? T_EQUAL expr
- | T_OPEN_P ident T_CLOSE_P T_COLON? T_EQUAL expr
+ qident T_COLON? T_EQUAL expr
+ | T_OPEN_P qident T_CLOSE_P T_COLON? T_EQUAL expr
;
assignment_stmt_collection_item :
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 7386f9a58a5..ccfe5c5ce09 100644
--- a/hplsql/src/main/java/org/apache/hive/hplsql/Exec.java
+++ b/hplsql/src/main/java/org/apache/hive/hplsql/Exec.java
@@ -1635,7 +1635,7 @@ public class Exec extends HplsqlBaseVisitor<Integer>
implements Closeable {
*/
@Override
public Integer
visitAssignment_stmt_single_item(HplsqlParser.Assignment_stmt_single_itemContext
ctx) {
- String name = ctx.ident().getText();
+ String name = ctx.qident().getText();
visit(ctx.expr());
Var var = setVariable(name);
StringBuilder assignments = new StringBuilder();
diff --git
a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestHplSqlViaBeeLine.java
b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestHplSqlViaBeeLine.java
index efe021e6598..0ae643c5526 100644
---
a/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestHplSqlViaBeeLine.java
+++
b/itests/hive-unit/src/test/java/org/apache/hive/beeline/TestHplSqlViaBeeLine.java
@@ -1062,6 +1062,33 @@ public class TestHplSqlViaBeeLine {
testScriptFile(SCRIPT_TEXT, args(), "^(.(?!(ClassCastException)))*$",
OutStream.ERR);
}
+ @Test
+ public void testSetHplsqlOnErrorStop() throws Throwable {
+ String SCRIPT_TEXT =
+ "SET hplsql.onerror='stop';\n" +
+ "insert into abc values('Tbl Not Exists');\n" +
+ "SELECT CURRENT_USER;";
+ testScriptFile(SCRIPT_TEXT, args(), "^(.(?!(" +
System.getProperty("user.name") + ")))*$");
+ }
+
+ @Test
+ public void testSetHplsqlOnErrorSetError() throws Throwable {
+ String SCRIPT_TEXT =
+ "SET hplsql.onerror='seterror';\n" +
+ "insert into abc values('Tbl Not Exists');\n" +
+ "if SQLCODE < 0\n" + " PRINT 'SQL Error...';";
+ testScriptFile(SCRIPT_TEXT, args(), "SessionState: SQL Error...",
OutStream.ERR);
+ }
+
+ @Test
+ public void testSetHplsqlOnErrorException() throws Throwable {
+ String SCRIPT_TEXT =
+ "SET hplsql.onerror='exception';\n" +
+ "insert into abc values('Tbl Not Exists');\n" +
+ "SELECT CURRENT_USER;";
+ testScriptFile(SCRIPT_TEXT, args(), "^(.(?!(" +
System.getProperty("user.name") + ")))*$");
+ }
+
private static List<String> args() {
return Arrays.asList("-d", BeeLine.BEELINE_DEFAULT_JDBC_DRIVER,
"-u", miniHS2.getBaseJdbcURL() + ";mode=hplsql", "-n", userName);