mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-16 18:46:40 -05:00
Account for different situations for stream setting (#3615)
* add cases for different situation * default streaming setting false
This commit is contained in:
committed by
Karl Burtram
parent
58ff13d399
commit
18fb78b3ec
@@ -308,7 +308,7 @@ let registryProperties = {
|
|||||||
'sql.results.streaming': {
|
'sql.results.streaming': {
|
||||||
'type': 'boolean',
|
'type': 'boolean',
|
||||||
'description': localize('sql.results.streaming', 'Enable results streaming; contains few minor visual issues'),
|
'description': localize('sql.results.streaming', 'Enable results streaming; contains few minor visual issues'),
|
||||||
'default': true
|
'default': false
|
||||||
},
|
},
|
||||||
'sql.copyIncludeHeaders': {
|
'sql.copyIncludeHeaders': {
|
||||||
'type': 'boolean',
|
'type': 'boolean',
|
||||||
|
|||||||
@@ -185,12 +185,31 @@ export class GridPanel extends ViewletPanel {
|
|||||||
}
|
}
|
||||||
this.reset();
|
this.reset();
|
||||||
}));
|
}));
|
||||||
|
this.addResultSet(this.runner.batchSets.reduce<sqlops.ResultSetSummary[]>((p, e) => {
|
||||||
|
if (this.configurationService.getValue<boolean>('sql.results.streaming')) {
|
||||||
|
p = p.concat(e.resultSetSummaries);
|
||||||
|
} else {
|
||||||
|
p = p.concat(e.resultSetSummaries.filter(c => c.complete));
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}, []));
|
||||||
|
this.maximumBodySize = this.tables.reduce((p, c) => {
|
||||||
|
return p + c.maximumSize;
|
||||||
|
}, 0);
|
||||||
|
|
||||||
|
if (this.state && this.state.scrollPosition) {
|
||||||
|
this.splitView.setScrollPosition(this.state.scrollPosition);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private onResultSet(resultSet: sqlops.ResultSetSummary | sqlops.ResultSetSummary[]) {
|
private onResultSet(resultSet: sqlops.ResultSetSummary | sqlops.ResultSetSummary[]) {
|
||||||
if (this.configurationService.getValue<boolean>('sql.results.streaming')) {
|
let resultsToAdd: sqlops.ResultSetSummary[];
|
||||||
this.addResultSet(resultSet);
|
if (!Array.isArray(resultSet)) {
|
||||||
|
resultsToAdd = [resultSet];
|
||||||
|
} else {
|
||||||
|
resultsToAdd = resultSet.splice(0);
|
||||||
|
}
|
||||||
|
const sizeChanges = () => {
|
||||||
this.tables.map(t => {
|
this.tables.map(t => {
|
||||||
t.state.canBeMaximized = this.tables.length > 1;
|
t.state.canBeMaximized = this.tables.length > 1;
|
||||||
});
|
});
|
||||||
@@ -202,6 +221,17 @@ export class GridPanel extends ViewletPanel {
|
|||||||
if (this.state && this.state.scrollPosition) {
|
if (this.state && this.state.scrollPosition) {
|
||||||
this.splitView.setScrollPosition(this.state.scrollPosition);
|
this.splitView.setScrollPosition(this.state.scrollPosition);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this.configurationService.getValue<boolean>('sql.results.streaming')) {
|
||||||
|
this.addResultSet(resultsToAdd);
|
||||||
|
sizeChanges();
|
||||||
|
} else {
|
||||||
|
resultsToAdd = resultsToAdd.filter(e => e.complete);
|
||||||
|
if (resultsToAdd.length > 0) {
|
||||||
|
this.addResultSet(resultsToAdd);
|
||||||
|
}
|
||||||
|
sizeChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,9 +240,19 @@ export class GridPanel extends ViewletPanel {
|
|||||||
if (!Array.isArray(resultSet)) {
|
if (!Array.isArray(resultSet)) {
|
||||||
resultsToUpdate = [resultSet];
|
resultsToUpdate = [resultSet];
|
||||||
} else {
|
} else {
|
||||||
resultsToUpdate = resultSet;
|
resultsToUpdate = resultSet.splice(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const sizeChanges = () => {
|
||||||
|
this.maximumBodySize = this.tables.reduce((p, c) => {
|
||||||
|
return p + c.maximumSize;
|
||||||
|
}, 0);
|
||||||
|
|
||||||
|
if (this.state && this.state.scrollPosition) {
|
||||||
|
this.splitView.setScrollPosition(this.state.scrollPosition);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if (this.configurationService.getValue<boolean>('sql.results.streaming')) {
|
if (this.configurationService.getValue<boolean>('sql.results.streaming')) {
|
||||||
for (let set of resultsToUpdate) {
|
for (let set of resultsToUpdate) {
|
||||||
let table = this.tables.find(t => t.resultSet.batchId === set.batchId && t.resultSet.id === set.id);
|
let table = this.tables.find(t => t.resultSet.batchId === set.batchId && t.resultSet.id === set.id);
|
||||||
@@ -222,47 +262,20 @@ export class GridPanel extends ViewletPanel {
|
|||||||
warn('Got result set update request for non-existant table');
|
warn('Got result set update request for non-existant table');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
sizeChanges();
|
||||||
this.maximumBodySize = this.tables.reduce((p, c) => {
|
|
||||||
return p + c.maximumSize;
|
|
||||||
}, 0);
|
|
||||||
|
|
||||||
if (this.state && this.state.scrollPosition) {
|
|
||||||
this.splitView.setScrollPosition(this.state.scrollPosition);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
let change = false;
|
resultsToUpdate = resultsToUpdate.filter(e => e.complete);
|
||||||
|
if (resultsToUpdate.length > 0) {
|
||||||
for (let set of resultsToUpdate) {
|
this.addResultSet(resultsToUpdate);
|
||||||
if (set.complete) {
|
}
|
||||||
this.addResultSet(set);
|
sizeChanges();
|
||||||
change = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (change) {
|
private addResultSet(resultSet: sqlops.ResultSetSummary[]) {
|
||||||
this.maximumBodySize = this.tables.reduce((p, c) => {
|
|
||||||
return p + c.maximumSize;
|
|
||||||
}, 0);
|
|
||||||
|
|
||||||
if (this.state && this.state.scrollPosition) {
|
|
||||||
this.splitView.setScrollPosition(this.state.scrollPosition);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private addResultSet(resultSet: sqlops.ResultSetSummary | sqlops.ResultSetSummary[]) {
|
|
||||||
let resultsToAdd: sqlops.ResultSetSummary[];
|
|
||||||
if (!Array.isArray(resultSet)) {
|
|
||||||
resultsToAdd = [resultSet];
|
|
||||||
} else {
|
|
||||||
resultsToAdd = resultSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
let tables: GridTable<any>[] = [];
|
let tables: GridTable<any>[] = [];
|
||||||
|
|
||||||
for (let set of resultsToAdd) {
|
for (let set of resultSet) {
|
||||||
let tableState: GridTableState;
|
let tableState: GridTableState;
|
||||||
if (this._state) {
|
if (this._state) {
|
||||||
tableState = this.state.tableStates.find(e => e.batchId === set.batchId && e.resultId === set.id);
|
tableState = this.state.tableStates.find(e => e.batchId === set.batchId && e.resultId === set.id);
|
||||||
|
|||||||
@@ -97,8 +97,8 @@ export default class QueryRunner extends Disposable {
|
|||||||
return l.concat(e);
|
return l.concat(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
private _echoedResultSet = echo(this._debouncedResultSet.event);
|
// private _echoedResultSet = echo(this._debouncedResultSet.event);
|
||||||
public readonly onResultSet = this._echoedResultSet.event;
|
public readonly onResultSet = this._debouncedResultSet.event;
|
||||||
|
|
||||||
private _onResultSetUpdate = this._register(new Emitter<sqlops.ResultSetSummary>());
|
private _onResultSetUpdate = this._register(new Emitter<sqlops.ResultSetSummary>());
|
||||||
private _debouncedResultSetUpdate = debounceEvent<sqlops.ResultSetSummary, sqlops.ResultSetSummary[]>(this._onResultSetUpdate.event, (l, e) => {
|
private _debouncedResultSetUpdate = debounceEvent<sqlops.ResultSetSummary, sqlops.ResultSetSummary[]>(this._onResultSetUpdate.event, (l, e) => {
|
||||||
@@ -109,8 +109,8 @@ export default class QueryRunner extends Disposable {
|
|||||||
return l.concat(e);
|
return l.concat(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
private _echoedResultSetUpdate = echo(this._debouncedResultSetUpdate.event);
|
// private _echoedResultSetUpdate = echo(this._debouncedResultSetUpdate.event);
|
||||||
public readonly onResultSetUpdate = this._echoedResultSetUpdate.event;
|
public readonly onResultSetUpdate = this._debouncedResultSetUpdate.event;
|
||||||
|
|
||||||
private _onQueryStart = this._register(new Emitter<void>());
|
private _onQueryStart = this._register(new Emitter<void>());
|
||||||
public readonly onQueryStart: Event<void> = this._onQueryStart.event;
|
public readonly onQueryStart: Event<void> = this._onQueryStart.event;
|
||||||
@@ -203,9 +203,9 @@ export default class QueryRunner extends Disposable {
|
|||||||
return TPromise.as(undefined);
|
return TPromise.as(undefined);
|
||||||
}
|
}
|
||||||
this._echoedMessages.clear();
|
this._echoedMessages.clear();
|
||||||
this._echoedResultSet.clear();
|
// this._echoedResultSet.clear();
|
||||||
this._debouncedMessage.clear();
|
this._debouncedMessage.clear();
|
||||||
this._debouncedResultSet.clear();
|
// this._debouncedResultSet.clear();
|
||||||
this._planXml = new Deferred<string>();
|
this._planXml = new Deferred<string>();
|
||||||
this._batchSets = [];
|
this._batchSets = [];
|
||||||
this._hasCompleted = false;
|
this._hasCompleted = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user