Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CB-4793. Add schema and catalog to database, add migration #30226

Merged
merged 7 commits into from
May 21, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -235,12 +235,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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;

Expand All @@ -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);
}
Expand All @@ -66,7 +75,19 @@ 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
DenisSinelnikov marked this conversation as resolved.
Show resolved Hide resolved
) {
super(QMMetaObjectType.STATEMENT_EXECUTE_INFO, openTime, closeTime);
this.statement = stmt;
this.queryString = queryString;
Expand All @@ -76,6 +97,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)
Expand Down Expand Up @@ -155,6 +178,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;
Expand Down