Skip to content
Open
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
2 changes: 1 addition & 1 deletion lib/DBSQLSession.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ export default class DBSQLSession implements IDBSQLSession {
}

if (ProtocolVersion.supportsArrowCompression(this.serverProtocolVersion) && request.canDownloadResult !== true) {
request.canDecompressLZ4Result = (options.useLZ4Compression ?? clientConfig.useLZ4Compression) && Boolean(LZ4);
request.canDecompressLZ4Result = (options.useLZ4Compression ?? clientConfig.useLZ4Compression) && Boolean(LZ4());
}

const operationPromise = driver.executeStatement(request);
Expand Down
4 changes: 2 additions & 2 deletions lib/result/ArrowResultHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export default class ArrowResultHandler implements IResultsProvider<ArrowBatch>
this.arrowSchema = arrowSchema ?? hiveSchemaToArrowSchema(schema);
this.isLZ4Compressed = lz4Compressed ?? false;

if (this.isLZ4Compressed && !LZ4) {
if (this.isLZ4Compressed && !LZ4()) {
throw new HiveDriverError('Cannot handle LZ4 compressed result: module `lz4` not installed');
}
}
Expand All @@ -52,7 +52,7 @@ export default class ArrowResultHandler implements IResultsProvider<ArrowBatch>
let totalRowCount = 0;
rowSet?.arrowBatches?.forEach(({ batch, rowCount }) => {
if (batch) {
batches.push(this.isLZ4Compressed ? LZ4!.decode(batch) : batch);
batches.push(this.isLZ4Compressed ? LZ4()!.decode(batch) : batch);
totalRowCount += rowCount.toNumber(true);
}
});
Expand Down
4 changes: 2 additions & 2 deletions lib/result/CloudFetchResultHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export default class CloudFetchResultHandler implements IResultsProvider<ArrowBa
this.source = source;
this.isLZ4Compressed = lz4Compressed ?? false;

if (this.isLZ4Compressed && !LZ4) {
if (this.isLZ4Compressed && !LZ4()) {
throw new HiveDriverError('Cannot handle LZ4 compressed result: module `lz4` not installed');
}
}
Expand Down Expand Up @@ -64,7 +64,7 @@ export default class CloudFetchResultHandler implements IResultsProvider<ArrowBa
}

if (this.isLZ4Compressed) {
batch.batches = batch.batches.map((buffer) => LZ4!.decode(buffer));
batch.batches = batch.batches.map((buffer) => LZ4()!.decode(buffer));
}
return batch;
}
Expand Down
12 changes: 11 additions & 1 deletion lib/utils/lz4.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,14 @@ function tryLoadLZ4Module(): LZ4Module | undefined {
}
}

export default tryLoadLZ4Module();
// The null is already tried resolving that failed
let resolvedModule: LZ4Module | null | undefined;

function getResolvedModule() {
if (resolvedModule === undefined) {
resolvedModule = tryLoadLZ4Module() ?? null;
}
return resolvedModule ?? undefined;
}

export default getResolvedModule;
Loading