diff --git a/resources/evaluatePy.q b/resources/evaluatePy.q index a76e120f..a1599655 100644 --- a/resources/evaluatePy.q +++ b/resources/evaluatePy.q @@ -96,6 +96,12 @@ result[`error]:string result`error; if [`backtrace in key result; result[`backtrace]:string result`backtrace]; + if[result `errored; :result]; + if[type[result[`result]] = 99h; + if[`output in key result[`result]; + if[type[result[`result][`output]] = 99h; + if[`bytes in key result[`result][`output]; + result[`base64]:1b; result[`result]: .Q.btoa result[`result][`output][`bytes]; :result]]]]; result[`result]: $[result`errored; ::; diff --git a/src/classes/localConnection.ts b/src/classes/localConnection.ts index 03893e8d..8e1ead7a 100644 --- a/src/classes/localConnection.ts +++ b/src/classes/localConnection.ts @@ -219,7 +219,7 @@ export class LocalConnection { return { base64, result }; } - if (!stringify) { + if (!stringify && !isPython) { return JSON.parse(result); } diff --git a/src/commands/serverCommand.ts b/src/commands/serverCommand.ts index ae632b42..4fdb1d44 100644 --- a/src/commands/serverCommand.ts +++ b/src/commands/serverCommand.ts @@ -1224,6 +1224,7 @@ export async function writeQueryResultsToView( result, isInsights, connVersion, + isPython, ); if (!checkIfIsDatasource(type)) { addQueryHistory( diff --git a/src/extension.ts b/src/extension.ts index 46189266..32b9783f 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -209,8 +209,18 @@ export async function activate(context: ExtensionContext) { ), commands.registerCommand( "kdb.resultsPanel.update", - (results: any, isInsights: boolean, connVersion?: number) => { - ext.resultsViewProvider.updateResults(results, isInsights, connVersion); + ( + results: any, + isInsights: boolean, + connVersion?: number, + isPython?: boolean, + ) => { + ext.resultsViewProvider.updateResults( + results, + isInsights, + connVersion, + isPython, + ); }, ), commands.registerCommand("kdb.resultsPanel.clear", () => { diff --git a/src/services/resultsPanelProvider.ts b/src/services/resultsPanelProvider.ts index 7c65e1f4..3aa59a53 100644 --- a/src/services/resultsPanelProvider.ts +++ b/src/services/resultsPanelProvider.ts @@ -31,6 +31,7 @@ import { decodeQUTF } from "../utils/decode"; export class KdbResultsViewProvider implements WebviewViewProvider { public static readonly viewType = "kdb-results"; public isInsights = false; + public isPython = false; public _colorTheme: any; private _view?: WebviewView; private _results: string | string[] = ""; @@ -97,10 +98,12 @@ export class KdbResultsViewProvider implements WebviewViewProvider { queryResults: any, isInsights?: boolean, connVersion?: number, + isPython?: boolean, ) { if (this._view) { this._view.show?.(true); this.isInsights = !!isInsights; + this.isPython = !!isPython; this.updateWebView(queryResults, connVersion); } } @@ -231,11 +234,15 @@ export class KdbResultsViewProvider implements WebviewViewProvider { results: any, isInsights: boolean, connVersion?: number, + isPython?: boolean, ): GridOptions { let rowData = []; let columnDefs = []; - if (!isInsights || (connVersion && compareVersions(connVersion, 1.12))) { + if ( + (!isInsights && !isPython) || + (isInsights && connVersion && compareVersions(connVersion, 1.12)) + ) { rowData = this.updatedExtractRowData(results); columnDefs = this.updatedExtractColumnDefs(results); } else { @@ -370,6 +377,7 @@ export class KdbResultsViewProvider implements WebviewViewProvider { queryResult, this.isInsights, connVersion, + this.isPython, ); } if (gridOptions) {