From c0508bdac0b2b2e4a92295c56a7df0139ee4df23 Mon Sep 17 00:00:00 2001 From: LonwoLonwo Date: Fri, 30 Jul 2021 17:34:42 +0300 Subject: [PATCH] #13379 view triggers reading supported --- .../jkiss/dbeaver/ext/oracle/model/OracleObjectType.java | 6 ++++++ .../org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleObjectType.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleObjectType.java index 06e08b0940..40ddc104cd 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleObjectType.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleObjectType.java @@ -128,6 +128,12 @@ public enum OracleObjectType implements DBSObjectType { @Override public OracleTrigger findObject(DBRProgressMonitor monitor, OracleSchema schema, String objectName) throws DBException { + // First we will try to find a trigger at the tables level + OracleTableTrigger trigger = schema.tableTriggerCache.getObject(monitor, schema, objectName); + if (trigger != null) { + return trigger; + } + // Nope. Now we will try to find a trigger at the schemas level return schema.triggerCache.getObject(monitor, schema, objectName); } }), diff --git a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java index 0a23df0c81..2fc066e162 100644 --- a/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java +++ b/plugins/org.jkiss.dbeaver.ext.oracle/src/org/jkiss/dbeaver/ext/oracle/model/OracleSchema.java @@ -1377,7 +1377,7 @@ public class OracleSchema extends OracleGlobalObject implements DBSSchema, DBPRe OracleUtils.getAdminAllViewPrefix(session.getProgressMonitor(), schema.getDataSource(), "TRIGGERS") + " t, " + OracleUtils.getAdminAllViewPrefix(session.getProgressMonitor(), schema.getDataSource(), "TRIGGER_COLS") + " c" + "\nWHERE t.TABLE_OWNER=?" + (table == null ? "" : " AND t.TABLE_NAME=?") + - " AND t.BASE_OBJECT_TYPE='TABLE' AND t.TABLE_OWNER=c.TABLE_OWNER(+) AND t.TABLE_NAME=c.TABLE_NAME(+)" + + " AND t.BASE_OBJECT_TYPE=" + (table instanceof OracleView ? "'VIEW'" : "'TABLE'") + " AND t.TABLE_OWNER=c.TABLE_OWNER(+) AND t.TABLE_NAME=c.TABLE_NAME(+)" + " AND t.OWNER=c.TRIGGER_OWNER(+) AND t.TRIGGER_NAME=c.TRIGGER_NAME(+)" + "\nORDER BY t.TRIGGER_NAME" ); -- GitLab