提交 45bc630b 编写于 作者: S Serge Rider

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


Former-commit-id: 85caa6f6
...@@ -27,6 +27,8 @@ pref.page.name.sql.editor = \u0420\u0435\u0434\u0430\u043A\u0442\u04 ...@@ -27,6 +27,8 @@ pref.page.name.sql.editor = \u0420\u0435\u0434\u0430\u043A\u0442\u04
pref.page.name.sql.execute = \u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 pref.page.name.sql.execute = \u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432
pref.page.name.sql.format = \u0424\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 pref.page.name.sql.format = \u0424\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435
pref.page.name.entity.editor = \u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432 pref.page.name.entity.editor = \u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432
pref.page.name.sql.completion = \u0414\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 SQL
pref.page.name.sql.resources = \u0421\u043A\u0440\u0438\u043F\u0442\u044B
productName = DBeaver productName = DBeaver
......
...@@ -93,10 +93,11 @@ public class SQLServerMetaModel extends GenericMetaModel implements DBCQueryTran ...@@ -93,10 +93,11 @@ public class SQLServerMetaModel extends GenericMetaModel implements DBCQueryTran
if (!isSqlServer()) { if (!isSqlServer()) {
// #4378 // #4378
GenericDataSource dataSource = container.getDataSource(); GenericDataSource dataSource = container.getDataSource();
String dbName = DBUtils.getQuotedIdentifier(container.getParentObject());
try (JDBCSession session = DBUtils.openMetaSession(monitor, container, "Synase procedure list")) { try (JDBCSession session = DBUtils.openMetaSession(monitor, container, "Synase procedure list")) {
try (JDBCPreparedStatement dbStat = session.prepareStatement( try (JDBCPreparedStatement dbStat = session.prepareStatement(
"select distinct so.name as proc_name,su.name as schema_name,so.loginame as login_name\n" + "select distinct so.name as proc_name,su.name as schema_name,so.loginame as login_name\n" +
"from sysobjects so, sysusers su\n" + "from " + dbName + ".dbo.sysobjects so, "+ dbName + ".dbo.sysusers su\n" +
"where so.type = 'P'\n" + "where so.type = 'P'\n" +
"and su.uid = so.uid\n" + "and su.uid = so.uid\n" +
"and su.name=?")) "and su.name=?"))
...@@ -382,7 +383,7 @@ public class SQLServerMetaModel extends GenericMetaModel implements DBCQueryTran ...@@ -382,7 +383,7 @@ public class SQLServerMetaModel extends GenericMetaModel implements DBCQueryTran
@Override @Override
public boolean supportsSynonyms(GenericDataSource dataSource) { public boolean supportsSynonyms(GenericDataSource dataSource) {
return true; return isSqlServer();
} }
@Override @Override
......
...@@ -162,7 +162,11 @@ class MySQLExportWizard extends AbstractImportExportWizard<MySQLDatabaseExportIn ...@@ -162,7 +162,11 @@ class MySQLExportWizard extends AbstractImportExportWizard<MySQLDatabaseExportIn
cmd.add("--routines"); //$NON-NLS-1$ cmd.add("--routines"); //$NON-NLS-1$
} }
} }
if (addDropStatements) cmd.add("--add-drop-table"); //$NON-NLS-1$ if (addDropStatements) {
cmd.add("--add-drop-table"); //$NON-NLS-1$
} else {
cmd.add("--skip-add-drop-table"); //$NON-NLS-1$
}
if (disableKeys) cmd.add("--disable-keys"); //$NON-NLS-1$ if (disableKeys) cmd.add("--disable-keys"); //$NON-NLS-1$
if (extendedInserts) { if (extendedInserts) {
cmd.add("--extended-insert"); //$NON-NLS-1$ cmd.add("--extended-insert"); //$NON-NLS-1$
......
...@@ -68,7 +68,7 @@ public enum OracleObjectType implements DBSObjectType { ...@@ -68,7 +68,7 @@ public enum OracleObjectType implements DBSObjectType {
JOB_CLASS("JOB CLASS", null, DBSObject.class, null), JOB_CLASS("JOB CLASS", null, DBSObject.class, null),
LIBRARY("LIBRARY", null, DBSObject.class, null), LIBRARY("LIBRARY", null, DBSObject.class, null),
LOB("CONTENT", null, DBSObject.class, null), LOB("CONTENT", null, DBSObject.class, null),
MATERIALIZED_VIEW("MATERIALIZED VIEW", null, DBSObject.class, null), MATERIALIZED_VIEW("MATERIALIZED VIEW", DBIcon.TREE_VIEW, DBSObject.class, null),
OPERATOR("OPERATOR", null, DBSObject.class, null), OPERATOR("OPERATOR", null, DBSObject.class, null),
PACKAGE("PACKAGE", DBIcon.TREE_PACKAGE, OraclePackage.class, new ObjectFinder() { PACKAGE("PACKAGE", DBIcon.TREE_PACKAGE, OraclePackage.class, new ObjectFinder() {
@Override @Override
......
...@@ -75,7 +75,6 @@ public class OracleStructureAssistant implements DBSStructureAssistant ...@@ -75,7 +75,6 @@ public class OracleStructureAssistant implements DBSStructureAssistant
OracleObjectType.INDEX, OracleObjectType.INDEX,
OracleObjectType.PROCEDURE, OracleObjectType.PROCEDURE,
OracleObjectType.SEQUENCE, OracleObjectType.SEQUENCE,
OracleObjectType.SYNONYM,
}; };
} }
...@@ -239,13 +238,17 @@ public class OracleStructureAssistant implements DBSStructureAssistant ...@@ -239,13 +238,17 @@ public class OracleStructureAssistant implements DBSStructureAssistant
return; return;
} }
// Always search for synonyms // Always search for synonyms
//objectTypeClause.append(",'").append(OracleObjectType.SYNONYM.getTypeName()).append("'"); objectTypeClause.append(",'").append(OracleObjectType.SYNONYM.getTypeName()).append("'");
// Seek for objects (join with public synonyms) // Seek for objects (join with public synonyms)
try (JDBCPreparedStatement dbStat = session.prepareStatement( try (JDBCPreparedStatement dbStat = session.prepareStatement(
"SELECT " + OracleUtils.getSysCatalogHint((OracleDataSource) session.getDataSource()) + " DISTINCT OWNER,OBJECT_NAME,OBJECT_TYPE FROM ALL_OBJECTS WHERE " + "SELECT " + OracleUtils.getSysCatalogHint((OracleDataSource) session.getDataSource()) + " DISTINCT OWNER,OBJECT_NAME,OBJECT_TYPE FROM (SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM ALL_OBJECTS WHERE " +
"OBJECT_TYPE IN (" + objectTypeClause + ") AND OBJECT_NAME LIKE ? " + "OBJECT_TYPE IN (" + objectTypeClause + ") AND OBJECT_NAME LIKE ? " +
(schema == null ? "" : " AND OWNER=?") + (schema == null ? "" : " AND OWNER=?") +
"UNION ALL\n" +
"SELECT " + OracleUtils.getSysCatalogHint((OracleDataSource) session.getDataSource()) + " O.OWNER,O.OBJECT_NAME,O.OBJECT_TYPE\n" +
"FROM ALL_SYNONYMS S,ALL_OBJECTS O\n" +
"WHERE O.OWNER=S.TABLE_OWNER AND O.OBJECT_NAME=S.TABLE_NAME AND S.OWNER='PUBLIC' AND S.SYNONYM_NAME LIKE ?)" +
"\nORDER BY OBJECT_NAME")) { "\nORDER BY OBJECT_NAME")) {
if (!caseSensitive) { if (!caseSensitive) {
objectNameMask = objectNameMask.toUpperCase(); objectNameMask = objectNameMask.toUpperCase();
...@@ -254,6 +257,7 @@ public class OracleStructureAssistant implements DBSStructureAssistant ...@@ -254,6 +257,7 @@ public class OracleStructureAssistant implements DBSStructureAssistant
if (schema != null) { if (schema != null) {
dbStat.setString(2, schema.getName()); dbStat.setString(2, schema.getName());
} }
dbStat.setString(schema != null ? 3 : 2, objectNameMask);
dbStat.setFetchSize(DBConstants.METADATA_FETCH_SIZE); dbStat.setFetchSize(DBConstants.METADATA_FETCH_SIZE);
try (JDBCResultSet dbResult = dbStat.executeQuery()) { try (JDBCResultSet dbResult = dbStat.executeQuery()) {
while (objects.size() < maxResults && dbResult.next()) { while (objects.size() < maxResults && dbResult.next()) {
...@@ -264,7 +268,7 @@ public class OracleStructureAssistant implements DBSStructureAssistant ...@@ -264,7 +268,7 @@ public class OracleStructureAssistant implements DBSStructureAssistant
final String objectName = JDBCUtils.safeGetString(dbResult, "OBJECT_NAME"); final String objectName = JDBCUtils.safeGetString(dbResult, "OBJECT_NAME");
final String objectTypeName = JDBCUtils.safeGetString(dbResult, "OBJECT_TYPE"); final String objectTypeName = JDBCUtils.safeGetString(dbResult, "OBJECT_TYPE");
final OracleObjectType objectType = OracleObjectType.getByType(objectTypeName); final OracleObjectType objectType = OracleObjectType.getByType(objectTypeName);
if (objectType != null && objectType.isBrowsable() && oracleObjectTypes.contains(objectType)) { if (objectType != null && objectType != OracleObjectType.SYNONYM && objectType.isBrowsable() && oracleObjectTypes.contains(objectType)) {
OracleSchema objectSchema = dataSource.getSchema(session.getProgressMonitor(), schemaName); OracleSchema objectSchema = dataSource.getSchema(session.getProgressMonitor(), schemaName);
if (objectSchema == null) { if (objectSchema == null) {
log.debug("Schema '" + schemaName + "' not found. Probably was filtered"); log.debug("Schema '" + schemaName + "' not found. Probably was filtered");
......
...@@ -57,6 +57,9 @@ meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.precision.name=\u04 ...@@ -57,6 +57,9 @@ meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.precision.name=\u04
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.precision.description= meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.precision.description=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.required.name=\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.required.name=\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.required.description=\u0412 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0435 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0445\u0440\u0430\u043D\u0438\u0442\u044C\u0441\u044F NULL meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.required.description=\u0412 \u043E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0439 \u043A\u043E\u043B\u043E\u043D\u043A\u0435 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0445\u0440\u0430\u043D\u0438\u0442\u044C\u0441\u044F NULL
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.scale.name=\u041C\u0430\u0441\u0448\u0442\u0430\u0431
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.identity.name=\u0418\u0434\u0435\u043D\u0442\u0438\u0447\u043D\u043E\u0441\u0442\u044C
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAttribute.identity.description=\u0410\u0442\u0440\u0438\u0431\u0443\u0442 \u0438\u0434\u0435\u043D\u0442\u0438\u0447\u043D\u043E\u0441\u0442\u0438 (\u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043B\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E)
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.canLogin.name=\u041F\u0440\u0430\u0432\u043E \u0432\u0445\u043E\u0434\u0430 meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.canLogin.name=\u041F\u0440\u0430\u0432\u043E \u0432\u0445\u043E\u0434\u0430
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.canLogin.description= meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.canLogin.description=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.connLimit.name=\u041A\u0432\u043E\u0442\u0430 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439 meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreRole.connLimit.name=\u041A\u0432\u043E\u0442\u0430 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0439
...@@ -271,8 +274,10 @@ meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.superTables.name=\u041D ...@@ -271,8 +274,10 @@ meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.superTables.name=\u041D
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.superTables.description= meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.superTables.description=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.tablespace.name=\u0422\u0430\u0431\u043B\u0438\u0447\u043D\u043E\u0435 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.tablespace.name=\u0422\u0430\u0431\u043B\u0438\u0447\u043D\u043E\u0435 \u043F\u0440\u043E\u0441\u0442\u0440\u0430\u043D\u0441\u0442\u0432\u043E
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.tablespace.description= meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTable.tablespace.description=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.objectId.name=Object ID meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.objectId.name=ID \u043E\u0431\u044A\u0435\u043A\u0442\u0430
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.objectId.description=ID meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.objectId.description=ID
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.relOptions.name=\u0414\u043E\u043F\u043E\u043B\u043D\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0435 \u043E\u043F\u0446\u0438\u0438
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.relOptions.description=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B, \u043E\u0442\u043D\u043E\u0441\u044F\u0449\u0438\u0435\u0441\u044F \u043A \u043C\u0435\u0442\u043E\u0434\u0443 \u0434\u043E\u0441\u0442\u0443\u043F\u0430, \u0442\u0430\u043A\u0438\u0435 \u043A\u0430\u043A \u0441\u0442\u0440\u043E\u043A\u0438 "keyword=value
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.owner.name=\u0412\u043B\u0430\u0434\u0435\u043B\u0435\u0446 meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.owner.name=\u0412\u043B\u0430\u0434\u0435\u043B\u0435\u0446
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.owner.description=\u0412\u043B\u0430\u0434\u0435\u043B\u0435\u0446 (\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C, \u0441\u043E\u0437\u0434\u0430\u0432\u0448\u0438\u0439 \u0442\u0430\u0431\u043B\u0438\u0446\u0443) meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.owner.description=\u0412\u043B\u0430\u0434\u0435\u043B\u0435\u0446 (\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C, \u0441\u043E\u0437\u0434\u0430\u0432\u0448\u0438\u0439 \u0442\u0430\u0431\u043B\u0438\u0446\u0443)
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.description.name=\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase.description.name=\u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439
......
...@@ -21,6 +21,9 @@ import org.eclipse.osgi.util.NLS; ...@@ -21,6 +21,9 @@ import org.eclipse.osgi.util.NLS;
public class EditorsMessages extends NLS { public class EditorsMessages extends NLS {
static final String BUNDLE_NAME = "org.jkiss.dbeaver.ui.editors.internal.EditorsResources"; //$NON-NLS-1$ static final String BUNDLE_NAME = "org.jkiss.dbeaver.ui.editors.internal.EditorsResources"; //$NON-NLS-1$
public static String dialog_struct_attribute_edit_page_header_edit_attribute;
public static String dialog_struct_attribute_edit_page_label_text_name;
public static String dialog_struct_attribute_edit_page_label_text_properties;
public static String dialog_struct_columns_select_error_load_columns_message; public static String dialog_struct_columns_select_error_load_columns_message;
public static String dialog_struct_columns_select_error_load_columns_title; public static String dialog_struct_columns_select_error_load_columns_title;
public static String dialog_struct_columns_select_group_columns; public static String dialog_struct_columns_select_group_columns;
......
dialog_struct_attribute_edit_page_header_edit_attribute=Edit attribute {0}
dialog_struct_attribute_edit_page_label_text_name=Name
dialog_struct_attribute_edit_page_label_text_properties=Properties
dialog_struct_columns_select_column = Column dialog_struct_columns_select_column = Column
dialog_struct_columns_type = Type dialog_struct_columns_type = Type
dialog_struct_columns_select_error_load_columns_message = Error loading table columns dialog_struct_columns_select_error_load_columns_message = Error loading table columns
......
dialog_struct_attribute_edit_page_header_edit_attribute=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0430\u0442\u0440\u0438\u0431\u0443\u0442 {0}
dialog_struct_attribute_edit_page_label_text_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435
dialog_struct_attribute_edit_page_label_text_properties=\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430
dialog_struct_columns_select_column = \u041A\u043E\u043B\u043E\u043D\u043A\u0430 dialog_struct_columns_select_column = \u041A\u043E\u043B\u043E\u043D\u043A\u0430
dialog_struct_columns_select_error_load_columns_message = \u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u0442\u0430\u0431\u043B\u0438\u0446\u044B dialog_struct_columns_select_error_load_columns_message = \u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u043A\u043E\u043B\u043E\u043D\u043E\u043A \u0442\u0430\u0431\u043B\u0438\u0446\u044B
dialog_struct_columns_select_error_load_columns_title = \u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043A\u043E\u043B\u043E\u043D\u043E\u043A dialog_struct_columns_select_error_load_columns_title = \u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u043A\u043E\u043B\u043E\u043D\u043E\u043A
......
...@@ -18,6 +18,7 @@ package org.jkiss.dbeaver.ui.editors.object.struct; ...@@ -18,6 +18,7 @@ package org.jkiss.dbeaver.ui.editors.object.struct;
import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.GridLayout;
...@@ -39,6 +40,7 @@ import org.jkiss.dbeaver.runtime.properties.ObjectPropertyDescriptor; ...@@ -39,6 +40,7 @@ import org.jkiss.dbeaver.runtime.properties.ObjectPropertyDescriptor;
import org.jkiss.dbeaver.runtime.properties.PropertySourceAbstract; import org.jkiss.dbeaver.runtime.properties.PropertySourceAbstract;
import org.jkiss.dbeaver.runtime.properties.PropertySourceEditable; import org.jkiss.dbeaver.runtime.properties.PropertySourceEditable;
import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.dbeaver.ui.editors.internal.EditorsMessages;
import org.jkiss.dbeaver.ui.properties.PropertyTreeViewer; import org.jkiss.dbeaver.ui.properties.PropertyTreeViewer;
public class AttributeEditPage extends BaseObjectEditPage { public class AttributeEditPage extends BaseObjectEditPage {
...@@ -49,7 +51,7 @@ public class AttributeEditPage extends BaseObjectEditPage { ...@@ -49,7 +51,7 @@ public class AttributeEditPage extends BaseObjectEditPage {
public AttributeEditPage(@Nullable DBECommandContext commandContext, @NotNull DBSEntityAttribute attribute) public AttributeEditPage(@Nullable DBECommandContext commandContext, @NotNull DBSEntityAttribute attribute)
{ {
super("Edit attribute " + DBUtils.getObjectFullName(attribute, DBPEvaluationContext.UI)); super(NLS.bind(EditorsMessages.dialog_struct_attribute_edit_page_header_edit_attribute, DBUtils.getObjectFullName(attribute, DBPEvaluationContext.UI)));
this.commandContext = commandContext; this.commandContext = commandContext;
this.attribute = attribute; this.attribute = attribute;
} }
...@@ -61,14 +63,14 @@ public class AttributeEditPage extends BaseObjectEditPage { ...@@ -61,14 +63,14 @@ public class AttributeEditPage extends BaseObjectEditPage {
GridData gd = new GridData(GridData.FILL_HORIZONTAL); GridData gd = new GridData(GridData.FILL_HORIZONTAL);
propsGroup.setLayoutData(gd); propsGroup.setLayoutData(gd);
final Text nameText = UIUtils.createLabelText(propsGroup, "Name", attribute.getName()); //$NON-NLS-2$ final Text nameText = UIUtils.createLabelText(propsGroup, EditorsMessages.dialog_struct_attribute_edit_page_label_text_name, attribute.getName()); //$NON-NLS-2$
nameText.addModifyListener(e -> { nameText.addModifyListener(e -> {
if (attribute instanceof DBPNamedObject2) { if (attribute instanceof DBPNamedObject2) {
((DBPNamedObject2) attribute).setName(DBObjectNameCaseTransformer.transformName(attribute.getDataSource(), nameText.getText())); ((DBPNamedObject2) attribute).setName(DBObjectNameCaseTransformer.transformName(attribute.getDataSource(), nameText.getText()));
} }
}); });
UIUtils.createControlLabel(propsGroup, "Properties").setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); UIUtils.createControlLabel(propsGroup, EditorsMessages.dialog_struct_attribute_edit_page_label_text_properties).setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
propertyViewer = new PropertyTreeViewer(propsGroup, SWT.BORDER); propertyViewer = new PropertyTreeViewer(propsGroup, SWT.BORDER);
gd = new GridData(GridData.FILL_BOTH); gd = new GridData(GridData.FILL_BOTH);
gd.widthHint = 400; gd.widthHint = 400;
......
...@@ -391,6 +391,8 @@ public class PlainTextPresentation extends AbstractPresentation implements IAdap ...@@ -391,6 +391,8 @@ public class PlainTextPresentation extends AbstractPresentation implements IAdap
} }
} }
StringBuilder fixBuffer = new StringBuilder();
private String getCellString(ResultSetModel model, DBDAttributeBinding attr, ResultSetRow row, DBDDisplayFormat displayFormat) { private String getCellString(ResultSetModel model, DBDAttributeBinding attr, ResultSetRow row, DBDDisplayFormat displayFormat) {
Object cellValue = model.getCellValue(attr, row); Object cellValue = model.getCellValue(attr, row);
if (cellValue instanceof DBDValueError) { if (cellValue instanceof DBDValueError) {
...@@ -404,10 +406,29 @@ public class PlainTextPresentation extends AbstractPresentation implements IAdap ...@@ -404,10 +406,29 @@ public class PlainTextPresentation extends AbstractPresentation implements IAdap
{ {
displayString = DBConstants.NULL_VALUE_LABEL; displayString = DBConstants.NULL_VALUE_LABEL;
} }
return displayString
.replace('\n', TextUtils.PARAGRAPH_CHAR) fixBuffer.setLength(0);
.replace("\r", "") for (int i = 0; i < displayString.length(); i++) {
.replace((char)0, ' '); char c = displayString.charAt(i);
switch (c) {
case '\n':
c = TextUtils.PARAGRAPH_CHAR;
break;
case '\r':
continue;
case 0:
case 255:
case '\t':
c = ' ';
break;
}
if (c < ' ' || (c > 127 && c < 255)) {
c = ' ';
}
fixBuffer.append(c);
}
return fixBuffer.toString();
} }
private void printRecord() { private void printRecord() {
......
...@@ -217,7 +217,7 @@ public class PrefPageResultSetPresentation extends TargetPrefPage ...@@ -217,7 +217,7 @@ public class PrefPageResultSetPresentation extends TargetPrefPage
store.setValue(ResultSetPreferences.RESULT_TEXT_VALUE_FORMAT, textValueFormat.getSelection().name()); store.setValue(ResultSetPreferences.RESULT_TEXT_VALUE_FORMAT, textValueFormat.getSelection().name());
store.setValue(ResultSetPreferences.RESULT_TEXT_SHOW_NULLS, showNulls.getSelection()); store.setValue(ResultSetPreferences.RESULT_TEXT_SHOW_NULLS, showNulls.getSelection());
store.setValue(ResultSetPreferences.RESULT_TEXT_DELIMITER_LEADING, textDelimiterLeading.getSelection()); store.setValue(ResultSetPreferences.RESULT_TEXT_DELIMITER_LEADING, textDelimiterLeading.getSelection());
store.setValue(ResultSetPreferences.RESULT_TEXT_DELIMITER_TRAILING, textDelimiterLeading.getSelection()); store.setValue(ResultSetPreferences.RESULT_TEXT_DELIMITER_TRAILING, textDelimiterTrailing.getSelection());
store.setValue(ResultSetPreferences.RESULT_TEXT_EXTRA_SPACES, textExtraSpaces.getSelection()); store.setValue(ResultSetPreferences.RESULT_TEXT_EXTRA_SPACES, textExtraSpaces.getSelection());
} catch (Exception e) { } catch (Exception e) {
log.warn(e); log.warn(e);
......
...@@ -29,6 +29,12 @@ sql.convert.label.keep.formatting.discription = Keeps original formatting (white ...@@ -29,6 +29,12 @@ sql.convert.label.keep.formatting.discription = Keeps original formatting (white
sql.convert.label.line.delimiter.name = Line delimiter sql.convert.label.line.delimiter.name = Line delimiter
sql.convert.label.line.delimiter.discription = Delimiter for source code lines. Usually \\n or space sql.convert.label.line.delimiter.discription = Delimiter for source code lines. Usually \\n or space
sql.convert.label.line.delimiter.delphi.discription = Delimiter for source code lines. Usually #13#10 or space sql.convert.label.line.delimiter.delphi.discription = Delimiter for source code lines. Usually #13#10 or space
sql.formatter.default.name = Default formatter
sql.formatter.default.tip = Default SQL formatter
sql.formatter.compact.name = Compact formatter
sql.formatter.compact.tip = Compact SQL formatter. Similar to default formatter but with more compact output
sql.formatter.external.name = External formatter
sql.formatter.external.tip = External formatter. Uses configurable command-line executable to format SQL queries
column.org.jkiss.dbeaver.ui.editors.columns.script.position.name = Script position column.org.jkiss.dbeaver.ui.editors.columns.script.position.name = Script position
......
...@@ -86,3 +86,10 @@ sql.convert.label.keep.formatting.discription = \u ...@@ -86,3 +86,10 @@ sql.convert.label.keep.formatting.discription = \u
sql.convert.label.line.delimiter.name = \u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0441\u0442\u0440\u043E\u043A sql.convert.label.line.delimiter.name = \u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0441\u0442\u0440\u043E\u043A
sql.convert.label.line.delimiter.discription = \u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0441\u0442\u0440\u043E\u043A \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430. \u041E\u0431\u044B\u0447\u043D\u043E \\n \u0438\u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B sql.convert.label.line.delimiter.discription = \u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0441\u0442\u0440\u043E\u043A \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430. \u041E\u0431\u044B\u0447\u043D\u043E \\n \u0438\u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B
sql.convert.label.line.delimiter.delphi.discription = \u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0441\u0442\u0440\u043E\u043A \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430. \u041E\u0431\u044B\u0447\u043D\u043E \#13#10 \u0438\u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B sql.convert.label.line.delimiter.delphi.discription = \u0420\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C \u0441\u0442\u0440\u043E\u043A \u0438\u0441\u0445\u043E\u0434\u043D\u043E\u0433\u043E \u043A\u043E\u0434\u0430. \u041E\u0431\u044B\u0447\u043D\u043E \#13#10 \u0438\u043B\u0438 \u043F\u0440\u043E\u0431\u0435\u043B
sql.formatter.default.name = \u0424\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
sql.formatter.default.tip = SQL \u0444\u043E\u0440\u043C\u0430\u0442\u0435\u0440 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E
sql.formatter.compact.name = \u041A\u043E\u043C\u043F\u0430\u043A\u0442\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0430\u0442\u0435\u0440
sql.formatter.compact.tip = \u041A\u043E\u043C\u043F\u0430\u043A\u0442\u043D\u044B\u0439 SQL \u0444\u043E\u0440\u043C\u0430\u0442\u0435\u0440. \u0410\u043D\u0430\u043B\u043E\u0433\u0438\u0447\u043D\u043E \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044E \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E, \u043D\u043E \u0441 \u0431\u043E\u043B\u0435\u0435 \u043A\u043E\u043C\u043F\u0430\u043A\u0442\u043D\u044B\u043C \u0432\u044B\u0445\u043E\u0434\u043E\u043C
sql.formatter.external.name = \u0412\u043D\u0435\u0448\u043D\u0438\u0439 \u0444\u043E\u0440\u043C\u0430\u0442\u0435\u0440
sql.formatter.external.tip = \u0412\u043D\u0435\u0448\u043D\u0438\u0439 \u0444\u043E\u0440\u043C\u0430\u0442\u0435\u0440. \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u043D\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043C\u044B\u0439 \u0438\u0441\u043F\u043E\u043B\u043D\u044F\u0435\u043C\u044B\u0439 \u0444\u0430\u0439\u043B \u043A\u043E\u043C\u0430\u043D\u0434\u043D\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0434\u043B\u044F \u0444\u043E\u0440\u043C\u0430\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 SQL
...@@ -40,9 +40,9 @@ ...@@ -40,9 +40,9 @@
</extension> </extension>
<extension point="org.jkiss.dbeaver.sqlFormatter"> <extension point="org.jkiss.dbeaver.sqlFormatter">
<formatter id="default" class="org.jkiss.dbeaver.model.sql.format.tokenized.SQLFormatterTokenized" configurerClass="org.jkiss.dbeaver.ui.editors.sql.format.tokenized.SQLTokenizedFormatterConfigurationPage" label="Default formatter" description="Default SQL formatter"/> <formatter id="default" class="org.jkiss.dbeaver.model.sql.format.tokenized.SQLFormatterTokenized" configurerClass="org.jkiss.dbeaver.ui.editors.sql.format.tokenized.SQLTokenizedFormatterConfigurationPage" label="%sql.formatter.default.name" description="%sql.formatter.default.tip"/>
<formatter id="compact" class="org.jkiss.dbeaver.model.sql.format.tokenized.SQLFormatterCompact" configurerClass="org.jkiss.dbeaver.ui.editors.sql.format.tokenized.SQLTokenizedFormatterConfigurationPage" label="Compact formatter" description="Compact SQL formatter. Similar to default formatter but with more compact output"/> <formatter id="compact" class="org.jkiss.dbeaver.model.sql.format.tokenized.SQLFormatterCompact" configurerClass="org.jkiss.dbeaver.ui.editors.sql.format.tokenized.SQLTokenizedFormatterConfigurationPage" label="%sql.formatter.compact.name" description="%sql.formatter.compact.tip"/>
<formatter id="external" class="org.jkiss.dbeaver.model.sql.format.external.SQLFormatterExternal" configurerClass="org.jkiss.dbeaver.ui.editors.sql.format.SQLExternalFormatterConfigurationPage" label="External formatter" description="External formatter. Uses configurable command-line executable to format SQL queries"/> <formatter id="external" class="org.jkiss.dbeaver.model.sql.format.external.SQLFormatterExternal" configurerClass="org.jkiss.dbeaver.ui.editors.sql.format.SQLExternalFormatterConfigurationPage" label="%sql.formatter.external.name" description="%sql.formatter.external.tip"/>
</extension> </extension>
<extension point="org.jkiss.dbeaver.sqlCommand"> <extension point="org.jkiss.dbeaver.sqlCommand">
......
...@@ -2186,9 +2186,9 @@ public class SQLEditor extends SQLEditorBase implements ...@@ -2186,9 +2186,9 @@ public class SQLEditor extends SQLEditorBase implements
} }
public enum ResultSetOrientation { public enum ResultSetOrientation {
HORIZONTAL(SWT.VERTICAL, "Horizontal", "Results are below the editor", true), HORIZONTAL(SWT.VERTICAL, SQLEditorMessages.sql_editor_result_set_orientation_horizontal, SQLEditorMessages.sql_editor_result_set_orientation_horizontal_tip, true),
VERTICAL(SWT.HORIZONTAL, "Vertical", "Results are to the right from editor", true), VERTICAL(SWT.HORIZONTAL, SQLEditorMessages.sql_editor_result_set_orientation_vertical, SQLEditorMessages.sql_editor_result_set_orientation_vertical_tip, true),
DETACHED(SWT.VERTICAL, "Detached", "Results are in separate view", false); DETACHED(SWT.VERTICAL, SQLEditorMessages.sql_editor_result_set_orientation_detached, SQLEditorMessages.sql_editor_result_set_orientation_detached_tip, false);
private final int sashOrientation; private final int sashOrientation;
private final String label; private final String label;
......
...@@ -270,7 +270,12 @@ public class SQLEditorMessages extends NLS { ...@@ -270,7 +270,12 @@ public class SQLEditorMessages extends NLS {
public static String controls_querylog_transaction; public static String controls_querylog_transaction;
public static String sql_editor_menu_choose_format; public static String sql_editor_menu_choose_format;
public static String sql_editor_panel_format; public static String sql_editor_panel_format;
public static String sql_editor_result_set_orientation_detached;
public static String sql_editor_result_set_orientation_detached_tip;
public static String sql_editor_result_set_orientation_horizontal;
public static String sql_editor_result_set_orientation_horizontal_tip;
public static String sql_editor_result_set_orientation_vertical;
public static String sql_editor_result_set_orientation_vertical_tip;
public static String sql_script_binding_type_radio_button_connection_name; public static String sql_script_binding_type_radio_button_connection_name;
public static String sql_script_binding_type_radio_button_connection_parameters; public static String sql_script_binding_type_radio_button_connection_parameters;
public static String sql_script_binding_type_radio_button_connection_unique; public static String sql_script_binding_type_radio_button_connection_unique;
......
...@@ -252,3 +252,10 @@ sql_script_binding_type_radio_button_connection_name=Connection name ...@@ -252,3 +252,10 @@ sql_script_binding_type_radio_button_connection_name=Connection name
sql_script_binding_type_radio_button_connection_parameters=Connection parameters (name1=value1;name2=value2;...) sql_script_binding_type_radio_button_connection_parameters=Connection parameters (name1=value1;name2=value2;...)
sql_script_binding_type_radio_button_connection_unique=Connection unique ID sql_script_binding_type_radio_button_connection_unique=Connection unique ID
sql_script_binding_type_radio_button_connection_url=Connection URL (jdbc:dbms://host:port/...) sql_script_binding_type_radio_button_connection_url=Connection URL (jdbc:dbms://host:port/...)
sql_editor_result_set_orientation_detached=Detached
sql_editor_result_set_orientation_detached_tip=Results are in separate view
sql_editor_result_set_orientation_horizontal=Horizontal
sql_editor_result_set_orientation_horizontal_tip=Results are below the editor
sql_editor_result_set_orientation_vertical=Vertical
sql_editor_result_set_orientation_vertical_tip=Results are to the right from editor
...@@ -147,12 +147,12 @@ pref_page_sql_editor_label_results_orientation = \u041E\u0440\u0438\u0435\u043D\ ...@@ -147,12 +147,12 @@ pref_page_sql_editor_label_results_orientation = \u041E\u0440\u0438\u0435\u043D\
pref_page_sql_editor_label_results_orientation_tip = \u041E\u0440\u0438\u0435\u043D\u0442\u0430\u0446\u0438\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 SQL pref_page_sql_editor_label_results_orientation_tip = \u041E\u0440\u0438\u0435\u043D\u0442\u0430\u0446\u0438\u044F \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 \u0432 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0435 SQL
pref_page_sql_editor_link_text_editor = \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430 pref_page_sql_editor_link_text_editor = \u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0442\u0435\u043A\u0441\u0442\u043E\u0432\u043E\u0433\u043E \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430
#SQLExecute #SQLExecute
pref_page_sql_editor_label_sql_timeout_tip = Query execute timeout (in seconds). 0 means no timeout pref_page_sql_editor_label_sql_timeout_tip = \u0412\u0440\u0435\u043C\u044F \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u044F \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F \u0437\u0430\u043F\u0440\u043E\u0441\u0430 (\u0432 \u0441\u0435\u043A\u0443\u043D\u0434\u0430\u0445). 0 \u043E\u0437\u043D\u0430\u0447\u0430\u0435\u0442 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u0440\u0435\u043C\u0435\u043D\u0438 \u043E\u0436\u0438\u0434\u0430\u043D\u0438\u044F
pref_page_sql_editor_enable_parameters_in_ddl = Enable parameters in DDL pref_page_sql_editor_enable_parameters_in_ddl = \u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0432 DDL
pref_page_sql_editor_enable_parameters_in_ddl_tip = Usually DDL (like CREATE PROCEDURE) don't use input query parameters but may contain complex logic/scripting.\nThis may conflict with parameters prefix.\nSo it makes sense to disable parameters parsing for DDL queries. pref_page_sql_editor_enable_parameters_in_ddl_tip = \u041E\u0431\u044B\u0447\u043D\u043E DDL (\u043D\u0430\u043F\u0440\u0438\u043C\u0435\u0440, CREATE PROCEDURE) \u043D\u0435 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u044B \u0437\u0430\u043F\u0440\u043E\u0441\u0430, \u043D\u043E \u043C\u043E\u0436\u0435\u0442 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \u0441\u043B\u043E\u0436\u043D\u0443\u044E \u043B\u043E\u0433\u0438\u043A\u0443/\u0441\u0446\u0435\u043D\u0430\u0440\u0438\u0438.\\u043F\u044D\u0442\u043E \u043C\u043E\u0436\u0435\u0442 \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u043E\u0432\u0430\u0442\u044C \u0441 \u043F\u0440\u0435\u0444\u0438\u043A\u0441\u043E\u043C \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432.\n\u041F\u043E\u044D\u0442\u043E\u043C\u0443 \u0438\u043C\u0435\u0435\u0442 \u0441\u043C\u044B\u0441\u043B \u043E\u0442\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u0441\u0438\u043D\u0442\u0430\u043A\u0441\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u043D\u0430\u043B\u0438\u0437 \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u043E\u0432 \u0434\u043B\u044F DDL-\u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432.
pref_page_sql_editor_enable_variables = Enable variables pref_page_sql_editor_enable_variables = \u0412\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0435
pref_page_sql_editor_enable_variables_tip = Enable variables in SQL scripts.\nVariable is a special mark ${VAR_NAME} which will be replaced with user input before query execution pref_page_sql_editor_enable_variables_tip = \u0412\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u044B\u0445 \u0432 \u0441\u043A\u0440\u0438\u043F\u0442\u0430\u0445 SQL.\n\u041F\u0435\u0440\u0435\u043C\u0435\u043D\u043D\u0430\u044F - \u044D\u0442\u043E \u0441\u043F\u0435\u0446\u0438\u0430\u043B\u044C\u043D\u0430\u044F \u043C\u0435\u0442\u043A\u0430 ${VAR_NAME}, \u043A\u043E\u0442\u043E\u0440\u0430\u044F \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043C\u0435\u043D\u0435\u043D\u0430 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u043C \u0432\u0432\u043E\u0434\u043E\u043C \u043F\u0435\u0440\u0435\u0434 \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435\u043C \u0437\u0430\u043F\u0440\u043E\u0441\u0430
pref_page_sql_editor_checkbox_create_script_folders = Create script folders pref_page_sql_editor_checkbox_create_script_folders = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043F\u0430\u043F\u043A\u0438 \u0441\u043A\u0440\u0438\u043F\u0442\u043E\u0432
#SQLFormat #SQLFormat
pref_page_sql_format_group_auto_close = \u0410\u0432\u0442\u043E-\u0434\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 pref_page_sql_format_group_auto_close = \u0410\u0432\u0442\u043E-\u0434\u043E\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435
...@@ -243,3 +243,9 @@ sql_script_binding_type_radio_button_connection_name=\u0418\u043C\u044F \u0441\u ...@@ -243,3 +243,9 @@ sql_script_binding_type_radio_button_connection_name=\u0418\u043C\u044F \u0441\u
sql_script_binding_type_radio_button_connection_parameters=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0441\u043E\u0434\u0438\u043D\u0435\u043D\u0438\u044F (name1=value1;name2=value2;...) sql_script_binding_type_radio_button_connection_parameters=\u041F\u0430\u0440\u0430\u043C\u0435\u0442\u0440 \u0441\u043E\u0434\u0438\u043D\u0435\u043D\u0438\u044F (name1=value1;name2=value2;...)
sql_script_binding_type_radio_button_connection_unique=\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 ID \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F sql_script_binding_type_radio_button_connection_unique=\u0423\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439 ID \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F
sql_script_binding_type_radio_button_connection_url=URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F (jdbc:dbms://host:port/...) sql_script_binding_type_radio_button_connection_url=URL-\u0430\u0434\u0440\u0435\u0441 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F (jdbc:dbms://host:port/...)
sql_editor_result_set_orientation_horizontal=\u0413\u043E\u0440\u0438\u0437\u043E\u043D\u0442\u0430\u043B\u044C\u043D\u044B\u0439
sql_editor_result_set_orientation_horizontal_tip=\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442 \u043D\u0438\u0436\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430
sql_editor_result_set_orientation_detached=\u041E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0439
sql_editor_result_set_orientation_detached_tip=\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0432 \u043E\u0442\u0434\u0435\u043B\u044C\u043D\u043E\u043C \u043E\u043A\u043D\u0435
sql_editor_result_set_orientation_vertical=\u0412\u0435\u0440\u0442\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0439
sql_editor_result_set_orientation_vertical_tip=\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u0441\u043F\u0440\u0430\u0432\u0430 \u043E\u0442 \u0440\u0435\u0434\u0430\u043A\u0442\u043E\u0440\u0430
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册