提交 e5784fdb 编写于 作者: S serge-rider

Merge remote-tracking branch 'origin/devel' into devel

......@@ -38,6 +38,7 @@ import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Locale;
/**
* FireBirdDataSource
......@@ -179,8 +180,9 @@ public class FireBirdMetaModel extends GenericMetaModel
@Override
public boolean isSystemTable(GenericTableBase table) {
final String tableName = table.getName();
return tableName.contains("$"); // [JDBC: Firebird]
String tableName = table.getName();
tableName = tableName.toUpperCase(Locale.ENGLISH);
return tableName.startsWith("RDB$") || tableName.startsWith("MON$"); // [JDBC: Firebird]
}
@Override
......
......@@ -1087,8 +1087,8 @@
categories="sql">
</driver>
<!-- KDB -->
<driver
<!-- KDB - removed as it doesn't work anyway -->
<!--<driver
id="kdb_jdbc"
label="KDB+"
icon="icons/kx_icon.png"
......@@ -1100,7 +1100,7 @@
webURL="https://code.kx.com/q/interfaces/jdbc-client-for-kdb/"
categories="timeseries">
<file type="jar" path="https://github.com/KxSystems/kdb/raw/master/c/jdbc.jar"/>
</driver>
</driver>-->
<!-- Qubole
<driver
......
......@@ -24,7 +24,10 @@ import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.postgresql.PostgreUtils;
import org.jkiss.dbeaver.ext.postgresql.model.*;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreTableColumn;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreTableConstraint;
import org.jkiss.dbeaver.ext.postgresql.model.PostgreTableRegular;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.exec.DBCException;
import org.jkiss.dbeaver.model.exec.jdbc.JDBCResultSet;
......@@ -116,11 +119,21 @@ public class GreenplumTable extends PostgreTableRegular {
private int[] readDistributedColumns(DBRProgressMonitor monitor) throws DBCException {
try (JDBCSession session = DBUtils.openMetaSession(monitor, this, "Read Greenplum table distributed columns")) {
try (JDBCStatement dbStat = session.createStatement()) {
try (JDBCResultSet dbResult = dbStat.executeQuery("SELECT attrnums FROM pg_catalog.gp_distribution_policy WHERE localoid=" + getObjectId())) {
if (dbResult.next()) {
return PostgreUtils.getIntVector(JDBCUtils.safeGetObject(dbResult, 1));
} else {
return null;
if (((GreenplumDataSource)getDataSource()).isGreenplumVersionAtLeast(session.getProgressMonitor(), 6, 0)) {
try (JDBCResultSet dbResult = dbStat.executeQuery("SELECT distkey FROM pg_catalog.gp_distribution_policy WHERE localoid=" + getObjectId())) {
if (dbResult.next()) {
return PostgreUtils.getIntVector(JDBCUtils.safeGetObject(dbResult, 1));
} else {
return null;
}
}
} else {
try (JDBCResultSet dbResult = dbStat.executeQuery("SELECT attrnums FROM pg_catalog.gp_distribution_policy WHERE localoid=" + getObjectId())) {
if (dbResult.next()) {
return PostgreUtils.getIntVector(JDBCUtils.safeGetObject(dbResult, 1));
} else {
return null;
}
}
}
}
......@@ -134,7 +147,7 @@ public class GreenplumTable extends PostgreTableRegular {
try (JDBCStatement dbStat = session.createStatement()) {
try (JDBCResultSet dbResult = dbStat.executeQuery("SELECT policytype FROM pg_catalog.gp_distribution_policy WHERE localoid=" + getObjectId())) {
if (dbResult.next()) {
return JDBCUtils.safeGetString(dbResult, 1).equals("r");
return CommonUtils.equalObjects(JDBCUtils.safeGetString(dbResult, 1), "r");
} else {
return false;
}
......
......@@ -73,6 +73,7 @@ class DataSourceSerializerModern implements DataSourceSerializer
.create();
private boolean passwordReadCanceled = false;
private boolean passwordWriteCanceled = false;
private final DataSourceRegistry registry;
// Secure props.
......@@ -882,9 +883,11 @@ class DataSourceSerializerModern implements DataSourceSerializer
@Nullable String userName,
@Nullable String password) {
assert dataSource != null|| profile != null;
boolean saved = DataSourceRegistry.saveCredentialsInSecuredStorage(
boolean saved = !passwordWriteCanceled&& DataSourceRegistry.saveCredentialsInSecuredStorage(
registry.getProject(), dataSource, subNode, userName, password);
if (!saved) {
passwordWriteCanceled = true;
String topNodeId = profile != null ? "profile:" + profile.getProfileName() : dataSource.getId();
if (subNode == null) subNode = NODE_CONNECTION;
......
......@@ -23,6 +23,7 @@ import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.ViewPart;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.*;
import org.jkiss.dbeaver.ui.UIExecutionQueue;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.dashboard.control.DashboardListViewer;
import org.jkiss.dbeaver.ui.dashboard.model.DashboardContainer;
......@@ -39,7 +40,6 @@ public class DashboardView extends ViewPart implements IDataSourceContainerProvi
private DashboardListViewer dashboardListViewer;
private DashboardViewConfiguration configuration;
private int viewNumber;
private DBPDataSourceContainer dataSourceContainer;
public DashboardView() {
......@@ -52,6 +52,10 @@ public class DashboardView extends ViewPart implements IDataSourceContainerProvi
@Override
public void createPartControl(Composite parent) {
UIExecutionQueue.queueExec(() -> createDashboardControls(parent));
}
private void createDashboardControls(Composite parent) {
try {
String secondaryId = getViewSite().getSecondaryId();
if (CommonUtils.isEmpty(secondaryId)) {
......@@ -59,7 +63,7 @@ public class DashboardView extends ViewPart implements IDataSourceContainerProvi
}
int divPos = secondaryId.lastIndexOf(':');
String dataSourceId = divPos == -1 ? secondaryId : secondaryId.substring(0, divPos);
viewNumber = divPos == -1 ? 0 : CommonUtils.toInt(secondaryId.substring(divPos + 1));
int viewNumber = divPos == -1 ? 0 : CommonUtils.toInt(secondaryId.substring(divPos + 1));
dataSourceContainer = DBUtils.findDataSource(dataSourceId);
if (dataSourceContainer == null) {
......@@ -76,6 +80,8 @@ public class DashboardView extends ViewPart implements IDataSourceContainerProvi
getSite().setSelectionProvider(dashboardListViewer);
parent.layout(true, true);
updateStatus();
} catch (Throwable e) {
log.error("Error initializing dashboard view", e);
......
......@@ -169,7 +169,6 @@
<editor
id="db-logical-structure"
class="org.jkiss.dbeaver.ui.editors.data.VirtualStructureEditor"
objectType="org.jkiss.dbeaver.model.struct.DBSEntity"
main="false"
label="%editor.virtual-structure.name"
description="%editor.virtual-structure.description"
......@@ -177,6 +176,7 @@
type="folder"
embeddable="false"
icon="#association">
<objectType name="org.jkiss.dbeaver.model.struct.rdb.DBSTable"/>
</editor>
</extension>
......
......@@ -118,8 +118,8 @@ import org.jkiss.utils.IOUtils;
import java.io.*;
import java.net.URI;
import java.util.List;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
......@@ -739,7 +739,12 @@ public class SQLEditor extends SQLEditorBase implements
getSite().setSelectionProvider(new DynamicSelectionProvider());
UIExecutionQueue.queueExec(this::createResultTabs);
DBPProject project = getProject();
if (project != null && project.isRegistryLoaded()) {
createResultTabs();
} else {
UIExecutionQueue.queueExec(this::createResultTabs);
}
setAction(ITextEditorActionConstants.SHOW_INFORMATION, null);
//toolTipAction.setEnabled(false);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册