Skip to content

Commit

Permalink
HIVE-24217. HMS storage backend for HPL/SQL stored procedures (amagyar)
Browse files Browse the repository at this point in the history
  • Loading branch information
zeroflag committed Sep 30, 2020
1 parent 95e76f0 commit 96dc6f7
Show file tree
Hide file tree
Showing 134 changed files with 25,613 additions and 11,479 deletions.
283 changes: 175 additions & 108 deletions hplsql/src/main/java/org/apache/hive/hplsql/Exec.java

Large diffs are not rendered by default.

9 changes: 5 additions & 4 deletions hplsql/src/main/java/org/apache/hive/hplsql/Package.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@
import org.apache.hive.hplsql.HplsqlParser.Package_body_itemContext;
import org.apache.hive.hplsql.HplsqlParser.Create_function_stmtContext;
import org.apache.hive.hplsql.HplsqlParser.Create_procedure_stmtContext;
import org.apache.hive.hplsql.functions.Function;
import org.apache.hive.hplsql.functions.BuiltinFunctions;
import org.apache.hive.hplsql.functions.InMemoryFunction;

/**
* Program package
Expand All @@ -46,13 +47,13 @@ public class Package {
boolean allMembersPublic = false;

Exec exec;
Function function;
InMemoryFunction function;
boolean trace = false;

Package(String name, Exec exec) {
Package(String name, Exec exec, BuiltinFunctions builtinFunctions) {
this.name = name;
this.exec = exec;
this.function = new Function(exec);
this.function = new InMemoryFunction(exec, builtinFunctions);
this.trace = exec.getTrace();
}

Expand Down
6 changes: 3 additions & 3 deletions hplsql/src/main/java/org/apache/hive/hplsql/Select.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public Integer select(HplsqlParser.Select_stmtContext ctx) {
var.setValues(rs, rm);
}
if (trace) {
trace(ctx, var, rs, rm, i);
trace(ctx, var, rm, i);
}
}
else {
Expand Down Expand Up @@ -480,7 +480,7 @@ void trace(ParserRuleContext ctx, String message) {
exec.trace(ctx, message);
}

void trace(ParserRuleContext ctx, Var var, ResultSet rs, ResultSetMetaData rm, int idx) throws SQLException {
exec.trace(ctx, var, rs, rm, idx);
void trace(ParserRuleContext ctx, Var var, ResultSetMetaData rm, int idx) throws SQLException {
exec.trace(ctx, var, rm, idx);
}
}
18 changes: 8 additions & 10 deletions hplsql/src/main/java/org/apache/hive/hplsql/Stmt.java
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ else if (exec.getOffline()) {
var.setValues(rs, rsm);
}
if (trace) {
trace(ctx, var, rs, rsm, i);
trace(ctx, var, rsm, i);
}
}
else if(trace) {
Expand Down Expand Up @@ -864,7 +864,7 @@ public Integer getDiagnosticsRowCount(HplsqlParser.Get_diag_stmt_rowcount_itemCo
*/
public Integer use(HplsqlParser.Use_stmtContext ctx) {
trace(ctx, "USE");
return use(ctx, ctx.T_USE().toString() + " " + meta.normalizeIdentifierPart(evalPop(ctx.expr()).toString()));
return use(ctx, ctx.T_USE().toString() + " " + meta.normalizeIdentifierPart(ctx.expr().getText()));
}

public Integer use(ParserRuleContext ctx, String sql) {
Expand Down Expand Up @@ -952,7 +952,7 @@ public Integer forCursor(HplsqlParser.For_cursor_stmtContext ctx) {
while (rs.next()) {
var.setValues(rs, rm);
if (trace) {
trace(ctx, var, rs, rm, 0);
trace(ctx, var, rm, 0);
}
visit(ctx.block());
exec.incRowCount();
Expand Down Expand Up @@ -1048,7 +1048,7 @@ public Integer exec(HplsqlParser.Exec_stmtContext ctx) {
var.setValues(rs, rm);
}
if (trace) {
trace(ctx, var, rs, rm, i + 1);
trace(ctx, var, rm, i + 1);
}
}
else if (trace) {
Expand Down Expand Up @@ -1085,10 +1085,8 @@ else if (trace) {
*/
public Boolean execProc(HplsqlParser.Exec_stmtContext ctx) {
String name = evalPop(ctx.expr()).toString();
if (exec.function.isProc(name)) {
if (exec.function.execProc(name, ctx.expr_func_params(), ctx)) {
return true;
}
if (exec.function.exec(name, ctx.expr_func_params())) {
return true;
}
return false;
}
Expand Down Expand Up @@ -1638,7 +1636,7 @@ void trace(ParserRuleContext ctx, String message) {
exec.trace(ctx, message);
}

void trace(ParserRuleContext ctx, Var var, ResultSet rs, ResultSetMetaData rm, int idx) throws SQLException {
exec.trace(ctx, var, rs, rm, idx);
void trace(ParserRuleContext ctx, Var var, ResultSetMetaData rm, int idx) throws SQLException {
exec.trace(ctx, var, rm, idx);
}
}
18 changes: 11 additions & 7 deletions hplsql/src/main/java/org/apache/hive/hplsql/Var.java
Original file line number Diff line number Diff line change
Expand Up @@ -139,18 +139,22 @@ public Var(Type type) {
this.type = type;
}

public Var(String name, String type, String len, String scale, Var def) {
public Var(String name, String type, Integer len, Integer scale, Var def) {
this.name = name;
setType(type);
if (len != null) {
this.len = Integer.parseInt(len);
}
setType(type);
if (len != null) {
this.len = len;
}
if (scale != null) {
this.scale = Integer.parseInt(scale);
this.scale = scale;
}
if (def != null) {
cast(def);
}
}

public Var(String name, String type, String len, String scale, Var def) {
this(name, type, len != null ? Integer.parseInt(len) : null, scale != null ? Integer.parseInt(scale) : null, def);
}

/**
Expand Down Expand Up @@ -283,7 +287,7 @@ public Var setValues(ResultSet rs, ResultSetMetaData rsm) throws SQLException {
Row row = (Row)this.value;
int idx = 1;
for (Column column : row.getColumns()) {
Var var = new Var(column.getName(), column.getType(), null, null, null);
Var var = new Var(column.getName(), column.getType(), (Integer) null, null, null);
var.setValue(rs, rsm, idx);
column.setValue(var);
idx++;
Expand Down
Loading

0 comments on commit 96dc6f7

Please sign in to comment.