提交 7bcfebce 编写于 作者: J jurgen

Multiple result sets support

NSIS installer fix
上级 ee7fac59
......@@ -89,6 +89,8 @@ command.org.jkiss.dbeaver.core.object.filter.description=Filter objects
command.org.jkiss.dbeaver.ui.editors.sql.run.statement.name=Execute SQL Statement
command.org.jkiss.dbeaver.ui.editors.sql.run.statement.description=Execute Statement
command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.name=Execute New SQL Statement
command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.description=Execute Statement in new result set viewer
command.org.jkiss.dbeaver.ui.editors.sql.run.script.name=Execute SQL Script
command.org.jkiss.dbeaver.ui.editors.sql.run.script.description=Execute script
command.org.jkiss.dbeaver.ui.editors.sql.run.explain.name=Explain Execution Plan
......
......@@ -195,6 +195,7 @@
<command id="org.jkiss.dbeaver.core.object.filter" name="%command.org.jkiss.dbeaver.core.object.filter.name" description="%command.org.jkiss.dbeaver.core.object.filter.description" categoryId="org.jkiss.dbeaver.core.database"/>
<command id="org.jkiss.dbeaver.ui.editors.sql.run.statement" name="%command.org.jkiss.dbeaver.ui.editors.sql.run.statement.name" description="%command.org.jkiss.dbeaver.ui.editors.sql.run.statement.description" categoryId="org.jkiss.dbeaver.core.sql"/>
<command id="org.jkiss.dbeaver.ui.editors.sql.run.resultSet" name="%command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.name" description="%command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.description" categoryId="org.jkiss.dbeaver.core.sql"/>
<command id="org.jkiss.dbeaver.ui.editors.sql.run.script" name="%command.org.jkiss.dbeaver.ui.editors.sql.run.script.name" description="%command.org.jkiss.dbeaver.ui.editors.sql.run.script.description" categoryId="org.jkiss.dbeaver.core.sql"/>
<command id="org.jkiss.dbeaver.ui.editors.sql.run.explain" name="%command.org.jkiss.dbeaver.ui.editors.sql.run.explain.name" description="%command.org.jkiss.dbeaver.ui.editors.sql.run.explain.description" categoryId="org.jkiss.dbeaver.core.sql"/>
<command id="org.jkiss.dbeaver.ui.editors.sql.run.validate" name="%command.org.jkiss.dbeaver.ui.editors.sql.run.validate.name" description="%command.org.jkiss.dbeaver.ui.editors.sql.run.validate.description" categoryId="org.jkiss.dbeaver.core.sql"/>
......@@ -265,6 +266,7 @@
<image commandId="org.jkiss.dbeaver.core.object.filter" icon="icons/misc/filter.png"/>
<image commandId="org.jkiss.dbeaver.ui.editors.sql.run.statement" icon="icons/sql/sql_exec.png"/>
<image commandId="org.jkiss.dbeaver.ui.editors.sql.run.resultSet" icon="icons/sql/sql_exec_new.png"/>
<image commandId="org.jkiss.dbeaver.ui.editors.sql.run.script" icon="icons/sql/sql_script_exec.png"/>
<image commandId="org.jkiss.dbeaver.ui.editors.sql.run.explain" icon="icons/sql/sql_plan.png"/>
<image commandId="org.jkiss.dbeaver.ui.editors.sql.run.validate" icon="icons/sql/sql_validate.png"/>
......@@ -727,15 +729,15 @@
</with>
</enabledWhen>
</handler>
<!--handler commandId="org.eclipse.ui.file.refresh" class="org.jkiss.dbeaver.ui.editors.sql.handlerss.handlers.ExecuteStatementHandler">
<handler commandId="org.jkiss.dbeaver.ui.editors.sql.run.resultSet" class="org.jkiss.dbeaver.ui.editors.sql.handlers.ExecuteResultSetHandler">
<enabledWhen>
<with variable="activeEditor">
<adapt type="org.jkiss.dbeaver.ui.editors.sql.SQLEditor">
<test property="org.jkiss.dbeaver.ui.editors.sql.canExecute"/>
<test property="org.jkiss.dbeaver.ui.editors.sql.canExecute" value="statement"/>
</adapt>
</with>
</enabledWhen>
</handler-->
</handler>
<handler commandId="org.jkiss.dbeaver.ui.editors.sql.run.script" class="org.jkiss.dbeaver.ui.editors.sql.handlers.ExecuteScriptHandler">
<enabledWhen>
<with variable="activeEditor">
......@@ -1444,6 +1446,13 @@
</with>
</visibleWhen>
</command>
<command commandId="org.jkiss.dbeaver.ui.editors.sql.run.resultSet">
<visibleWhen>
<with variable="activeEditor">
<instanceof value="org.jkiss.dbeaver.ui.editors.sql.SQLEditor"/>
</with>
</visibleWhen>
</command>
<command commandId="org.jkiss.dbeaver.ui.editors.sql.run.script">
<visibleWhen>
<with variable="activeEditor">
......@@ -1497,6 +1506,7 @@
<command commandId="org.jkiss.dbeaver.ui.editors.sql.save.file"/>
<separator name="execute" visible="true"/>
<command commandId="org.jkiss.dbeaver.ui.editors.sql.run.statement"/>
<command commandId="org.jkiss.dbeaver.ui.editors.sql.run.resultSet"/>
<command commandId="org.jkiss.dbeaver.ui.editors.sql.run.script"/>
<command commandId="org.jkiss.dbeaver.ui.editors.sql.export.data"/>
<separator name="other" visible="true"/>
......@@ -1556,6 +1566,11 @@
contextId="org.jkiss.dbeaver.ui.editors.sql"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="CTRL+Enter"/>
<key
commandId="org.jkiss.dbeaver.ui.editors.sql.run.resultSet"
contextId="org.jkiss.dbeaver.ui.editors.sql"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="CTRL+SHIFT+Enter"/>
<key
commandId="org.jkiss.dbeaver.ui.editors.sql.run.script"
contextId="org.jkiss.dbeaver.ui.editors.sql"
......@@ -1565,7 +1580,7 @@
commandId="org.jkiss.dbeaver.ui.editors.sql.run.explain"
contextId="org.jkiss.dbeaver.ui.editors.sql"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
sequence="CTRL+SHIFT+Enter"/>
sequence="CTRL+SHIFT+E"/>
<key
commandId="org.jkiss.dbeaver.ui.editors.sql.navigate.object"
contextId="org.jkiss.dbeaver.ui.editors.sql"
......
......@@ -94,6 +94,8 @@ command.org.jkiss.dbeaver.core.object.filter.description=\u0424\u0438\u043B\u044
command.org.jkiss.dbeaver.ui.editors.sql.run.statement.name=\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C SQL \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435
command.org.jkiss.dbeaver.ui.editors.sql.run.statement.description=\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C SQL \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435
command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.name=\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043D\u043E\u0432\u043E\u0435 SQL \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435
command.org.jkiss.dbeaver.ui.editors.sql.run.resultSet.description=\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C SQL \u0432\u044B\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0432 \u043D\u043E\u0432\u043E\u0439 \u0437\u0430\u043A\u043B\u0430\u0434\u043A\u0435
command.org.jkiss.dbeaver.ui.editors.sql.run.script.name=\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C SQL \u0441\u043A\u0440\u0438\u043F\u0442
command.org.jkiss.dbeaver.ui.editors.sql.run.script.description=\u0412\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0441\u043A\u0440\u0438\u043F\u0442
command.org.jkiss.dbeaver.ui.editors.sql.run.explain.name=\u041F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u043F\u043B\u0430\u043D \u0432\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u044F
......
......@@ -321,7 +321,7 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
//UIUtils.createControlLabel(filtersPanel, " Filter");
this.filtersText = new Combo(filtersPanel, SWT.BORDER | SWT.DROP_DOWN);
this.filtersText = new Combo(filtersPanel, SWT.BORDER | SWT.DROP_DOWN | SWT.NO_FOCUS);
this.filtersText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
this.filtersText.addSelectionListener(new SelectionAdapter() {
@Override
......
......@@ -40,7 +40,6 @@ import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.ui.controls.resultset.ResultSetProvider;
import org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer;
import org.jkiss.dbeaver.ui.dialogs.ConfirmationDialog;
import org.jkiss.dbeaver.ui.editors.sql.SQLEditor;
import org.jkiss.dbeaver.ui.preferences.PrefConstants;
/**
......@@ -74,7 +73,9 @@ public class CursorViewDialog extends ValueViewDialog implements ResultSetProvid
PrefConstants.CONFIRM_KEEP_STATEMENT_OPEN,
ConfirmationDialog.QUESTION) == IDialogConstants.YES_ID) {
globalPreferenceStore.setValue(PrefConstants.KEEP_STATEMENT_OPEN, true);
((SQLEditor)valueController.getValueSite().getPart()).getResultsView().refresh();
if (valueController.getValueSite().getPart() instanceof ResultSetProvider) {
((ResultSetProvider)valueController.getValueSite().getPart()).getResultSetViewer().refresh();
}
}
dialogGroup.getDisplay().asyncExec(new Runnable()
{
......
......@@ -53,15 +53,7 @@ public class DatabaseDataEditor extends AbstractDatabaseObjectEditor<DBSDataCont
@Override
public void activatePart()
{
if (resultSetView == null) {
resultSetView = new ResultSetViewer(parent, getSite(), this);
resultSetView.addListener(this);
parent.layout();
resultSetView.getControl().setFocus();
// Set selection provider from resultset
getSite().setSelectionProvider(resultSetView);
}
createResultSetView();
// FindReplaceAction action = (FindReplaceAction)getEditorSite().getActionBars().getGlobalActionHandler(ActionFactory.FIND.getId());
// if (action != null) {
......@@ -78,6 +70,19 @@ public class DatabaseDataEditor extends AbstractDatabaseObjectEditor<DBSDataCont
//resultSetView.setSelection(resultSetView.getSelection());
}
private void createResultSetView()
{
if (resultSetView == null) {
resultSetView = new ResultSetViewer(parent, getSite(), this);
resultSetView.addListener(this);
parent.layout();
resultSetView.getControl().setFocus();
// Set selection provider from resultset
getSite().setSelectionProvider(resultSetView);
}
}
@Override
public void deactivatePart()
{
......@@ -113,6 +118,7 @@ public class DatabaseDataEditor extends AbstractDatabaseObjectEditor<DBSDataCont
@Override
public void setFocus()
{
createResultSetView();
if (resultSetView != null) {
resultSetView.getSpreadsheet().setFocus();
}
......
......@@ -32,10 +32,7 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.*;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
......@@ -94,16 +91,12 @@ public class SQLEditor extends SQLEditorBase
DBPEventListener, ISaveablePart2, ResultSetProvider, DBPDataSourceUser, DBPDataSourceHandler
{
static final int PAGE_INDEX_RESULTSET = 0;
static final int PAGE_INDEX_PLAN = 1;
static final int PAGE_INDEX_LOG = 2;
private static final long SCRIPT_UI_UPDATE_PERIOD = 100;
private SashForm sashForm;
private Control editorControl;
private CTabFolder resultTabs;
private ResultSetViewer resultsView;
private final List<ResultSetViewer> resultSetViewers = new ArrayList<ResultSetViewer>();
private ExplainPlanViewer planView;
......@@ -111,11 +104,12 @@ public class SQLEditor extends SQLEditorBase
private volatile int curJobRunning = 0;
private final DataContainer dataContainer;
private DBSDataSourceContainer dataSourceContainer;
private final DynamicFindReplaceTarget findReplaceTarget = new DynamicFindReplaceTarget();;
private final DynamicFindReplaceTarget findReplaceTarget = new DynamicFindReplaceTarget();
private static Image imgDataGrid;
private static Image imgExplainPlan;
private static Image imgLog;
private CompositeSelectionProvider selectionProvider;
static {
imgDataGrid = DBeaverActivator.getImageDescriptor("/icons/sql/page_data_grid.png").createImage(); //$NON-NLS-1$
......@@ -184,15 +178,18 @@ public class SQLEditor extends SQLEditorBase
return true;
}
public ResultSetViewer getResultsView()
{
return resultsView;
}
@Override
public boolean isDirty()
{
return (resultsView != null && resultsView.isDirty()) || super.isDirty();
if (super.isDirty()) {
return true;
}
for (ResultSetViewer viewer : resultSetViewers) {
if (viewer.isDirty()) {
return true;
}
}
return false;
}
@Override
......@@ -210,6 +207,7 @@ public class SQLEditor extends SQLEditorBase
if (required == IFindReplaceTarget.class) {
return findReplaceTarget;
}
ResultSetViewer resultsView = getResultSetViewer();
if (resultsView != null) {
Object adapter = resultsView.getAdapter(required);
if (adapter != null) {
......@@ -244,6 +242,9 @@ public class SQLEditor extends SQLEditorBase
editorControl = sashForm.getChildren()[0];
selectionProvider = new CompositeSelectionProvider();
getSite().setSelectionProvider(selectionProvider);
{
resultTabs = new CTabFolder(sashForm, SWT.TOP | SWT.FLAT);
resultTabs.setLayoutData(new GridData(GridData.FILL_BOTH));
......@@ -258,8 +259,6 @@ public class SQLEditor extends SQLEditorBase
resultTabs.setSimple(true);
//resultTabs.getItem(0).addListener();
resultsView = new ResultSetViewer(resultTabs, getSite(), this);
planView = new ExplainPlanViewer(this, resultTabs, this);
final SQLLogPanel logViewer = new SQLLogPanel(resultTabs, this);
......@@ -279,38 +278,27 @@ public class SQLEditor extends SQLEditorBase
});
// Create tabs
CTabItem item = new CTabItem(resultTabs, SWT.NONE, PAGE_INDEX_RESULTSET);
item.setControl(resultsView.getControl());
item.setText(CoreMessages.editors_sql_data_grid);
item.setImage(imgDataGrid);
createResultSetViewer();
item = new CTabItem(resultTabs, SWT.NONE, PAGE_INDEX_PLAN);
CTabItem item = new CTabItem(resultTabs, SWT.NONE);
item.setControl(planView.getControl());
item.setText(CoreMessages.editors_sql_explain_plan);
item.setImage(imgExplainPlan);
item.setData(planView);
item = new CTabItem(resultTabs, SWT.NONE, PAGE_INDEX_LOG);
item = new CTabItem(resultTabs, SWT.NONE);
item.setControl(logViewer);
item.setText(CoreMessages.editors_sql_execution_log);
item.setImage(imgLog);
item.setData(logViewer);
resultTabs.setSelection(0);
final CompositeSelectionProvider selectionProvider = new CompositeSelectionProvider();
selectionProvider.trackViewer(getTextViewer().getTextWidget(), getTextViewer());
selectionProvider.trackViewer(resultsView.getSpreadsheet(), resultsView);
selectionProvider.trackViewer(planView.getViewer().getControl(), planView.getViewer());
getSite().setSelectionProvider(selectionProvider);
}
// Find/replace target activation
resultsView.getSpreadsheet().addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e)
{
findReplaceTarget.setTarget(resultsView.getFindReplaceTarget());
}
});
getViewer().getTextWidget().addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e)
......@@ -328,6 +316,54 @@ public class SQLEditor extends SQLEditorBase
onDataSourceChange();
}
private ResultSetViewer createResultSetViewer()
{
boolean firstResultSet = resultSetViewers.isEmpty();
final ResultSetViewer resultsView = new ResultSetViewer(resultTabs, getSite(), this);
resultSetViewers.add(resultsView);
selectionProvider.trackViewer(resultsView.getSpreadsheet(), resultsView);
// Find/replace target activation
resultsView.getSpreadsheet().addFocusListener(new FocusAdapter() {
@Override
public void focusGained(FocusEvent e)
{
findReplaceTarget.setTarget(resultsView.getFindReplaceTarget());
}
});
int tabIndex = resultSetViewers.size() - 1;
final CTabItem item = new CTabItem(resultTabs, SWT.NONE, tabIndex);
String tabName = CoreMessages.editors_sql_data_grid;
if (!firstResultSet) {
tabName += " [" + tabIndex + "]";
}
item.setText(tabName);
item.setImage(imgDataGrid);
item.setData(resultsView);
if (!firstResultSet) {
item.setShowClose(true);
}
item.setControl(resultsView.getControl());
item.addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e)
{
ResultSetViewer viewer = (ResultSetViewer) item.getData();
if (viewer != null) {
resultSetViewers.remove(viewer);
}
}
});
if (!firstResultSet) {
resultTabs.setSelection(item);
}
return resultsView;
}
@Override
public IPathEditorInput getEditorInput()
{
......@@ -398,7 +434,12 @@ public class SQLEditor extends SQLEditorBase
setStatus(CoreMessages.editors_sql_status_empty_query_string, true);
return;
}
resultTabs.setSelection(PAGE_INDEX_PLAN);
for (CTabItem item : resultTabs.getItems()) {
if (item.getData() == planView) {
resultTabs.setSelection(item);
break;
}
}
try {
planView.explainQueryPlan(sqlQuery.getQuery());
} catch (DBCException e) {
......@@ -410,14 +451,13 @@ public class SQLEditor extends SQLEditorBase
}
}
public void processSQL(boolean script)
public void processSQL(boolean newTab, boolean script)
{
IDocument document = getDocument();
if (document == null) {
setStatus(CoreMessages.editors_sql_status_cant_obtain_document, true);
return;
}
resultTabs.setSelection(PAGE_INDEX_RESULTSET);
if (script) {
// Execute all SQL statements consequently
List<SQLStatementInfo> statementInfos;
......@@ -427,14 +467,14 @@ public class SQLEditor extends SQLEditorBase
} else {
statementInfos = extractScriptQueries(0, document.getLength());
}
processQuery(statementInfos, false);
processQuery(statementInfos, newTab, false);
} else {
// Execute statement under cursor or selected text (if selection present)
SQLStatementInfo sqlQuery = extractActiveQuery();
if (sqlQuery == null) {
setStatus(CoreMessages.editors_sql_status_empty_query_string, true);
} else {
processQuery(Collections.singletonList(sqlQuery), false);
processQuery(Collections.singletonList(sqlQuery), newTab, false);
}
}
}
......@@ -443,7 +483,7 @@ public class SQLEditor extends SQLEditorBase
{
SQLStatementInfo sqlQuery = extractActiveQuery();
if (sqlQuery != null) {
processQuery(Collections.singletonList(sqlQuery), true);
processQuery(Collections.singletonList(sqlQuery), false, true);
}
}
......@@ -513,10 +553,13 @@ public class SQLEditor extends SQLEditorBase
private void setStatus(String status, boolean error)
{
resultsView.setStatus(status, error);
ResultSetViewer resultsView = getResultSetViewer();
if (resultsView != null) {
resultsView.setStatus(status, error);
}
}
private void processQuery(final List<SQLStatementInfo> queries, boolean export)
private void processQuery(final List<SQLStatementInfo> queries, boolean newTab, boolean export)
{
if (queries.isEmpty()) {
// Nothing to process
......@@ -540,6 +583,16 @@ public class SQLEditor extends SQLEditorBase
return;
}
if (newTab) {
createResultSetViewer();
}
CTabItem curTab = resultTabs.getSelection();
if (!(curTab.getData() instanceof ResultSetViewer)) {
// Set first results viewer by default
resultTabs.setSelection(0);
}
final ResultSetViewer resultsView = getResultSetViewer();
// Prepare execution job
{
final ITextSelection originalSelection = (ITextSelection) getSelectionProvider().getSelection();
......@@ -682,6 +735,7 @@ public class SQLEditor extends SQLEditorBase
} else {
resultsView.setDataFilter(new DBDDataFilter(), false);
resultsView.refresh();
curTab.setToolTipText(queries.get(0).getQuery());
}
} else {
job.schedule();
......@@ -713,7 +767,7 @@ public class SQLEditor extends SQLEditorBase
}
DatabaseEditorUtils.setPartBackground(this, sashForm);
if (resultsView != null) {
for (ResultSetViewer resultsView : resultSetViewers) {
if (getDataSource() == null) {
resultsView.setStatus(CoreMessages.editors_sql_status_not_connected_to_database);
} else {
......@@ -776,7 +830,7 @@ public class SQLEditor extends SQLEditorBase
}
planView = null;
resultsView = null;
resultSetViewers.clear();
ResourcesPlugin.getWorkspace().removeResourceChangeListener(this);
super.dispose();
......@@ -814,8 +868,10 @@ public class SQLEditor extends SQLEditorBase
@Override
public void doSave(IProgressMonitor progressMonitor) {
if (resultsView.isDirty()) {
resultsView.doSave(progressMonitor);
for (ResultSetViewer resultsView : resultSetViewers) {
if (resultsView.isDirty()) {
resultsView.doSave(progressMonitor);
}
}
super.doSave(progressMonitor);
}
......@@ -843,17 +899,25 @@ public class SQLEditor extends SQLEditorBase
return ISaveablePart2.CANCEL;
}
if (resultsView.isDirty()) {
return resultsView.promptToSaveOnClose();
} else {
return ISaveablePart2.YES;
for (ResultSetViewer resultsView : resultSetViewers) {
if (resultsView.isDirty()) {
return resultsView.promptToSaveOnClose();
}
}
return ISaveablePart2.YES;
}
@Override
public ResultSetViewer getResultSetViewer()
{
return resultsView;
CTabItem curTab = resultTabs == null ? null : resultTabs.getSelection();
if (curTab != null) {
Object tabData = curTab.getData();
if (tabData instanceof ResultSetViewer) {
return (ResultSetViewer) tabData;
}
}
return resultSetViewers.isEmpty() ? null : resultSetViewers.get(0);
}
@Override
......
/*
* Copyright (C) 2010-2012 Serge Rieder
* serge@jkiss.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.jkiss.dbeaver.ui.editors.sql.handlers;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.handlers.HandlerUtil;
import org.jkiss.dbeaver.runtime.RuntimeUtils;
import org.jkiss.dbeaver.ui.editors.sql.SQLEditor;
public class ExecuteResultSetHandler extends AbstractHandler
{
@Override
public Object execute(ExecutionEvent event) throws ExecutionException
{
SQLEditor editor = RuntimeUtils.getObjectAdapter(HandlerUtil.getActiveEditor(event), SQLEditor.class);
if (editor != null) {
editor.processSQL(true, false);
}
return null;
}
}
\ No newline at end of file
......@@ -34,7 +34,7 @@ public class ExecuteScriptHandler extends AbstractHandler
{
SQLEditor editor = RuntimeUtils.getObjectAdapter(HandlerUtil.getActiveEditor(event), SQLEditor.class);
if (editor != null) {
editor.processSQL(true);
editor.processSQL(false, true);
}
return null;
}
......
......@@ -34,7 +34,7 @@ public class ExecuteStatementHandler extends AbstractHandler
{
SQLEditor editor = RuntimeUtils.getObjectAdapter(HandlerUtil.getActiveEditor(event), SQLEditor.class);
if (editor != null) {
editor.processSQL(false);
editor.processSQL(false, false);
}
return null;
}
......
......@@ -22,6 +22,7 @@ import org.jkiss.dbeaver.model.exec.DBCStatement;
import org.jkiss.dbeaver.runtime.qm.QMEventFilter;
import org.jkiss.dbeaver.runtime.qm.QMMetaEvent;
import org.jkiss.dbeaver.runtime.qm.meta.*;
import org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer;
import org.jkiss.dbeaver.ui.editors.sql.SQLEditor;
/**
......@@ -46,16 +47,19 @@ class SQLLogFilter implements QMEventFilter {
QMMObject object = event.getObject();
if (object instanceof QMMSessionInfo) {
return ((QMMSessionInfo)object).getContainer() == editor.getDataSourceContainer();
} else if (object instanceof QMMStatementExecuteInfo) {
DBCStatement statement = ((QMMStatementExecuteInfo) object).getStatement().getReference();
return statement != null && statement.getUserData() == editor.getResultsView().getDataReceiver();
} else if (object instanceof QMMStatementInfo) {
DBCStatement statement = ((QMMStatementInfo) object).getReference();
return statement != null && statement.getUserData() == editor.getResultsView().getDataReceiver();
} else if (object instanceof QMMTransactionInfo) {
return ((QMMTransactionInfo)object).getSession().getReference() == editor.getDataSource();
} else if (object instanceof QMMTransactionSavepointInfo) {
return ((QMMTransactionSavepointInfo)object).getTransaction().getSession().getReference() == editor.getDataSource();
} else {
ResultSetViewer resultSetViewer = editor.getResultSetViewer();
if (object instanceof QMMStatementExecuteInfo) {
DBCStatement statement = ((QMMStatementExecuteInfo) object).getStatement().getReference();
return statement != null && resultSetViewer != null && statement.getUserData() == resultSetViewer.getDataReceiver();
} else if (object instanceof QMMStatementInfo) {
DBCStatement statement = ((QMMStatementInfo) object).getReference();
return statement != null && resultSetViewer != null && statement.getUserData() == resultSetViewer.getDataReceiver();
} else if (object instanceof QMMTransactionInfo) {
return ((QMMTransactionInfo)object).getSession().getReference() == editor.getDataSource();
} else if (object instanceof QMMTransactionSavepointInfo) {
return ((QMMTransactionSavepointInfo)object).getTransaction().getSession().getReference() == editor.getDataSource();
}
}
return false;
}
......
@echo off
echo Unpack jars
echo Unpack java archives
call :unpackJars plugins
call :unpackJars jre\lib .jar
call :unpackJars jre\lib\ext .jar
echo Unpack completed
goto :EOF
:unpackJars
echo Unpack jars in "%~1"
for %%f in (%~1\*.pack) do (
echo Unpack jar "%~1\%%~nf"
jre\bin\unpack200 %~1\%%~nf.pack %~1\%%~nf%~2
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册