Account for different situations for stream setting (#3615)

* add cases for different situation

* default streaming setting false
This commit is contained in:
Anthony Dresser
2018-12-12 12:03:59 -08:00
committed by Karl Burtram
parent 58ff13d399
commit 18fb78b3ec
3 changed files with 58 additions and 45 deletions

View File

@@ -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',

View File

@@ -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);
change = true;
}
}
if (change) {
this.maximumBodySize = this.tables.reduce((p, c) => {
return p + c.maximumSize;
}, 0);
if (this.state && this.state.scrollPosition) {
this.splitView.setScrollPosition(this.state.scrollPosition);
}
} }
sizeChanges();
} }
} }
private addResultSet(resultSet: sqlops.ResultSetSummary | sqlops.ResultSetSummary[]) { private addResultSet(resultSet: 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);

View File

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