diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/qm/meta/QMMConnectionInfo.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/qm/meta/QMMConnectionInfo.java index 6fb431d1e457..027ea29a10e9 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/qm/meta/QMMConnectionInfo.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/qm/meta/QMMConnectionInfo.java @@ -237,12 +237,26 @@ public QMMStatementExecuteInfo beginExecution(DBCStatement statement) isTransactional() && getTransaction() != null ? getTransaction().getCurrentSavepoint() : null; var sqlDialect = statement.getSession().getDataSource().getSQLDialect(); + String schema = null; + String catalog = null; + DBCExecutionContextDefaults contextDefaults = statement.getSession().getExecutionContext().getContextDefaults(); + if (contextDefaults != null) { + if (contextDefaults.getDefaultSchema() != null) { + schema = contextDefaults.getDefaultSchema().getName(); + } + if (contextDefaults.getDefaultCatalog() != null) { + catalog = contextDefaults.getDefaultCatalog().getName(); + } + } return this.executionStack = new QMMStatementExecuteInfo( stat, savepoint, queryString, this.executionStack, - sqlDialect); + sqlDialect, + schema, + catalog + ); } else { return null; } diff --git a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/qm/meta/QMMStatementExecuteInfo.java b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/qm/meta/QMMStatementExecuteInfo.java index 249acbe5688f..016eee4a6563 100644 --- a/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/qm/meta/QMMStatementExecuteInfo.java +++ b/plugins/org.jkiss.dbeaver.model/src/org/jkiss/dbeaver/model/qm/meta/QMMStatementExecuteInfo.java @@ -17,6 +17,7 @@ package org.jkiss.dbeaver.model.qm.meta; +import org.jkiss.code.Nullable; import org.jkiss.dbeaver.model.exec.DBCExecutionPurpose; import org.jkiss.dbeaver.model.sql.SQLDialect; @@ -41,6 +42,10 @@ public class QMMStatementExecuteInfo extends QMMObject { private long fetchEndTime; private boolean transactional; + @Nullable + private final String schema; + @Nullable + private final String catalog; private transient QMMStatementExecuteInfo previous; @@ -49,13 +54,17 @@ public class QMMStatementExecuteInfo extends QMMObject { QMMTransactionSavepointInfo savepoint, String queryString, QMMStatementExecuteInfo previous, - SQLDialect sqlDialect) + SQLDialect sqlDialect, + @Nullable String schema, + @Nullable String catalog) { super(QMMetaObjectType.STATEMENT_EXECUTE_INFO); this.statement = statement; this.previous = previous; this.savepoint = savepoint; this.queryString = queryString; + this.schema = schema; + this.catalog = catalog; if (savepoint != null) { savepoint.setLastExecute(this); } @@ -66,7 +75,20 @@ public class QMMStatementExecuteInfo extends QMMObject { } } - public QMMStatementExecuteInfo(long openTime, long closeTime, QMMStatementInfo stmt, String queryString, long rowCount, int errorCode, String errorMessage, long fetchBeginTime, long fetchEndTime, boolean transactional) { + public QMMStatementExecuteInfo( + long openTime, + long closeTime, + QMMStatementInfo stmt, + String queryString, + long rowCount, + int errorCode, + String errorMessage, + long fetchBeginTime, + long fetchEndTime, + boolean transactional, + @Nullable String schema, + @Nullable String catalog + ) { super(QMMetaObjectType.STATEMENT_EXECUTE_INFO, openTime, closeTime); this.statement = stmt; this.queryString = queryString; @@ -76,6 +98,8 @@ public QMMStatementExecuteInfo(long openTime, long closeTime, QMMStatementInfo s this.fetchBeginTime = fetchBeginTime; this.fetchEndTime = fetchEndTime; this.transactional = transactional; + this.schema = schema; + this.catalog = catalog; } void close(long rowCount, Throwable error) @@ -155,6 +179,16 @@ public long getFetchEndTime() return fetchEndTime; } + @Nullable + public String getSchema() { + return schema; + } + + @Nullable + public String getCatalog() { + return catalog; + } + public boolean isFetching() { return fetchBeginTime > 0 && fetchEndTime == 0;