{"record":{"id":"d10d5856b7bd17a0","repo":"cube-js/cube","slug":"unload-is-not-supported","errorCode":null,"errorMessage":"Unload is not supported","messagePattern":"Unload is not supported","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/cubejs-firebolt-driver/src/FireboltDriver.ts","lineNumber":269,"sourceCode":"      return {\n        rowStream,\n        types,\n      };\n    } catch (error) {\n      if ((<any>error).status === 401 && retry) {\n        this.connection = null;\n        return this.streamResponse(query, parameters, false);\n      }\n      if ((<any>error).status === 404 && retry) {\n        await this.ensureEngineRunning();\n        return this.streamResponse(query, parameters, false);\n      }\n      throw error;\n    }\n  }\n\n  public async unload(): Promise<DownloadTableCSVData> {\n    throw new Error('Unload is not supported');\n  }\n\n  private async ensureEngineRunning() {\n    if (this.config.connection.engineName) {\n      const engine = await this.firebolt.resourceManager.engine.getByName(this.config.connection.engineName);\n      await engine.startAndWait();\n    }\n  }\n\n  private async queryResponse(query: string, parameters?: unknown[], retry = true): Promise<{\n    data: Row[];\n    meta: Meta[];\n  }> {\n    try {\n      const connection = await this.getConnection();\n\n      const statement = await connection.execute(query, {\n        settings: { output_format: OutputFormat.JSON, statement_timeout: this.config.requestTimeout },","sourceCodeStart":251,"sourceCodeEnd":287,"githubUrl":"https://github.com/cube-js/cube/blob/7d981676b36392fec34088b9afab6bdcad40207c/packages/cubejs-firebolt-driver/src/FireboltDriver.ts#L251-L287","documentation":"FireboltDriver.unload() implements the DownloadTableCSV interface but Firebolt does not support the UNLOAD mechanism this interface relies on, so the method unconditionally throws 'Unload is not supported'.","triggerScenarios":"Calling driver.unload() directly, or Cube flows that export a table to CSV via the driver's unload capability (e.g. export-bucket based pre-aggregation downloads) targeting a Firebolt datasource.","commonSituations":"Configuring downloadQueryResults/exportBucket flows that assume unload support; copying generic driver-dependent code from BigQuery/Snowflake setups to Firebolt.","solutions":["Do not use unload()/CSV-table-export with Firebolt; use query()+downloadQueryResults to fetch data instead.","Configure exportBucket with a supported driver if CSV export is required.","Intercept calls in a wrapper driver and route them to query-based extraction."],"exampleFix":"// before\nconst csv = await driver.unload();\n// after\nconst { rows } = await driver.downloadQueryResults('SELECT * FROM t', [], {});","handlingStrategy":"fallback","validationCode":"function supportsUnload(driver) {\n  // Firebolt's unload always throws\n  return driver.constructor.name !== 'FireboltDriver';\n}\nconst csv = supportsUnload(driver)\n  ? await driver.unload()\n  : await driver.downloadQueryResults('SELECT * FROM t', [], {});","typeGuard":null,"tryCatchPattern":"try {\n  return await driver.unload();\n} catch (e) {\n  if (e.message === 'Unload is not supported') {\n    return await driver.downloadQueryResults('SELECT * FROM t', [], {});\n  }\n  throw e;\n}","preventionTips":["Do not build CSV-export flows on unload() for Firebolt","Use query/downloadQueryResults-based extraction for Firebolt","Feature-detect driver capabilities before export operations"],"tags":["firebolt","unsupported-feature","csv-export","driver"],"backgroundTag":"unsupported-operation","analyzedSha":"7d981676b36392fec34088b9afab6bdcad40207c","analyzedAt":"2026-09-02T03:45:10.400Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T15:18:49.778Z"}