use of org.jkiss.dbeaver.ext.db2.model.DB2Index in project dbeaver by serge-rider.
the class DB2IndexCache method fetchObject.
@Override
protected DB2Index fetchObject(@NotNull JDBCSession session, @NotNull DB2Schema db2Schema, @NotNull JDBCResultSet dbResult) throws SQLException, DBException {
// Look for related table...or nickname...or MQT
String tableOrNicknameSchemaName = JDBCUtils.safeGetStringTrimmed(dbResult, "TABSCHEMA");
String tableOrNicknameName = JDBCUtils.safeGetStringTrimmed(dbResult, "TABNAME");
DB2Schema objectSchema = db2Schema.getDataSource().getSchema(session.getProgressMonitor(), tableOrNicknameSchemaName);
if (objectSchema == null) {
log.error("Schema '" + tableOrNicknameSchemaName + "' not found");
return null;
}
// FIXME: here we cache all tables to avoid spam in table lookup
// FIXME: because we always read all indexes. Make index cache lookup cache
objectSchema.getTables(session.getProgressMonitor());
DB2TableBase db2Table = objectSchema.getTable(session.getProgressMonitor(), tableOrNicknameName);
if (db2Table == null) {
db2Table = DB2Utils.findNicknameBySchemaNameAndName(session.getProgressMonitor(), db2Schema.getDataSource(), tableOrNicknameSchemaName, tableOrNicknameName);
}
if (db2Table == null) {
db2Table = DB2Utils.findMaterializedQueryTableBySchemaNameAndName(session.getProgressMonitor(), db2Schema.getDataSource(), tableOrNicknameSchemaName, tableOrNicknameName);
}
if (db2Table == null) {
log.error("Object '" + tableOrNicknameName + "' not found in schema '" + tableOrNicknameSchemaName + "'");
return null;
}
return new DB2Index(session.getProgressMonitor(), db2Schema, db2Table, dbResult);
}
use of org.jkiss.dbeaver.ext.db2.model.DB2Index in project dbeaver by serge-rider.
the class DB2GranteeAuthCache method fetchObject.
@Override
protected DB2AuthBase fetchObject(@NotNull JDBCSession session, @NotNull DB2Grantee db2Grantee, @NotNull JDBCResultSet resultSet) throws SQLException, DBException {
DB2DataSource db2DataSource = db2Grantee.getDataSource();
DBRProgressMonitor monitor = session.getProgressMonitor();
String objectSchemaName = JDBCUtils.safeGetStringTrimmed(resultSet, "OBJ_SCHEMA");
String objectName = JDBCUtils.safeGetStringTrimmed(resultSet, "OBJ_NAME");
DB2ObjectType objectType = CommonUtils.valueOf(DB2ObjectType.class, JDBCUtils.safeGetString(resultSet, "OBJ_TYPE"));
switch(objectType) {
case COLUMN:
String columnName = JDBCUtils.safeGetStringTrimmed(resultSet, "USAGEAUTH");
DB2TableColumn db2TableColumn = DB2Utils.findColumnBySchemaNameAndTableNameAndName(monitor, db2DataSource, objectSchemaName, objectName, columnName);
return new DB2AuthColumn(monitor, db2Grantee, db2TableColumn, resultSet);
case INDEX:
DB2Index db2Index = DB2Utils.findIndexBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
return new DB2AuthIndex(monitor, db2Grantee, db2Index, resultSet);
case MODULE:
DB2Module db2Module = DB2Utils.findModuleBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
return new DB2AuthModule(monitor, db2Grantee, db2Module, resultSet);
case PACKAGE:
DB2Package db2Package = DB2Utils.findPackageBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
return new DB2AuthPackage(monitor, db2Grantee, db2Package, resultSet);
case PROCEDURE:
// Can be a Function or a Procedure
DB2RoutineType routineType = CommonUtils.valueOf(DB2RoutineType.class, JDBCUtils.safeGetStringTrimmed(resultSet, "USAGEAUTH"));
switch(routineType) {
case F:
DB2Routine db2Udf = DB2Utils.findUDFBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
return new DB2AuthUDF(monitor, db2Grantee, db2Udf, resultSet);
case M:
DB2Routine db2Method = DB2Utils.findMethodBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
return new DB2AuthMethod(monitor, db2Grantee, db2Method, resultSet);
case P:
DB2Routine db2Procedure = DB2Utils.findProcedureBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
return new DB2AuthProcedure(monitor, db2Grantee, db2Procedure, resultSet);
default:
throw new DBException(routineType + " is not a valid DB2RoutineType");
}
case SCHEMA:
DB2Schema db2Schema = db2DataSource.getSchema(monitor, objectName);
return new DB2AuthSchema(monitor, db2Grantee, db2Schema, resultSet);
case SEQUENCE:
DB2Sequence db2Sequence = DB2Utils.findSequenceBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
return new DB2AuthSequence(monitor, db2Grantee, db2Sequence, resultSet);
case TABLE:
// Can be a Table, a View or an MQT..
DB2TableBase db2TableBase = DB2Utils.findTableBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
if (db2TableBase != null) {
return new DB2AuthTable(monitor, db2Grantee, db2TableBase, resultSet);
} else {
db2TableBase = DB2Utils.findViewBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
if (db2TableBase != null) {
return new DB2AuthView(monitor, db2Grantee, db2TableBase, resultSet);
} else {
db2TableBase = DB2Utils.findMQTBySchemaNameAndName(monitor, db2DataSource, objectSchemaName, objectName);
return new DB2AuthMaterializedQueryTable(monitor, db2Grantee, db2TableBase, resultSet);
}
}
case TABLESPACE:
DB2Tablespace db2Tablespace = db2DataSource.getTablespace(monitor, objectName);
return new DB2AuthTablespace(monitor, db2Grantee, db2Tablespace, resultSet);
case VARIABLE:
DB2Variable db2Variable = db2DataSource.getVariable(monitor, objectName);
return new DB2AuthVariable(monitor, db2Grantee, db2Variable, resultSet);
case XML_SCHEMA:
Long xmlSchemaId = Long.valueOf(objectName);
DB2XMLSchema db2XmlSchema = DB2Utils.findXMLSchemaByById(monitor, db2DataSource, xmlSchemaId);
return new DB2AuthXMLSchema(monitor, db2Grantee, db2XmlSchema, resultSet);
default:
throw new DBException("Programming error: " + objectType + " is not supported yet and the SELECT statement must exclude it");
}
}
Aggregations