[opt](plsql) Fix procedure key compatibility (#31445)
use dbId replace dbName, because dbName may be renamed by Alter. procedure key add package name (only reserved, currently no plans to support package) Optimize procedure create and exception
This commit is contained in:
@ -3335,7 +3335,7 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
|
||||
List<Expression> arguments = ctx.expression().stream()
|
||||
.<Expression>map(this::typedVisit)
|
||||
.collect(ImmutableList.toImmutableList());
|
||||
UnboundFunction unboundFunction = new UnboundFunction(procedureName.getDb(), procedureName.getName(),
|
||||
UnboundFunction unboundFunction = new UnboundFunction(procedureName.getDbName(), procedureName.getName(),
|
||||
true, arguments);
|
||||
return new CallCommand(unboundFunction, getOriginSql(ctx));
|
||||
}
|
||||
|
||||
@ -54,11 +54,7 @@ public class CreateProcedureCommand extends Command implements ForwardWithSync {
|
||||
|
||||
@Override
|
||||
public void run(ConnectContext ctx, StmtExecutor executor) throws Exception {
|
||||
// TODO, removeCached needs to be synchronized to all Observer FEs.
|
||||
// Even if it is always executed on the Master FE, it still has to deal with Master switching.
|
||||
ctx.getPlSqlOperation().getExec().functions.removeCached(procedureName.toString());
|
||||
client.addPlsqlStoredProcedure(procedureName.getName(), procedureName.getCtl(), procedureName.getDb(),
|
||||
ctx.getQualifiedUser(), source, isForce);
|
||||
ctx.getPlSqlOperation().getExec().functions.save(procedureName, source, isForce);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -17,6 +17,8 @@
|
||||
|
||||
package org.apache.doris.nereids.trees.plans.commands.info;
|
||||
|
||||
import org.apache.doris.catalog.DatabaseIf;
|
||||
import org.apache.doris.common.FeConstants;
|
||||
import org.apache.doris.datasource.InternalCatalog;
|
||||
import org.apache.doris.nereids.exceptions.AnalysisException;
|
||||
import org.apache.doris.nereids.util.Utils;
|
||||
@ -28,15 +30,19 @@ import com.google.common.collect.Lists;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* procedure, function, package name info
|
||||
*/
|
||||
public class FuncNameInfo {
|
||||
private final List<String> nameParts;
|
||||
private String ctl;
|
||||
private String db;
|
||||
private String ctl = "";
|
||||
private long ctlId = -1;
|
||||
private String db = "";
|
||||
private long dbId = -1;
|
||||
private final String name;
|
||||
private boolean isAnalyzed = false;
|
||||
|
||||
/**
|
||||
* FuncNameInfo
|
||||
@ -91,22 +97,32 @@ public class FuncNameInfo {
|
||||
* @param ctx ctx
|
||||
*/
|
||||
public void analyze(ConnectContext ctx) {
|
||||
if (Strings.isNullOrEmpty(ctl)) {
|
||||
ctl = ctx.getDefaultCatalog();
|
||||
if (isAnalyzed) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (Strings.isNullOrEmpty(ctl)) {
|
||||
ctl = InternalCatalog.INTERNAL_CATALOG_NAME;
|
||||
ctl = ctx.getDefaultCatalog();
|
||||
if (Strings.isNullOrEmpty(ctl)) {
|
||||
ctl = InternalCatalog.INTERNAL_CATALOG_NAME;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Strings.isNullOrEmpty(db)) {
|
||||
db = ctx.getDatabase();
|
||||
ctlId = ctx.getCatalog(ctl).getId();
|
||||
if (Strings.isNullOrEmpty(db)) {
|
||||
throw new AnalysisException("procedure/function/package name no database selected");
|
||||
db = ctx.getDatabase();
|
||||
if (Strings.isNullOrEmpty(db)) {
|
||||
db = FeConstants.INTERNAL_DB_NAME;
|
||||
}
|
||||
}
|
||||
Optional<DatabaseIf> dbInstance = ctx.getCatalog(ctl).getDb(db);
|
||||
dbId = dbInstance.map(DatabaseIf::getId).orElse(-1L);
|
||||
if (Strings.isNullOrEmpty(name)) {
|
||||
throw new AnalysisException("procedure/function/package name is null");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new AnalysisException("failed to analyze procedure name", e);
|
||||
}
|
||||
|
||||
if (Strings.isNullOrEmpty(name)) {
|
||||
throw new AnalysisException("procedure/function/package name is null");
|
||||
}
|
||||
isAnalyzed = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -115,29 +131,51 @@ public class FuncNameInfo {
|
||||
* @return ctlName
|
||||
*/
|
||||
public String getCtl() {
|
||||
analyze(ConnectContext.get());
|
||||
return ctl == null ? "" : ctl;
|
||||
}
|
||||
|
||||
/**
|
||||
* get catalog id
|
||||
*
|
||||
* @return ctlId
|
||||
*/
|
||||
public long getCtlId() {
|
||||
analyze(ConnectContext.get());
|
||||
return ctlId;
|
||||
}
|
||||
|
||||
/**
|
||||
* get db name
|
||||
*
|
||||
* @return dbName
|
||||
*/
|
||||
public String getDb() {
|
||||
public String getDbName() {
|
||||
analyze(ConnectContext.get());
|
||||
return db == null ? "" : db;
|
||||
}
|
||||
|
||||
/**
|
||||
* get db id
|
||||
*
|
||||
* @return dbId
|
||||
*/
|
||||
public long getDbId() {
|
||||
analyze(ConnectContext.get());
|
||||
return dbId;
|
||||
}
|
||||
|
||||
/**
|
||||
* get table name
|
||||
*
|
||||
* @return tableName
|
||||
*/
|
||||
public String getName() {
|
||||
analyze(ConnectContext.get());
|
||||
return name == null ? "" : name;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return nameParts.stream().map(Utils::quoteIfNeeded)
|
||||
.reduce((left, right) -> left + "." + right).orElse("");
|
||||
return nameParts.stream().map(Utils::quoteIfNeeded).reduce((left, right) -> left + "." + right).orElse("");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1625,7 +1625,7 @@ public class Exec extends org.apache.doris.nereids.PLParserBaseVisitor<Integer>
|
||||
FuncNameInfo procedureName = new FuncNameInfo(nameParts);
|
||||
Package packCallContext = exec.getPackageCallContext();
|
||||
boolean executed = false;
|
||||
Package pack = findPackage(procedureName.getDb());
|
||||
Package pack = findPackage(procedureName.getDbName());
|
||||
if (pack != null) {
|
||||
executed = pack.execFunc(procedureName.getName(), params);
|
||||
}
|
||||
|
||||
@ -66,10 +66,9 @@ public class DorisFunctionRegistry implements FunctionRegistry {
|
||||
@Override
|
||||
public void remove(FuncNameInfo procedureName) {
|
||||
try {
|
||||
client.dropPlsqlStoredProcedure(procedureName.getName(), procedureName.getCtl(),
|
||||
procedureName.getDb());
|
||||
client.dropPlsqlStoredProcedure(procedureName.getName(), procedureName.getCtlId(), procedureName.getDbId());
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
throw new RuntimeException("failed to remove procedure", e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,8 +123,8 @@ public class DorisFunctionRegistry implements FunctionRegistry {
|
||||
}
|
||||
}
|
||||
|
||||
private void callWithParameters(Expr_func_paramsContext ctx, ParserRuleContext procCtx,
|
||||
HashMap<String, Var> out, ArrayList<Var> actualParams) {
|
||||
private void callWithParameters(Expr_func_paramsContext ctx, ParserRuleContext procCtx, HashMap<String, Var> out,
|
||||
ArrayList<Var> actualParams) {
|
||||
if (procCtx instanceof Create_function_stmtContext) {
|
||||
Create_function_stmtContext func = (Create_function_stmtContext) procCtx;
|
||||
InMemoryFunctionRegistry.setCallParameters(func.multipartIdentifier().getText(), ctx, actualParams,
|
||||
@ -152,9 +151,8 @@ public class DorisFunctionRegistry implements FunctionRegistry {
|
||||
}
|
||||
|
||||
private Optional<PlsqlStoredProcedure> getProc(FuncNameInfo procedureName) {
|
||||
return Optional.ofNullable(
|
||||
client.getPlsqlStoredProcedure(procedureName.getName(), procedureName.getCtl(),
|
||||
procedureName.getDb()));
|
||||
return Optional.ofNullable(client.getPlsqlStoredProcedure(procedureName.getName(), procedureName.getCtlId(),
|
||||
procedureName.getDbId()));
|
||||
}
|
||||
|
||||
private ArrayList<Var> getActualCallParameters(Expr_func_paramsContext actual) {
|
||||
@ -179,7 +177,7 @@ public class DorisFunctionRegistry implements FunctionRegistry {
|
||||
}
|
||||
trace(ctx, "CREATE FUNCTION " + procedureName.toString());
|
||||
saveInCache(procedureName.toString(), ctx);
|
||||
saveStoredProc(procedureName, Exec.getFormattedText(ctx), ctx.REPLACE() != null);
|
||||
save(procedureName, Exec.getFormattedText(ctx), ctx.REPLACE() != null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -192,13 +190,19 @@ public class DorisFunctionRegistry implements FunctionRegistry {
|
||||
}
|
||||
trace(ctx, "CREATE PROCEDURE " + procedureName.toString());
|
||||
saveInCache(procedureName.toString(), ctx);
|
||||
saveStoredProc(procedureName, Exec.getFormattedText(ctx), ctx.REPLACE() != null);
|
||||
save(procedureName, Exec.getFormattedText(ctx), ctx.REPLACE() != null);
|
||||
}
|
||||
|
||||
private void saveStoredProc(FuncNameInfo procedureName, String source, boolean isForce) {
|
||||
client.addPlsqlStoredProcedure(procedureName.getName(), procedureName.getCtl(),
|
||||
procedureName.getDb(),
|
||||
ConnectContext.get().getQualifiedUser(), source, isForce);
|
||||
@Override
|
||||
public void save(FuncNameInfo procedureName, String source, boolean isForce) {
|
||||
try {
|
||||
// TODO support packageName
|
||||
client.addPlsqlStoredProcedure(procedureName.getName(), procedureName.getCtlId(), procedureName.getDbId(),
|
||||
"",
|
||||
ConnectContext.get().getQualifiedUser(), source, isForce);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("failed to save procedure", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void saveInCache(String name, ParserRuleContext procCtx) {
|
||||
|
||||
@ -32,6 +32,8 @@ public interface FunctionRegistry {
|
||||
|
||||
void addUserProcedure(Create_procedure_stmtContext ctx);
|
||||
|
||||
void save(FuncNameInfo procedureName, String source, boolean isForce);
|
||||
|
||||
boolean exists(FuncNameInfo procedureName);
|
||||
|
||||
void remove(FuncNameInfo procedureName);
|
||||
|
||||
@ -55,6 +55,11 @@ public class InMemoryFunctionRegistry implements FunctionRegistry {
|
||||
this.builtinFunctions = builtinFunctions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(FuncNameInfo procedureName, String source, boolean isForce) {
|
||||
throw new RuntimeException("InMemoryFunctionRegistry no support save");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean exists(FuncNameInfo procedureName) {
|
||||
return funcMap.containsKey(procedureName.toString()) || procMap.containsKey(procedureName.toString());
|
||||
|
||||
@ -49,8 +49,8 @@ public class PlsqlManager implements Writable {
|
||||
}
|
||||
|
||||
public void addPlsqlStoredProcedure(PlsqlStoredProcedure procedure, boolean isForce) {
|
||||
PlsqlProcedureKey plsqlProcedureKey = new PlsqlProcedureKey(procedure.getName(), procedure.getCatalogName(),
|
||||
procedure.getDbName());
|
||||
PlsqlProcedureKey plsqlProcedureKey = new PlsqlProcedureKey(procedure.getName(), procedure.getCatalogId(),
|
||||
procedure.getDbId());
|
||||
if (isForce) {
|
||||
nameToStoredProcedures.put(plsqlProcedureKey, procedure);
|
||||
} else if (nameToStoredProcedures.putIfAbsent(plsqlProcedureKey, procedure) != null) {
|
||||
@ -61,8 +61,8 @@ public class PlsqlManager implements Writable {
|
||||
}
|
||||
|
||||
public void replayAddPlsqlStoredProcedure(PlsqlStoredProcedure procedure) {
|
||||
PlsqlProcedureKey plsqlProcedureKey = new PlsqlProcedureKey(procedure.getName(), procedure.getCatalogName(),
|
||||
procedure.getDbName());
|
||||
PlsqlProcedureKey plsqlProcedureKey = new PlsqlProcedureKey(procedure.getName(), procedure.getCatalogId(),
|
||||
procedure.getDbId());
|
||||
nameToStoredProcedures.put(plsqlProcedureKey, procedure);
|
||||
LOG.info("Replay add stored procedure success: {}", plsqlProcedureKey);
|
||||
}
|
||||
@ -83,8 +83,8 @@ public class PlsqlManager implements Writable {
|
||||
}
|
||||
|
||||
public void addPackage(PlsqlPackage pkg, boolean isForce) {
|
||||
PlsqlProcedureKey plsqlProcedureKey = new PlsqlProcedureKey(pkg.getName(), pkg.getCatalogName(),
|
||||
pkg.getDbName());
|
||||
PlsqlProcedureKey plsqlProcedureKey = new PlsqlProcedureKey(pkg.getName(), pkg.getCatalogId(),
|
||||
pkg.getDbId());
|
||||
nameToPackages.put(plsqlProcedureKey, pkg);
|
||||
if (isForce) {
|
||||
nameToPackages.put(plsqlProcedureKey, pkg);
|
||||
@ -96,8 +96,8 @@ public class PlsqlManager implements Writable {
|
||||
}
|
||||
|
||||
public void replayAddPlsqlPackage(PlsqlPackage pkg) {
|
||||
PlsqlProcedureKey plsqlProcedureKey = new PlsqlProcedureKey(pkg.getName(), pkg.getCatalogName(),
|
||||
pkg.getDbName());
|
||||
PlsqlProcedureKey plsqlProcedureKey = new PlsqlProcedureKey(pkg.getName(), pkg.getCatalogId(),
|
||||
pkg.getDbId());
|
||||
nameToPackages.put(plsqlProcedureKey, pkg);
|
||||
LOG.info("Replay add plsql package success: {}", plsqlProcedureKey);
|
||||
}
|
||||
|
||||
@ -41,63 +41,66 @@ public class PlsqlMetaClient {
|
||||
public PlsqlMetaClient() {
|
||||
}
|
||||
|
||||
public void addPlsqlStoredProcedure(String name, String catalogName, String dbName, String ownerName, String source,
|
||||
public void addPlsqlStoredProcedure(String name, long catalogId, long dbId, String packageName,
|
||||
String ownerName, String source,
|
||||
boolean isForce) {
|
||||
checkPriv();
|
||||
if (Env.getCurrentEnv().isMaster()) {
|
||||
Env.getCurrentEnv().getPlsqlManager()
|
||||
.addPlsqlStoredProcedure(new PlsqlStoredProcedure(name, catalogName, dbName, ownerName, source),
|
||||
.addPlsqlStoredProcedure(
|
||||
new PlsqlStoredProcedure(name, catalogId, dbId, packageName, ownerName, source),
|
||||
isForce);
|
||||
} else {
|
||||
addPlsqlStoredProcedureThrift(name, catalogName, dbName, ownerName, source, isForce);
|
||||
addPlsqlStoredProcedureThrift(name, catalogId, dbId, packageName, ownerName, source, isForce);
|
||||
}
|
||||
}
|
||||
|
||||
public void dropPlsqlStoredProcedure(String name, String catalogName, String dbName) {
|
||||
public void dropPlsqlStoredProcedure(String name, long catalogId, long dbId) {
|
||||
checkPriv();
|
||||
if (Env.getCurrentEnv().isMaster()) {
|
||||
Env.getCurrentEnv().getPlsqlManager()
|
||||
.dropPlsqlStoredProcedure(new PlsqlProcedureKey(name, catalogName, dbName));
|
||||
.dropPlsqlStoredProcedure(new PlsqlProcedureKey(name, catalogId, dbId));
|
||||
} else {
|
||||
dropStoredProcedureThrift(name, catalogName, dbName);
|
||||
dropStoredProcedureThrift(name, catalogId, dbId);
|
||||
}
|
||||
}
|
||||
|
||||
public PlsqlStoredProcedure getPlsqlStoredProcedure(String name, String catalogName, String dbName) {
|
||||
public PlsqlStoredProcedure getPlsqlStoredProcedure(String name, long catalogId, long dbId) {
|
||||
return Env.getCurrentEnv().getPlsqlManager()
|
||||
.getPlsqlStoredProcedure(new PlsqlProcedureKey(name, catalogName, dbName));
|
||||
.getPlsqlStoredProcedure(new PlsqlProcedureKey(name, catalogId, dbId));
|
||||
}
|
||||
|
||||
public void addPlsqlPackage(String name, String catalogName, String dbName, String ownerName, String header,
|
||||
public void addPlsqlPackage(String name, long catalogId, long dbId, String ownerName, String header,
|
||||
String body) {
|
||||
checkPriv();
|
||||
if (Env.getCurrentEnv().isMaster()) {
|
||||
Env.getCurrentEnv().getPlsqlManager()
|
||||
.addPackage(new PlsqlPackage(name, catalogName, dbName, ownerName, header, body),
|
||||
.addPackage(new PlsqlPackage(name, catalogId, dbId, ownerName, header, body),
|
||||
false);
|
||||
} else {
|
||||
addPlsqlPackageThrift(name, catalogName, dbName, ownerName, header, body);
|
||||
addPlsqlPackageThrift(name, catalogId, dbId, ownerName, header, body);
|
||||
}
|
||||
}
|
||||
|
||||
public void dropPlsqlPackage(String name, String catalogName, String dbName) {
|
||||
public void dropPlsqlPackage(String name, long catalogId, long dbId) {
|
||||
checkPriv();
|
||||
if (Env.getCurrentEnv().isMaster()) {
|
||||
Env.getCurrentEnv().getPlsqlManager().dropPackage(new PlsqlProcedureKey(name, catalogName, dbName));
|
||||
Env.getCurrentEnv().getPlsqlManager().dropPackage(new PlsqlProcedureKey(name, catalogId, dbId));
|
||||
} else {
|
||||
dropPlsqlPackageThrift(name, catalogName, dbName);
|
||||
dropPlsqlPackageThrift(name, catalogId, dbId);
|
||||
}
|
||||
}
|
||||
|
||||
public PlsqlPackage getPlsqlPackage(String name, String catalogName, String dbName) {
|
||||
return Env.getCurrentEnv().getPlsqlManager().getPackage(new PlsqlProcedureKey(name, catalogName, dbName));
|
||||
public PlsqlPackage getPlsqlPackage(String name, long catalogId, long dbId) {
|
||||
return Env.getCurrentEnv().getPlsqlManager().getPackage(new PlsqlProcedureKey(name, catalogId, dbId));
|
||||
}
|
||||
|
||||
protected void addPlsqlStoredProcedureThrift(String name, String catalogName, String dbName, String ownerName,
|
||||
protected void addPlsqlStoredProcedureThrift(String name, long catalogId, long dbId, String packageName,
|
||||
String ownerName,
|
||||
String source, boolean isForce) {
|
||||
TPlsqlStoredProcedure tPlsqlStoredProcedure = new TPlsqlStoredProcedure().setName(name)
|
||||
.setCatalogName(catalogName)
|
||||
.setDbName(dbName).setOwnerName(ownerName).setSource(source);
|
||||
.setCatalogId(catalogId).setDbId(dbId)
|
||||
.setPackageName(packageName).setOwnerName(ownerName).setSource(source);
|
||||
TAddPlsqlStoredProcedureRequest tAddPlsqlStoredProcedureRequest = new TAddPlsqlStoredProcedureRequest()
|
||||
.setPlsqlStoredProcedure(tPlsqlStoredProcedure);
|
||||
tAddPlsqlStoredProcedureRequest.setIsForce(isForce);
|
||||
@ -110,9 +113,9 @@ public class PlsqlMetaClient {
|
||||
}
|
||||
}
|
||||
|
||||
protected void dropStoredProcedureThrift(String name, String catalogName, String dbName) {
|
||||
TPlsqlProcedureKey tPlsqlProcedureKey = new TPlsqlProcedureKey().setName(name).setCatalogName(catalogName)
|
||||
.setDbName(dbName);
|
||||
protected void dropStoredProcedureThrift(String name, long catalogId, long dbId) {
|
||||
TPlsqlProcedureKey tPlsqlProcedureKey = new TPlsqlProcedureKey().setName(name).setCatalogId(catalogId)
|
||||
.setDbId(dbId);
|
||||
TDropPlsqlStoredProcedureRequest tDropPlsqlStoredProcedureRequest
|
||||
= new TDropPlsqlStoredProcedureRequest().setPlsqlProcedureKey(
|
||||
tPlsqlProcedureKey);
|
||||
@ -125,10 +128,10 @@ public class PlsqlMetaClient {
|
||||
}
|
||||
}
|
||||
|
||||
protected void addPlsqlPackageThrift(String name, String catalogName, String dbName, String ownerName,
|
||||
protected void addPlsqlPackageThrift(String name, long catalogId, long dbId, String ownerName,
|
||||
String header, String body) {
|
||||
TPlsqlPackage tPlsqlPackage = new TPlsqlPackage().setName(name).setCatalogName(catalogName)
|
||||
.setDbName(dbName).setOwnerName(ownerName).setHeader(header).setBody(body);
|
||||
TPlsqlPackage tPlsqlPackage = new TPlsqlPackage().setName(name).setCatalogId(catalogId)
|
||||
.setDbId(dbId).setOwnerName(ownerName).setHeader(header).setBody(body);
|
||||
TAddPlsqlPackageRequest tAddPlsqlPackageRequest = new TAddPlsqlPackageRequest()
|
||||
.setPlsqlPackage(tPlsqlPackage);
|
||||
|
||||
@ -140,9 +143,9 @@ public class PlsqlMetaClient {
|
||||
}
|
||||
}
|
||||
|
||||
protected void dropPlsqlPackageThrift(String name, String catalogName, String dbName) {
|
||||
TPlsqlProcedureKey tPlsqlProcedureKey = new TPlsqlProcedureKey().setName(name).setCatalogName(catalogName)
|
||||
.setDbName(dbName);
|
||||
protected void dropPlsqlPackageThrift(String name, long catalogId, long dbId) {
|
||||
TPlsqlProcedureKey tPlsqlProcedureKey = new TPlsqlProcedureKey().setName(name).setCatalogId(catalogId)
|
||||
.setDbId(dbId);
|
||||
TDropPlsqlPackageRequest tDropPlsqlPackageRequest = new TDropPlsqlPackageRequest().setPlsqlProcedureKey(
|
||||
tPlsqlProcedureKey);
|
||||
|
||||
|
||||
@ -36,11 +36,11 @@ public class PlsqlPackage implements Writable {
|
||||
@SerializedName(value = "name")
|
||||
private String name;
|
||||
|
||||
@SerializedName(value = "catalogName")
|
||||
private String catalogName;
|
||||
@SerializedName(value = "catalogId")
|
||||
private long catalogId;
|
||||
|
||||
@SerializedName(value = "dbName")
|
||||
private String dbName;
|
||||
@SerializedName(value = "dbId")
|
||||
private long dbId;
|
||||
|
||||
@SerializedName(value = "ownerName")
|
||||
private String ownerName;
|
||||
@ -57,12 +57,12 @@ public class PlsqlPackage implements Writable {
|
||||
}
|
||||
|
||||
public TPlsqlPackage toThrift() {
|
||||
return new TPlsqlPackage().setName(name).setCatalogName(catalogName).setDbName(dbName).setOwnerName(ownerName)
|
||||
return new TPlsqlPackage().setName(name).setCatalogId(catalogId).setDbId(dbId).setOwnerName(ownerName)
|
||||
.setHeader(header).setBody(body);
|
||||
}
|
||||
|
||||
public static PlsqlPackage fromThrift(TPlsqlPackage pkg) {
|
||||
return new PlsqlPackage(pkg.getName(), pkg.getCatalogName(), pkg.getDbName(), pkg.getOwnerName(),
|
||||
return new PlsqlPackage(pkg.getName(), pkg.getCatalogId(), pkg.getDbId(), pkg.getOwnerName(),
|
||||
pkg.getHeader(), pkg.getBody());
|
||||
}
|
||||
|
||||
|
||||
@ -37,29 +37,29 @@ public class PlsqlProcedureKey implements Writable {
|
||||
@SerializedName(value = "name")
|
||||
private String name;
|
||||
|
||||
@SerializedName(value = "catalogName")
|
||||
private String catalogName;
|
||||
@SerializedName(value = "catalogId")
|
||||
private long catalogId;
|
||||
|
||||
@SerializedName(value = "dbName")
|
||||
private String dbName;
|
||||
@SerializedName(value = "dbId")
|
||||
private long dbId;
|
||||
|
||||
public PlsqlProcedureKey(String name, String catalogName, String dbName) {
|
||||
public PlsqlProcedureKey(String name, long catalogId, long dbId) {
|
||||
this.name = name;
|
||||
this.catalogName = catalogName;
|
||||
this.dbName = dbName;
|
||||
this.catalogId = catalogId;
|
||||
this.dbId = dbId;
|
||||
}
|
||||
|
||||
public TPlsqlProcedureKey toThrift() {
|
||||
return new TPlsqlProcedureKey().setName(name).setCatalogName(catalogName).setDbName(dbName);
|
||||
return new TPlsqlProcedureKey().setName(name).setCatalogId(catalogId).setDbId(dbId);
|
||||
}
|
||||
|
||||
public static PlsqlProcedureKey fromThrift(TPlsqlProcedureKey key) {
|
||||
return new PlsqlProcedureKey(key.getName(), key.getCatalogName(), key.getDbName());
|
||||
return new PlsqlProcedureKey(key.getName(), key.getCatalogId(), key.getDbId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(name, catalogName, dbName);
|
||||
return Objects.hash(name, catalogId, dbId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -67,14 +67,14 @@ public class PlsqlProcedureKey implements Writable {
|
||||
if (!(obj instanceof PlsqlProcedureKey)) {
|
||||
return false;
|
||||
}
|
||||
return Objects.equals(this.name, ((PlsqlProcedureKey) obj).name) && Objects.equals(this.catalogName,
|
||||
((PlsqlProcedureKey) obj).catalogName)
|
||||
&& Objects.equals(this.dbName, ((PlsqlProcedureKey) obj).dbName);
|
||||
return Objects.equals(this.name, ((PlsqlProcedureKey) obj).name) && Objects.equals(this.catalogId,
|
||||
((PlsqlProcedureKey) obj).catalogId)
|
||||
&& Objects.equals(this.dbId, ((PlsqlProcedureKey) obj).dbId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "name:" + name + ", catalogName:" + catalogName + ", dbName:" + dbName;
|
||||
return "name:" + name + ", catalogName:" + catalogId + ", dbId:" + dbId;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -36,11 +36,14 @@ public class PlsqlStoredProcedure implements Writable {
|
||||
@SerializedName(value = "name")
|
||||
private String name;
|
||||
|
||||
@SerializedName(value = "catalogName")
|
||||
private String catalogName;
|
||||
@SerializedName(value = "catalogId")
|
||||
private long catalogId;
|
||||
|
||||
@SerializedName(value = "dbName")
|
||||
private String dbName;
|
||||
@SerializedName(value = "dbId")
|
||||
private long dbId;
|
||||
|
||||
@SerializedName(value = "packageName")
|
||||
private String packageName;
|
||||
|
||||
@SerializedName(value = "ownerName")
|
||||
private String ownerName;
|
||||
@ -49,13 +52,13 @@ public class PlsqlStoredProcedure implements Writable {
|
||||
private String source;
|
||||
|
||||
public TPlsqlStoredProcedure toThrift() {
|
||||
return new TPlsqlStoredProcedure().setName(name).setCatalogName(catalogName).setDbName(dbName)
|
||||
.setOwnerName(ownerName).setSource(source);
|
||||
return new TPlsqlStoredProcedure().setName(name).setCatalogId(catalogId).setDbId(dbId)
|
||||
.setPackageName(packageName).setOwnerName(ownerName).setSource(source);
|
||||
}
|
||||
|
||||
public static PlsqlStoredProcedure fromThrift(TPlsqlStoredProcedure procedure) {
|
||||
return new PlsqlStoredProcedure(procedure.getName(), procedure.getCatalogName(), procedure.getDbName(),
|
||||
procedure.getOwnerName(), procedure.source);
|
||||
return new PlsqlStoredProcedure(procedure.getName(), procedure.getCatalogId(), procedure.getDbId(),
|
||||
procedure.getPackageName(), procedure.getOwnerName(), procedure.source);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -78,18 +78,18 @@ public class DorisPackageRegistry implements PackageRegistry {
|
||||
}
|
||||
|
||||
private PlsqlPackage findPackage(String name) throws TException {
|
||||
return client.getPlsqlPackage(name.toUpperCase(), ConnectContext.get().getCurrentCatalog().getName(),
|
||||
ConnectContext.get().getDatabase());
|
||||
return client.getPlsqlPackage(name.toUpperCase(), ConnectContext.get().getCurrentCatalog().getId(),
|
||||
ConnectContext.get().getCurrentDbId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dropPackage(String name) {
|
||||
client.dropPlsqlPackage(name, ConnectContext.get().getCurrentCatalog().getName(),
|
||||
ConnectContext.get().getDatabase());
|
||||
client.dropPlsqlPackage(name, ConnectContext.get().getCurrentCatalog().getId(),
|
||||
ConnectContext.get().getCurrentDbId());
|
||||
}
|
||||
|
||||
private void savePackage(String name, String header, String body) {
|
||||
client.addPlsqlPackage(name.toUpperCase(), ConnectContext.get().getCurrentCatalog().getName(),
|
||||
ConnectContext.get().getDatabase(), ConnectContext.get().getQualifiedUser(), header, body);
|
||||
client.addPlsqlPackage(name.toUpperCase(), ConnectContext.get().getCurrentCatalog().getId(),
|
||||
ConnectContext.get().getCurrentDbId(), ConnectContext.get().getQualifiedUser(), header, body);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1142,16 +1142,17 @@ struct TRestoreSnapshotResult {
|
||||
|
||||
struct TPlsqlStoredProcedure {
|
||||
1: optional string name
|
||||
2: optional string catalogName
|
||||
3: optional string dbName
|
||||
4: optional string ownerName
|
||||
5: optional string source
|
||||
2: optional i64 catalogId
|
||||
3: optional i64 dbId
|
||||
4: optional string packageName
|
||||
5: optional string ownerName
|
||||
6: optional string source
|
||||
}
|
||||
|
||||
struct TPlsqlPackage {
|
||||
1: optional string name
|
||||
2: optional string catalogName
|
||||
3: optional string dbName
|
||||
2: optional i64 catalogId
|
||||
3: optional i64 dbId
|
||||
4: optional string ownerName
|
||||
5: optional string header
|
||||
6: optional string body
|
||||
@ -1159,8 +1160,8 @@ struct TPlsqlPackage {
|
||||
|
||||
struct TPlsqlProcedureKey {
|
||||
1: optional string name
|
||||
2: optional string catalogName
|
||||
3: optional string dbName
|
||||
2: optional i64 catalogId
|
||||
3: optional i64 dbId
|
||||
}
|
||||
|
||||
struct TAddPlsqlStoredProcedureRequest {
|
||||
|
||||
Reference in New Issue
Block a user