提交 1eb68a7e 编写于 作者: L LonwoLonwo

#10059 add function types clarification; add another call function statement...

#10059 add function types clarification; add another call function statement case; Ru localization; edit typos
上级 2e714ada
......@@ -143,8 +143,8 @@ tree.xmlschemadeps.node.name=Dependencies
meta.org.jkiss.dbeaver.ext.db2.model.DB2Object.name.name=Name
meta.org.jkiss.dbeaver.ext.db2.info.DB2Parameter.dataType.name=Type
meta.org.jkiss.dbeaver.ext.db2.info.DB2Parameter.defferedValue.name=Deffered Value
meta.org.jkiss.dbeaver.ext.db2.info.DB2Parameter.defferedValueFlags.name=Deffered Value Flags
meta.org.jkiss.dbeaver.ext.db2.info.DB2Parameter.defferedValue.name=Deferred Value
meta.org.jkiss.dbeaver.ext.db2.info.DB2Parameter.defferedValueFlags.name=Deferred Value Flags
meta.org.jkiss.dbeaver.ext.db2.info.DB2Parameter.flags.name=Flags
meta.org.jkiss.dbeaver.ext.db2.info.DB2Parameter.name.name=Name
meta.org.jkiss.dbeaver.ext.db2.info.DB2Parameter.value.name=Value
......@@ -212,10 +212,10 @@ meta.org.jkiss.dbeaver.ext.db2.model.DB2Index.uniqueRule.name=Unique Rule
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.colOrder.name=Order
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.colSeq.name=Sequence
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.collationName.name=Collation Name
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.collationSchema.name=Collation Schema
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.collationSchema.name=Collation Schema
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.name.name=Name
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.tableColumn.name=Column
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.virtualCol.name=Virtual?
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.virtualCol.name=Virtual
meta.org.jkiss.dbeaver.ext.db2.model.DB2IndexColumn.virtualColText.name=Virtual Column
meta.org.jkiss.dbeaver.ext.db2.model.DB2MaterializedQueryTable.refreshMode.name=Refresh Mode
......@@ -246,7 +246,7 @@ meta.org.jkiss.dbeaver.ext.db2.model.DB2Package.name.name=Name
meta.org.jkiss.dbeaver.ext.db2.model.DB2Package.owner.name=Owner
meta.org.jkiss.dbeaver.ext.db2.model.DB2Package.ownerType.name=Owner Type
meta.org.jkiss.dbeaver.ext.db2.model.DB2Package.queryOpt.name=Optimisation Class
meta.org.jkiss.dbeaver.ext.db2.model.DB2Package.sqlerror.name=SQLerror
meta.org.jkiss.dbeaver.ext.db2.model.DB2Package.sqlerror.name=SQL Error
meta.org.jkiss.dbeaver.ext.db2.model.DB2Package.staticAsDynamic.name=Static as Dynamic?
meta.org.jkiss.dbeaver.ext.db2.model.DB2Package.sysTimeSensitive.name=System Time Sensitive?
meta.org.jkiss.dbeaver.ext.db2.model.DB2Package.totalSections.name=Total Sections
......@@ -274,6 +274,7 @@ meta.org.jkiss.dbeaver.ext.db2.model.DB2PackageStatement.uniqueId.name=UniqueId
meta.org.jkiss.dbeaver.ext.db2.model.DB2PackageStatement.version.name=Version
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.alterTime.name=Alter Time
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.alterTime.description=Time at which the routine was last altered.
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.createTime.name=Creation Time
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.debugMode.name=Debug Mode
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.description.name=Description
......@@ -286,6 +287,7 @@ meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.jarSignature.name=Jar Signature
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.javaClass.name=Class
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.language.name=Language
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.lastRegenTime.name=Last Regen Time
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.lastRegenTime.description=Time at which the SQL routine packed descriptor was last regenerated.
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.moduleName.name=Module name
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.name.name=Name
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.origin.name=Origin
......@@ -293,12 +295,14 @@ meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.owner.name=Owner
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.ownerType.name=Owner Type
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.parameterStyle.name=Parameter Style
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.resultSets.name=Est. Max nb of Result Sets
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.resultSets.description=Estimated maximum number of result sets.
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.routineId.name=Id
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.routineModuleId.name=Module Id
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.routineName.name=Name
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.schema.name=Schema
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.specificName.name=Specific Name
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.valid.name=Valid
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.procedureType.name=Type
meta.org.jkiss.dbeaver.ext.db2.model.DB2RoutineParm.dataType.name=Type
meta.org.jkiss.dbeaver.ext.db2.model.DB2RoutineParm.dataTypeSchema.name=Type Schema
......@@ -519,14 +523,14 @@ meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.alterTime.name=Alter Time
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.collationName.name=Collation Name
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.collationNameOrderBy.name=Collation Name Order By
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.collationSchema.name=Collation Schema
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.collationSchemaOrderBy.name=Collation Schwma Order By
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.collationSchemaOrderBy.name=Collation Schema Order By
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.compileOptions.name=Compile Options
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.createTime.name=Creation Time
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.description.name=Description
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.event.name=Event
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.eventDelete.name=On Delete?
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.eventInsert.name=On Insert?
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.eventUpdate.name=On Update?
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.eventDelete.name=On Delete
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.eventInsert.name=On Insert
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.eventUpdate.name=On Update
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.funcPath.name=Function Path
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.granularity.name=Granularity
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.lastRegenTime.name=Last Regeneration Time
......@@ -534,7 +538,6 @@ meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.libId.name=LibId
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.name.name=Name
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.owner.name=Owner
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.ownerType.name=Owner Type
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.precompileOptions.name-Precompile Options
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.precompileOptions.name=Precompile Options
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.qualifier.name=Qualifier
meta.org.jkiss.dbeaver.ext.db2.model.DB2Trigger.schema.name=Schema
......@@ -621,7 +624,7 @@ meta.org.jkiss.dbeaver.ext.db2.model.app.DB2ServerApplication.name.name=Name
meta.org.jkiss.dbeaver.ext.db2.model.app.DB2ServerApplication.numAssociatedAgents.name=Nb Associated Agent
meta.org.jkiss.dbeaver.ext.db2.model.app.DB2ServerApplication.sequenceNo.name=Squence No
meta.org.jkiss.dbeaver.ext.db2.model.app.DB2ServerApplication.statusChangeTime.name=Status Change Time
meta.org.jkiss.dbeaver.ext.db2.model.app.DB2ServerApplication.tpmonAccountingString.name=Client Accouting String
meta.org.jkiss.dbeaver.ext.db2.model.app.DB2ServerApplication.tpmonAccountingString.name=Client Accounting String
meta.org.jkiss.dbeaver.ext.db2.model.app.DB2ServerApplication.tpmonClientApplicationName.name=TPMON Client Application Name
meta.org.jkiss.dbeaver.ext.db2.model.app.DB2ServerApplication.tpmonClientUserid.name=TPMON Client User ID
meta.org.jkiss.dbeaver.ext.db2.model.app.DB2ServerApplication.tpmonClientWorkstationNane.name=TPMON Client Workstation Name
......@@ -839,13 +842,13 @@ meta.org.jkiss.dbeaver.ext.db2.model.security.DB2Role.description.name=Descripti
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2Role.id.name=Id
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2Role.name.name=Name
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleAuth.admin.name=Admin?
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleAuth.admin.name=Admin
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleAuth.grantor.name=Grantor
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleAuth.grantorType.name=Grantor Type
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleAuth.name.name=Name
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleAuth.role.name=Role
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleDep.admin.name=Admin?
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleDep.admin.name=Admin
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleDep.grantee.name=Grantee
meta.org.jkiss.dbeaver.ext.db2.model.security.DB2RoleDep.granteeType.name=Grantee Type
tasks.truncate.node.description = Truncate table(s)
......@@ -854,13 +857,13 @@ editor.source.ddl.description =
meta.org.jkiss.dbeaver.ext.db2.tasks.DB2ToolTableTruncateSettings.storageOption.name = Storage
meta.org.jkiss.dbeaver.ext.db2.tasks.DB2ToolTableTruncateSettings.triggerOption.name = Delete Trigger
tasks.reorgcheck.node.name = Reorg Check on Table
tasks.reorgcheck.node.description = Reorg Check on Table
tasks.reorgcheck.node.description = Reorganization check on table
tasks.reorgindex.node.name = Reorg Index
tasks.reorgindex.node.description = Reorg Index
tasks.reorgindex.node.description = Index reorganization
meta.org.jkiss.dbeaver.ext.db2.tasks.DB2ReorgIndexToolSettings.tableAccess.name = Table Access
meta.org.jkiss.dbeaver.ext.db2.tasks.DB2ReorgIndexToolSettings.cleanupOption.name = Option
tasks.runstats.node.name = Runstats on Table
tasks.runstats.node.description = Runstats on Table
tasks.runstats.node.description = Collect table statistics
meta.org.jkiss.dbeaver.ext.db2.tasks.DB2RunstatsToolSettings.columnStat.name = Columns Statistics
meta.org.jkiss.dbeaver.ext.db2.tasks.DB2RunstatsToolSettings.indexStat.name = Indexes Statistics
meta.org.jkiss.dbeaver.ext.db2.tasks.DB2RunstatsToolSettings.tableSampling.name = Table Sampling
......
......@@ -144,3 +144,4 @@ meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.name.name
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.origin.name = Ursprung
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.owner.name = Eigent\u00FCmer
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.ownerType.name = Eigent\u00FCmertyp
meta.org.jkiss.dbeaver.ext.db2.model.DB2Routine.procedureType.name = Typ
......@@ -21,6 +21,8 @@ import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.db2.model.DB2Routine;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.data.DBDBinaryFormatter;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCDatabaseMetaData;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet;
......@@ -108,11 +110,25 @@ public class DB2SQLDialect extends JDBCSQLDialect {
}
}
@Override
protected String getStoredProcedureCallInitialClause(DBSProcedure proc) {
if (proc.getProcedureType() == DBSProcedureType.FUNCTION && proc instanceof DB2Routine && ((DB2Routine) proc).getFunctionType() == DB2Routine.FunctionType.T) {
// Function call is special for table functions
return "SELECT * FROM TABLE (" + proc.getFullyQualifiedName(DBPEvaluationContext.DML);
}
return super.getStoredProcedureCallInitialClause(proc);
}
@NotNull
@Override
protected String getProcedureCallEndClause(DBSProcedure procedure) {
if (procedure.getProcedureType() == DBSProcedureType.FUNCTION) {
// Only "Select from function_name" doesn't work for user-defined functions. See #10059
// Only "Select function_name" doesn't work for user-defined DB2 functions. See #10059
if (procedure instanceof DB2Routine && ((DB2Routine) procedure).getFunctionType() == DB2Routine.FunctionType.T) {
// Start is in getStoredProcedureCallInitialClause
return ")";
}
// This part necessary for scalar functions
return "FROM SYSIBM.SYSDUMMY1";
}
return super.getProcedureCallEndClause(procedure);
......
......@@ -56,6 +56,16 @@ import java.util.Map;
public class DB2Routine extends DB2Object<DBSObject>
implements DBSProcedure, DB2SourceObject, DBPRefreshableObject, DBPUniqueObject {
public enum FunctionType {
C("Column or aggregate"),
R("Row"),
S("Scalar"),
T("Table");
FunctionType(String type) {
}
}
private final DB2RoutineParmsCache parmsCache = new DB2RoutineParmsCache();
private String fullyQualifiedName;
......@@ -89,6 +99,7 @@ public class DB2Routine extends DB2Object<DBSObject>
private String jarSignature;
private String javaClass;
private DB2RoutineValidType valid;
private FunctionType functionType;
// -----------------------
// Constructors
......@@ -131,6 +142,9 @@ public class DB2Routine extends DB2Object<DBSObject>
}
if (db2DataSource.isAtLeastV9_7()) {
this.dialect = JDBCUtils.safeGetString(dbResult, "DIALECT");
if (type == DB2RoutineType.F) {
this.functionType = CommonUtils.valueOf(FunctionType.class, JDBCUtils.safeGetString(dbResult, "FUNCTIONTYPE"));
}
}
if (owner instanceof DB2Schema) {
......@@ -172,6 +186,7 @@ public class DB2Routine extends DB2Object<DBSObject>
}
@Override
@Property(viewable = true, order = 7)
public DBSProcedureType getProcedureType()
{
return type.getProcedureType();
......@@ -197,7 +212,7 @@ public class DB2Routine extends DB2Object<DBSObject>
@Override
public String getUniqueName()
{
// unique name is the "specifiname" column
// unique name is the "specificname" column
return super.getName();
}
......@@ -374,4 +389,7 @@ public class DB2Routine extends DB2Object<DBSObject>
return remarks;
}
public FunctionType getFunctionType() {
return functionType;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册