Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions resources/evaluate.q
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@
text
};
generateColumns:{[removeTrailingNewline; toString; originalType; isAtomic; isKey; data; name]
attributes: attr data;
types: $[
isAtomic;
originalType;
Expand Down
11 changes: 7 additions & 4 deletions src/models/queryResult.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,15 @@ export const queryConstants = {
};

export interface StructuredTextColumns {
name: string;
name: "values" | "value" | string;
type: string;
values: any[];
order: any[];
values: string[] | string;
/* not the order for initial display */
order: number[] | "Not Yet Implemented for the input";
}

export interface StructuredTextResults {
columns: StructuredTextColumns[];
columns: StructuredTextColumns[] | StructuredTextColumns;
/* values array length may differ */
count: number;
}
3 changes: 2 additions & 1 deletion src/services/resultsPanelProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,8 @@ export class KdbResultsViewProvider implements WebviewViewProvider {

columnsArray.forEach((column) => {
const { name, values } = column;
values.forEach((value, index) => {
const valuesArray = Array.isArray(values) ? values : [values];
valuesArray.forEach((value, index) => {
rowData[index][name] = decodeQUTF(value);
});
});
Expand Down
5 changes: 3 additions & 2 deletions src/utils/queryUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -399,8 +399,9 @@ export function formatScratchpadStacktrace(stacktrace: ScratchpadStacktrace) {
const PNG = ["0x89", "0x50", "0x4e", "0x47", "0x0d", "0x0a", "0x1a", "0x0a"];

export function resultToBase64(result: any): string | undefined {
const bytes =
result?.columns?.type === "bytes" ? result.columns.values : result;
const bytes = Array.isArray(result?.columns)
? result.columns[0].values
: result?.columns?.values || result;
if (Array.isArray(bytes) && bytes.length > 66) {
for (let i = 0; i < PNG.length; i++) {
if (bytes[i] !== PNG[i] && bytes[i] !== parseInt(PNG[i], 16)) {
Expand Down
16 changes: 14 additions & 2 deletions test/suite/utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2017,13 +2017,25 @@ describe("Utils", () => {
});
it("should return base64 for minimum img str for structuredText", () => {
const result = queryUtils.resultToBase64({
columns: { type: "bytes", values: [...png, ...img] },
columns: { values: [...png, ...img] },
});
assert.ok(result.startsWith("data:image/png;base64"));
});
it("should return base64 for minimum img str for structuredText v2", () => {
const result = queryUtils.resultToBase64({
columns: [{ values: [...png, ...img] }],
});
assert.ok(result.startsWith("data:image/png;base64"));
});
it("should return undefined for bogus structuredText", () => {
const result = queryUtils.resultToBase64({
columns: { type: "bytes" },
columns: {},
});
assert.strictEqual(result, undefined);
});
it("should return undefined for bogus structuredText v2", () => {
const result = queryUtils.resultToBase64({
columns: [{}],
});
assert.strictEqual(result, undefined);
});
Expand Down
Loading