constr

Automated Quality Gates, rev. 1, constr

constr~automated-quality-gates~1

Changes are expected to pass linting, tests, coverage collection, dependency audit, and SonarCloud analysis.

Rationale:

The package scripts, developer guide, and Sonar configuration define these checks.

Needs: dsn

doc/spec/design/constraints.md:87

In: 1
Browser and Node.js Runtime Support, rev. 1, constr

constr~browser-and-nodejs-runtime-support~1

The system must run in browser and Node.js runtimes for the core driver and pool features.

Rationale:

Application developers use the library in server-side Node.js services and browser-based applications. Supporting both runtimes lets them use one Exasol driver API across these application types.

Needs: dsn

doc/spec/design/constraints.md:19

In: 3
Exasol WebSocket SQL Protocol, rev. 1, constr

constr~exasol-websocket-sql-protocol~1

The system communicates with Exasol by sending JSON SQL protocol commands over WebSocket.

Rationale:

Connection serializes command objects to JSON and receives SQLResponse payloads.

Needs: dsn

doc/spec/design/constraints.md:63

In: 1
GitHub and npm Distribution, rev. 1, constr

constr~github-and-npm-distribution~1

The system is developed on GitHub and released as an npm package.

Rationale:

The README links GitHub Actions and npm badges. The developer guide documents a manual release process that triggers a GitHub release workflow publishing to npm.

Needs: dsn

doc/spec/design/constraints.md:76

In: 1
Injectable WebSocket Implementation, rev. 1, constr

constr~injectable-websocket-implementation~1

The system must receive its WebSocket implementation from the application through a factory function.

Rationale:

Browser and Node.js runtimes provide different WebSocket implementations, and the public constructors accept a websocketFactory.

Needs: dsn

doc/spec/design/constraints.md:30

In: 3
Node-only CSV Export, rev. 1, constr

constr~node-only-csv-export~1

CSV file export is limited to Node.js because it depends on local filesystem access and Node networking/TLS modules.

Rationale:

The implementation imports node:fs, node:path, node:net, and node:tls.

Needs: dsn

doc/spec/design/constraints.md:52

In: 6
Node-only CSV Import, rev. 1, constr

constr~node-only-csv-import~1

CSV file import is limited to Node.js because it depends on local filesystem access and Node networking/TLS modules.

Rationale:

The implementation imports node:fs, node:path, node:net, and node:tls.

Needs: dsn

doc/spec/design/constraints.md:41

In: 4
TypeScript Library Package, rev. 1, constr

constr~typescript-library-package~1

The system is implemented as a TypeScript npm package that publishes compiled artifacts from dist/ and type declarations through package.json.

Rationale:

package.json defines main, module, types, build scripts, and the npm package name @exasol/exasol-driver-ts.

Needs: dsn

doc/spec/design/constraints.md:8

In: 1

dsn

Browser WebSocket Runtime, rev. 1, dsn

dsn~runtime-browser-websocket~1

  • Given* a browser application
  • When* the application creates a driver with a factory returning the browser WebSocket
  • Then* the driver uses the supplied object through the ExaWebsocket interface
Needs: impl, itest

doc/spec/design/runtime_view.md:152

In: 2
Out: 3
CSV Export Cancellation, rev. 1, dsn

dsn~runtime-csv-export-cancellation~1

  • Given* an in-flight CSV export with an AbortSignal
  • When* the signal is aborted
  • Then* the driver destroys the destination write stream and both export-tunnel sockets, sends abortQuery for a still-pending server-side export without waiting for its response, removes the newly created destination file, and rejects the export promise with an AbortError using E-EDJS-31
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:374

In: 3
Out: 1
CSV Export Chunked Request Stream, rev. 1, dsn

dsn~runtime-csv-export-chunked-request-stream~1

  • Given* a tunnel HTTP request with Transfer-Encoding: chunked
  • When* the shared tunnel body reader receives the request
  • Then* it decodes the chunks and forwards only their payload data to a destination
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:361

In: 4
Out: 2
CSV Export Compressed File, rev. 1, dsn

dsn~runtime-csv-export-compressed-file~1

  • Given* a new local export destination ending in .zip, .gz, or .bz2
  • When* exportToCsvFile() builds the Exasol export SQL
  • Then* the driver selects the matching canonical 001.zip, 001.gz, or 001.bz2 remote file name case-insensitively and writes Exasol's compressed bytes unchanged to the local file
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:336

In: 5
Out: 2
CSV Export Destination File, rev. 1, dsn

dsn~runtime-csv-export-destination-file~1

  • Given* a Node.js driver and a local CSV export destination path
  • When* exportToCsvFile() is called
  • Then* the driver exclusively reserves the resolved path before creating an Exasol tunnel, rejects an existing file with E-EDJS-30, and removes its newly-created file when the export fails
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:309

In: 4
Out: 2
CSV Export File Stream, rev. 1, dsn

dsn~runtime-csv-export-file-stream~1

  • Given* a Node.js driver, an Exasol table or parenthesized SELECT query, and a new local CSV destination
  • When* exportToCsvFile() is called
  • Then* the driver creates an Exasol tunnel, wraps it with TLS, executes EXPORT <source> INTO CSV, streams Exasol's content-length-delimited or chunked HTTP request body into the file, destroys the tunnel sockets, and returns the export row count
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:322

In: 5
Out: 3
CSV Export Format Options, rev. 1, dsn

dsn~runtime-csv-export-format-options~1

  • Given* CSV export format options
  • When* the export SQL is built
  • Then* the driver appends Exasol CSV clauses for configured separator, delimiter, row separator, encoding, NULL literal, and column names while escaping SQL string literals
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:349

In: 4
Out: 1
CSV Import Cancellation, rev. 1, dsn

dsn~runtime-csv-import-cancellation~1

  • Given* an in-flight CSV import with an AbortSignal
  • When* the signal is aborted
  • Then* the driver destroys the file stream and both import-tunnel sockets, sends abortQuery for the server-side import without waiting for its response, and rejects the import promise with an AbortError
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:295

In: 4
Out: 1
CSV Import File Readability Check, rev. 1, dsn

dsn~runtime-csv-import-file-readability-check~1

  • Given* a Node.js driver and a local CSV file path
  • When* importFromCsvFile() is called
  • Then* the driver checks file readability before creating an Exasol tunnel and rejects with error code E-EDJS-14 if the file is missing or unreadable
Needs: impl, utest

doc/spec/design/runtime_view.md:244

In: 3
Out: 2
CSV Import File Stream, rev. 1, dsn

dsn~runtime-csv-import-file-stream~1

  • Given* a Node.js driver, readable local CSV file, and target table
  • When* importFromCsvFile() is called
  • Then* the driver creates an Exasol tunnel, wraps it with TLS, executes IMPORT INTO ... FROM CSV, waits for Exasol's HTTP request, streams the file using chunked HTTP response data, destroys the secure socket, and returns the import row count
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:270

In: 9
Out: 2
CSV Import Format Options, rev. 1, dsn

dsn~runtime-csv-import-format-options~1

  • Given* CSV format options
  • When* the import SQL is built
  • Then* the driver appends Exasol CSV clauses for configured separator, delimiter, row separator, encoding, skip count, trim mode, and NULL literal while escaping SQL string literals
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:283

In: 3
Out: 1
CSV Import Missing Target Table, rev. 1, dsn

dsn~runtime-csv-import-missing-target-table~1

  • Given* a readable local CSV file and a target table name that does not exist
  • When* importFromCsvFile() executes the generated IMPORT INTO ... FROM CSV SQL
  • Then* Exasol returns a SQL error and the driver rejects the import promise with that error
Needs: impl, itest

doc/spec/design/runtime_view.md:257

In: 2
Out: 2
Command Execution, rev. 1, dsn

dsn~runtime-command-execution~1

  • Given* an authenticated driver and SQL text
  • When* execute() is called
  • Then* the driver sends an execute command, follows the protocol fetch flow for result-set responses, validates that the final result is a row count, and returns that row count
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:78

In: 3
Out: 1
Connect with Basic Authentication, rev. 1, dsn

dsn~runtime-connect-basic-authentication~1

  • Given* a driver configured with user, password, host, port, and WebSocket factory
  • When* connect() is called
  • Then* the driver builds the WebSocket URL, creates a Connection, sends a login command, encrypts the password with the returned public key, sends login metadata and session attributes, enables compression if configured, and resolves the connection promise
Needs: impl, itest

doc/spec/design/runtime_view.md:12

In: 3
Out: 4
Driver Async Disposal, rev. 1, dsn

dsn~runtime-driver-async-disposal~1

  • Given* a connected ExasolDriver
  • When* TypeScript invokes Symbol.asyncDispose
  • Then* the driver delegates to close() and waits for all connections to close
Needs: impl, utest

doc/spec/design/runtime_view.md:39

In: 2
Out: 1
Fetch Size, rev. 1, dsn

dsn~runtime-query-fetch-size~1

  • Given* a configured fetchSize value and a query result with more rows available
  • When* the driver fetches an additional result-set page
  • Then* the driver requests the configured number of bytes from Exasol
Needs: impl, utest

doc/spec/design/runtime_view.md:66

In: 2
Out: 1
In-Flight WebSocket Failure, rev. 1, dsn

dsn~runtime-inflight-websocket-failure~1

  • Given* a Connection with a command awaiting a WebSocket response
  • When* the WebSocket emits an error or close event
  • Then* Connection marks itself broken and inactive, rejects the pending command with the available event details, and ExasolPool destroys the broken borrowed driver rather than returning it to the pool
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:138

In: 8
Out: 1
Node.js WebSocket Runtime, rev. 1, dsn

dsn~runtime-node-websocket~1

  • Given* a Node.js application
  • When* the application creates a driver with a factory returning a compatible WebSocket such as ws
  • Then* the driver uses the supplied object through the same ExaWebsocket interface
Needs: impl, itest

doc/spec/design/runtime_view.md:166

In: 2
Out: 3
Pool Async Disposal, rev. 1, dsn

dsn~runtime-pool-async-disposal~1

  • Given* an ExasolPool
  • When* TypeScript invokes Symbol.asyncDispose
  • Then* the pool drains before clearing its pooled driver instances
Needs: impl, utest

doc/spec/design/runtime_view.md:230

In: 2
Out: 1
Pool Borrow Validation, rev. 1, dsn

dsn~runtime-pool-borrow-validation~1

  • Given* an idle driver in an ExasolPool
  • When* generic-pool borrows the driver for a query
  • Then* it validates that the driver has no broken connection, destroys an invalid driver, and creates a replacement before delegating the query
Needs: impl, itest

doc/spec/design/runtime_view.md:206

In: 2
Out: 1
Pool Capacity Management, rev. 1, dsn

dsn~runtime-pool-capacity-management~1

  • Given* concurrent work submitted to an ExasolPool
  • When* the pool needs additional driver instances
  • Then* the underlying generic-pool creates and reuses drivers while honoring the configured minimum and maximum size limits
Needs: impl, itest

doc/spec/design/runtime_view.md:182

In: 2
Out: 1
Pool Shutdown, rev. 1, dsn

dsn~runtime-pool-shutdown~1

  • Given* an ExasolPool
  • When* drain() and then clear() are called
  • Then* the underlying generic-pool drains pending work and destroys pooled drivers by closing them
Needs: impl, itest

doc/spec/design/runtime_view.md:218

In: 3
Out: 1
Pooled Query Execution, rev. 1, dsn

dsn~runtime-pooled-query-execution~1

  • Given* an ExasolPool
  • When* a query is submitted
  • Then* the pool acquires a driver, delegates the query, releases the driver in a finally block, and logs/rethrows errors
Needs: impl, itest

doc/spec/design/runtime_view.md:194

In: 2
Out: 1
Prepared Statement Async Disposal, rev. 1, dsn

dsn~runtime-prepared-statement-async-disposal~1

  • Given* a prepared Statement
  • When* TypeScript invokes Symbol.asyncDispose
  • Then* the statement delegates to close(), closes the remote statement, and releases its connection
Needs: impl, utest

doc/spec/design/runtime_view.md:114

Out: 1
Prepared Statement Execution, rev. 1, dsn

dsn~runtime-prepared-statement-execution~1

  • Given* an authenticated driver and prepared SQL text
  • When* prepare() and Statement.execute() are called
  • Then* the driver creates a prepared statement, validates that supplied positional values align with parameter columns, sends the positional values as column-oriented data to Exasol, and releases the connection when the statement is closed
Needs: impl

doc/spec/design/runtime_view.md:102

Out: 1
Publish CJS and ESM, rev. 1, dsn

dsn~decision-publish-cjs-and-esm~1

The system builds CommonJS and ES module outputs from the same TypeScript entry point.

Rationale:

This improves compatibility with different consuming application build systems.

Needs: impl

doc/spec/design/architecture_decisions.md:163

Out: 1
Publish Through GitHub Release Workflow, rev. 1, dsn

dsn~decision-use-github-release-workflow-for-npm-publishing~1

The system publishes the npm package from the GitHub release workflow after quality gates, package build, and package packing succeed.

Rationale:

Publishing from a dedicated release workflow keeps distribution tied to GitHub releases and uses npm publishing credentials only in the release job.

doc/spec/design/architecture_decisions.md:179

Out: 1
Query Cancellation, rev. 1, dsn

dsn~runtime-query-cancellation~1

  • Given* an operation using a connection
  • When* the application invokes the cancel callback or driver.cancel()
  • Then* the connection sends abortQuery without waiting for a result payload
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:126

In: 5
Out: 1
Query Execution, rev. 3, dsn

dsn~runtime-query-execution~3

  • Given* an authenticated driver and SQL text
  • When* query() is called
  • Then* the driver sends an execute command, fetches additional result-set pages until the result is complete or resultSetMaxRows is reached, closes remote result sets and consumes their acknowledgements before reusing the connection, validates that the result is a result set, and returns QueryResult
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:53

In: 5
Out: 2
Raw Response Execution, rev. 1, dsn

dsn~runtime-raw-response-execution~1

  • Given* an authenticated driver
  • When* query() or execute() is called with responseType set to raw
  • Then* the driver returns the fetched SQLResponse<SQLQueriesResponse> without converting it to a QueryResult or row count
Needs: impl, itest, utest

doc/spec/design/runtime_view.md:90

In: 5
Out: 1
Reject Missing Credentials, rev. 1, dsn

dsn~runtime-reject-missing-credentials~1

  • Given* a driver without basic-auth credentials and without token credentials
  • When* connect() is called
  • Then* the driver rejects with ErrInvalidCredentials before opening a WebSocket
Needs: impl, utest

doc/spec/design/runtime_view.md:27

Out: 1
Stream CSV Through Export Tunnel, rev. 1, dsn

dsn~decision-stream-csv-through-export-tunnel~1

The system exports local CSV files by opening an Exasol export tunnel and streaming Exasol's content-length-delimited or chunked HTTP request body into a newly reserved file. Tags: csv-export, nodejs

Rationale:

Streaming supports larger files and matches Exasol's EXPORT ... INTO CSV AT ... FILE ... mechanism while avoiding an overwrite race at the local destination.

Needs: impl

doc/spec/design/architecture_decisions.md:104

In: 1
Out: 4
Stream CSV Through Import Tunnel, rev. 1, dsn

dsn~decision-stream-csv-through-import-tunnel~1

The system imports local CSV files by opening an Exasol import tunnel and streaming the file as chunked HTTP response data. Tags: csv-import, nodejs

Rationale:

Streaming supports larger files and matches Exasol's IMPORT FROM CSV AT ... FILE ... mechanism.

Needs: impl

doc/spec/design/architecture_decisions.md:75

In: 1
Out: 2
Use WebSocket Factory, rev. 1, dsn

dsn~decision-use-websocket-factory~1

The system uses an injected WebSocket factory as the runtime abstraction for database connections.

Rationale:

This supports the documented browser and Node.js usage model and avoids forcing one runtime's WebSocket implementation onto all consumers.

doc/spec/design/architecture_decisions.md:18

Out: 2
Use generic-pool, rev. 1, dsn

dsn~decision-use-generic-pool~1

The system uses generic-pool for connection pool lifecycle and capacity management.

Rationale:

Pooling is a general-purpose concern. Reusing an existing library keeps the Exasol-specific code focused on driver behavior.

Needs: impl

doc/spec/design/architecture_decisions.md:44

In: 1
Out: 4
Use the Destination Extension for Compression, rev. 1, dsn

dsn~decision-select-csv-export-compression~1

The CSV export maps destination file extensions .zip, .gz, and .bz2 case-insensitively to Exasol remote filenames 001.zip, 001.gz, and 001.bz2; all other destinations use 001.csv. Tags: csv-export, compression, nodejs

Rationale:

Exasol selects the export compression format from the FILE name. Reusing the local extension avoids expanding the public driver API and preserves uncompressed export behavior.

Needs: impl

doc/spec/design/architecture_decisions.md:134

In: 1
Out: 2
Verification Gate Definition, rev. 1, dsn

dsn~verification-gate-definition~1

The system defines quality gates through npm scripts, Jest project configuration, ESLint configuration, npm audit configuration, and SonarCloud project settings.

doc/spec/design/quality_requirements.md:63

Out: 1

feat

CSV File Export, rev. 1, feat

feat~csv-file-export~1

The driver lets Node.js applications export Exasol tables or query results to new local CSV files.

Needs: req

doc/spec/system_requirements.md:118

In: 4
CSV File Import, rev. 1, feat

feat~csv-file-import~1

The driver lets Node.js applications import local CSV files into Exasol tables.

Needs: req

doc/spec/system_requirements.md:111

In: 3
Connection Pooling, rev. 1, feat

feat~connection-pooling~1

The driver provides a pool API for applications that need multiple reusable database connections.

Needs: req

doc/spec/system_requirements.md:104

In: 2
Explicit Resource Management, rev. 1, feat

feat~explicit-resource-management~1

The driver supports TypeScript explicit resource management for closeable driver resources.

Needs: req

doc/spec/system_requirements.md:90

In: 1
Runtime Portability, rev. 1, feat

feat~runtime-portability~1

The driver supports browser and Node.js applications without hard-wiring one concrete WebSocket implementation.

Needs: req

doc/spec/system_requirements.md:97

In: 2
SQL Connectivity, rev. 1, feat

feat~sql-connectivity~1

The driver lets applications connect to Exasol, authenticate, execute SQL, read results, and close the connection.

Needs: req

doc/spec/system_requirements.md:83

In: 7
Secure and Configurable Sessions, rev. 1, feat

feat~secure-configurable-sessions~1

The driver lets applications configure session behavior including TLS usage, authentication mode, autocommit, compression, schema, client metadata, fetch size, and result row limits.

Needs: req

doc/spec/system_requirements.md:125

In: 3

impl

decision-publish-cjs-and-esm-2657012521, rev. 0, impl

impl~decision-publish-cjs-and-esm-2657012521~0

rollup.config.mjs:6

Out: 1
decision-select-csv-export-compression-2566593369, rev. 0, impl

impl~decision-select-csv-export-compression-2566593369~0

src/lib/import/export-sql-builder.ts:7

Out: 1
decision-stream-csv-through-export-tunnel-1614011297, rev. 0, impl

impl~decision-stream-csv-through-export-tunnel-1614011297~0

src/lib/import/csv-file-export.ts:23

Out: 1
decision-stream-csv-through-import-tunnel-2296957411, rev. 0, impl

impl~decision-stream-csv-through-import-tunnel-2296957411~0

src/lib/import/csv-file-import.ts:23

Out: 1
decision-use-generic-pool-3849136868, rev. 0, impl

impl~decision-use-generic-pool-3849136868~0

src/lib/sql-pool.ts:9

Out: 1
do-not-allow-disabling-encryption-251968673, rev. 0, impl

impl~do-not-allow-disabling-encryption-251968673~0

src/lib/sql-client.ts:115

Out: 1
runtime-browser-websocket-3868031195, rev. 0, impl

impl~runtime-browser-websocket-3868031195~0

src/lib/connection.ts:9

Out: 1
runtime-command-execution-3157925983, rev. 0, impl

impl~runtime-command-execution-3157925983~0

src/lib/sql-client.ts:333

Out: 1
runtime-connect-basic-authentication-4170894924, rev. 0, impl

impl~runtime-connect-basic-authentication-4170894924~0

src/lib/sql-client.ts:95

Out: 1
runtime-csv-export-cancellation-1269674408, rev. 0, impl

impl~runtime-csv-export-cancellation-1269674408~0

src/lib/import/csv-file-export.ts:30

Out: 1
runtime-csv-export-chunked-request-stream-4151325165, rev. 0, impl

impl~runtime-csv-export-chunked-request-stream-4151325165~0

src/lib/import/http-protocol.ts:89

Out: 1
runtime-csv-export-compressed-file-2837891483, rev. 0, impl

impl~runtime-csv-export-compressed-file-2837891483~0

src/lib/import/csv-file-export.ts:29

Out: 1
runtime-csv-export-compressed-file-408400465, rev. 0, impl

impl~runtime-csv-export-compressed-file-408400465~0

src/lib/import/export-sql-builder.ts:6

Out: 1
runtime-csv-export-destination-file-979787761, rev. 0, impl

impl~runtime-csv-export-destination-file-979787761~0

src/lib/import/csv-file-export.ts:27

Out: 1
runtime-csv-export-file-stream-923094657, rev. 0, impl

impl~runtime-csv-export-file-stream-923094657~0

src/lib/import/csv-file-export.ts:28

Out: 1
runtime-csv-export-format-options-1139905334, rev. 0, impl

impl~runtime-csv-export-format-options-1139905334~0

src/lib/import/export-sql-builder.ts:5

Out: 1
runtime-csv-import-cancellation-3535451710, rev. 0, impl

impl~runtime-csv-import-cancellation-3535451710~0

src/lib/import/csv-file-import.ts:37

Out: 1
runtime-csv-import-file-readability-check-4196736191, rev. 0, impl

impl~runtime-csv-import-file-readability-check-4196736191~0

src/lib/import/csv-file-import.ts:34

Out: 1
runtime-csv-import-file-stream-1285989793, rev. 0, impl

impl~runtime-csv-import-file-stream-1285989793~0

src/lib/import/http-protocol.ts:7

Out: 1
runtime-csv-import-file-stream-1563651679, rev. 0, impl

impl~runtime-csv-import-file-stream-1563651679~0

src/lib/import/csv-file-import.ts:36

Out: 1
runtime-csv-import-file-stream-2387968671, rev. 0, impl

impl~runtime-csv-import-file-stream-2387968671~0

src/lib/import/http-transport.ts:4

Out: 1
runtime-csv-import-file-stream-531404025, rev. 0, impl

impl~runtime-csv-import-file-stream-531404025~0

src/lib/import/tls-transport.ts:5

Out: 1
runtime-csv-import-format-options-2895147665, rev. 0, impl

impl~runtime-csv-import-format-options-2895147665~0

src/lib/import/import-sql-builder.ts:4

Out: 1
runtime-csv-import-missing-target-table-3890302515, rev. 0, impl

impl~runtime-csv-import-missing-target-table-3890302515~0

src/lib/import/csv-file-import.ts:35

Out: 1
runtime-driver-async-disposal-2595884859, rev. 0, impl

impl~runtime-driver-async-disposal-2595884859~0

src/lib/sql-client.ts:200

Out: 1
runtime-inflight-websocket-failure-1016846008, rev. 0, impl

impl~runtime-inflight-websocket-failure-1016846008~0

src/lib/connection.ts:11

Out: 1
runtime-node-websocket-1471684312, rev. 0, impl

impl~runtime-node-websocket-1471684312~0

src/lib/connection.ts:10

Out: 1
runtime-pool-async-disposal-4016640037, rev. 0, impl

impl~runtime-pool-async-disposal-4016640037~0

src/lib/sql-pool.ts:162

Out: 1
runtime-pool-borrow-validation-753009827, rev. 0, impl

impl~runtime-pool-borrow-validation-753009827~0

src/lib/sql-pool.ts:34

Out: 1
runtime-pool-capacity-management-1948294452, rev. 0, impl

impl~runtime-pool-capacity-management-1948294452~0

src/lib/sql-pool.ts:15

Out: 1
runtime-pool-shutdown-3742186949, rev. 0, impl

impl~runtime-pool-shutdown-3742186949~0

src/lib/sql-pool.ts:157

Out: 1
runtime-pool-shutdown-762000504, rev. 0, impl

impl~runtime-pool-shutdown-762000504~0

src/lib/sql-pool.ts:150

Out: 1
runtime-pooled-query-execution-1618906052, rev. 0, impl

impl~runtime-pooled-query-execution-1618906052~0

src/lib/sql-pool.ts:128

Out: 1
runtime-prepared-statement-async-disposal-1141960773, rev. 0, impl

impl~runtime-prepared-statement-async-disposal-1141960773~0

src/lib/statement.ts:34

Out: 1
runtime-prepared-statement-execution-1839467287, rev. 0, impl

impl~runtime-prepared-statement-execution-1839467287~0

src/lib/statement.ts:8

Out: 1
runtime-prepared-statement-execution-3277476545, rev. 0, impl

impl~runtime-prepared-statement-execution-3277476545~0

src/lib/sql-client.ts:415

Out: 1
runtime-query-cancellation-1288459654, rev. 0, impl

impl~runtime-query-cancellation-1288459654~0

src/lib/connection.ts:139

Out: 1
runtime-query-cancellation-1615812187, rev. 0, impl

impl~runtime-query-cancellation-1615812187~0

src/lib/sql-client.ts:169

Out: 1
runtime-query-execution-18274776, rev. 0, impl

impl~runtime-query-execution-18274776~0

src/lib/fetch.ts:84

Out: 1
runtime-query-execution-3823768550, rev. 0, impl

impl~runtime-query-execution-3823768550~0

src/lib/sql-client.ts:263

Out: 1
runtime-query-execution-943053888, rev. 0, impl

impl~runtime-query-execution-943053888~0

src/lib/fetch.ts:37

Out: 1
runtime-query-fetch-size-2137897987, rev. 0, impl

impl~runtime-query-fetch-size-2137897987~0

src/lib/fetch.ts:128

Out: 1
runtime-raw-response-execution-925589351, rev. 0, impl

impl~runtime-raw-response-execution-925589351~0

src/lib/sql-client.ts:334

Out: 1
runtime-raw-response-execution-934538860, rev. 0, impl

impl~runtime-raw-response-execution-934538860~0

src/lib/sql-client.ts:264

Out: 1
runtime-reject-missing-credentials-918952963, rev. 0, impl

impl~runtime-reject-missing-credentials-918952963~0

src/lib/sql-client.ts:96

Out: 1

itest

runtime-browser-websocket-2359466405, rev. 0, itest

itest~runtime-browser-websocket-2359466405~0

integration-test/testcases/basic.spec.ts:8

Out: 1
runtime-command-execution-803439283, rev. 0, itest

itest~runtime-command-execution-803439283~0

integration-test/testcases/basic.spec.ts:125

Out: 1
runtime-connect-basic-authentication-3803967751, rev. 0, itest

itest~runtime-connect-basic-authentication-3803967751~0

integration-test/testcases/basic.spec.ts:7

Out: 1
runtime-connect-basic-authentication-4266807857, rev. 0, itest

itest~runtime-connect-basic-authentication-4266807857~0

integration-test/testcases/compression.basic.spec.ts:8

Out: 1
runtime-csv-export-cancellation-3383002205, rev. 0, itest

itest~runtime-csv-export-cancellation-3383002205~0

integration-test/node/export.spec.ts:114

Out: 1
runtime-csv-export-chunked-request-stream-1806326816, rev. 0, itest

itest~runtime-csv-export-chunked-request-stream-1806326816~0

integration-test/node/http-protocol.spec.ts:118

Out: 1
runtime-csv-export-compressed-file-331358629, rev. 0, itest

itest~runtime-csv-export-compressed-file-331358629~0

integration-test/node/export.spec.ts:19

Out: 1
runtime-csv-export-compressed-file-3891599440, rev. 0, itest

itest~runtime-csv-export-compressed-file-3891599440~0

integration-test/node/export.spec.ts:98

Out: 1
runtime-csv-export-destination-file-3165540937, rev. 0, itest

itest~runtime-csv-export-destination-file-3165540937~0

integration-test/node/export.spec.ts:16

Out: 1
runtime-csv-export-destination-file-4213697548, rev. 0, itest

itest~runtime-csv-export-destination-file-4213697548~0

integration-test/node/export.spec.ts:106

Out: 1
runtime-csv-export-file-stream-2291618759, rev. 0, itest

itest~runtime-csv-export-file-stream-2291618759~0

integration-test/node/export.spec.ts:75

Out: 1
runtime-csv-export-file-stream-4164078873, rev. 0, itest

itest~runtime-csv-export-file-stream-4164078873~0

integration-test/node/export.spec.ts:81

Out: 1
runtime-csv-export-file-stream-883986933, rev. 0, itest

itest~runtime-csv-export-file-stream-883986933~0

integration-test/node/export.spec.ts:17

Out: 1
runtime-csv-export-format-options-1959572491, rev. 0, itest

itest~runtime-csv-export-format-options-1959572491~0

integration-test/node/export.spec.ts:87

Out: 1
runtime-csv-export-format-options-82010618, rev. 0, itest

itest~runtime-csv-export-format-options-82010618~0

integration-test/node/export.spec.ts:18

Out: 1
runtime-csv-import-cancellation-2861001917, rev. 0, itest

itest~runtime-csv-import-cancellation-2861001917~0

integration-test/node/import.spec.ts:64

Out: 1
runtime-csv-import-file-stream-1441692425, rev. 0, itest

itest~runtime-csv-import-file-stream-1441692425~0

integration-test/node/import.spec.ts:15

Out: 1
runtime-csv-import-file-stream-1965268677, rev. 0, itest

itest~runtime-csv-import-file-stream-1965268677~0

integration-test/node/http-protocol.spec.ts:6

Out: 1
runtime-csv-import-format-options-2881183408, rev. 0, itest

itest~runtime-csv-import-format-options-2881183408~0

integration-test/node/import.spec.ts:16

Out: 1
runtime-csv-import-missing-target-table-642236322, rev. 0, itest

itest~runtime-csv-import-missing-target-table-642236322~0

integration-test/node/import.spec.ts:14

Out: 1
runtime-inflight-websocket-failure-2501328451, rev. 0, itest

itest~runtime-inflight-websocket-failure-2501328451~0

integration-test/node/connection-lifecycle.spec.ts:8

Out: 1
runtime-node-websocket-2553668966, rev. 0, itest

itest~runtime-node-websocket-2553668966~0

integration-test/testcases/basic.spec.ts:9

Out: 1
runtime-pool-borrow-validation-1511128639, rev. 0, itest

itest~runtime-pool-borrow-validation-1511128639~0

integration-test/node/connection-lifecycle.spec.ts:96

Out: 1
runtime-pool-capacity-management-4069079944, rev. 0, itest

itest~runtime-pool-capacity-management-4069079944~0

integration-test/testcases/pool.basic.spec.ts:8

Out: 1
runtime-pool-shutdown-4283500229, rev. 0, itest

itest~runtime-pool-shutdown-4283500229~0

integration-test/testcases/pool.basic.spec.ts:10

Out: 1
runtime-pooled-query-execution-227348097, rev. 0, itest

itest~runtime-pooled-query-execution-227348097~0

integration-test/testcases/pool.basic.spec.ts:9

Out: 1
runtime-query-cancellation-1757572639, rev. 0, itest

itest~runtime-query-cancellation-1757572639~0

integration-test/testcases/basic.spec.ts:146

Out: 1
runtime-query-cancellation-3769894350, rev. 0, itest

itest~runtime-query-cancellation-3769894350~0

integration-test/testcases/basic.spec.ts:109

Out: 1
runtime-query-execution-1062917651, rev. 0, itest

itest~runtime-query-execution-1062917651~0

integration-test/testcases/basic.spec.ts:45

Out: 1
runtime-raw-response-execution-862024696, rev. 0, itest

itest~runtime-raw-response-execution-862024696~0

integration-test/testcases/basic.spec.ts:127

Out: 1

req

Automatically Dispose Driver Resources, rev. 1, req

req~automatically-dispose-driver-resources~1

The application developer uses TypeScript await using declarations to automatically clean up drivers, prepared statements, and connection pools when leaving scope.

Needs: scn

doc/spec/system_requirements.md:207

In: 3
Out: 1
Cancel CSV File Export, rev. 1, req

req~cancel-csv-file-export~1

The Node.js application cancels an in-flight CSV file export through an AbortSignal, promptly releases the local file and export-tunnel resources, and removes the partial output file.

Needs: scn

doc/spec/system_requirements.md:317

In: 1
Out: 1
Cancel CSV File Import, rev. 1, req

req~cancel-csv-file-import~1

The Node.js application cancels an in-flight CSV file import through an AbortSignal and promptly releases the local file and import-tunnel resources.

Needs: scn

doc/spec/system_requirements.md:275

In: 1
Out: 1
Cancel Running Work, rev. 1, req

req~cancel-running-work~1

The application developer cancels active database work through the driver.

Needs: scn

doc/spec/system_requirements.md:186

In: 1
Out: 1
Configure CSV Export Format, rev. 1, req

req~configure-csv-export-format~1

The Node.js application configures CSV export format options including column separator, column delimiter, row separator, encoding, NULL representation, and column names.

Needs: scn

doc/spec/system_requirements.md:297

In: 1
Out: 1
Configure CSV Format, rev. 1, req

req~configure-csv-format~1

The Node.js application developer configures CSV import format options including column separator, column delimiter, row separator, encoding, skipped rows, trimming, and NULL representation.

Needs: scn

doc/spec/system_requirements.md:265

In: 1
Out: 1
Configure Session Attributes, rev. 1, req

req~configure-session-attributes~1

The application developer configures session attributes including autocommit, schema, compression, fetch size, result row limit, client name, and client version.

Needs: scn

doc/spec/system_requirements.md:351

In: 3
Out: 1
Connect to Exasol, rev. 1, req

req~connect-to-exasol~1

The application developer creates a driver with database connection settings, authenticates with credentials or tokens, and establishes a database session.

Needs: scn

doc/spec/system_requirements.md:136

In: 2
Out: 1
Don't Allow Disabling Encryption, rev. 1, req

req~do-not-allow-disabling-encryption~1

Disabling encryption is not possible.

Rationale:

All supported Exasol versions require encrypted connections. Unecrypted connections are rejected.

Needs: impl

doc/spec/system_requirements.md:337

In: 1
Out: 1
Encrypt Connections by Default, rev. 1, req

req~encrypt-connections-by-default~1

The application developer uses encrypted WebSocket connections by default.

Needs: scn

doc/spec/system_requirements.md:327

In: 1
Out: 1
Execute SQL Commands, rev. 1, req

req~execute-sql-commands~1

The application developer executes SQL commands and receives the affected row count.

Needs: scn

doc/spec/system_requirements.md:156

In: 1
Out: 1
Execute SQL Queries, rev. 1, req

req~execute-sql-queries~1

The application developer executes a SQL query and retrieves result metadata and rows.

Needs: scn

doc/spec/system_requirements.md:146

In: 1
Out: 1
Export Compressed Local CSV Files, rev. 1, req

req~export-compressed-local-csv-files~1

The Node.js application exports an Exasol table or query result to a new local ZIP, GZIP, or BZIP2-compressed CSV file.

Needs: scn

doc/spec/system_requirements.md:307

In: 1
Out: 1
Export Local CSV Files, rev. 1, req

req~export-local-csv-files~1

The Node.js application exports an Exasol table or query result to a new local CSV file and receives the exported row count.

Needs: scn

doc/spec/system_requirements.md:287

In: 4
Out: 1
Handle Unexpected WebSocket Termination, rev. 2, req

req~handle-unexpected-websocket-termination~2

The application receives a rejected command promise when the WebSocket closes or errors during database work. A connection pool discards that broken driver and validates idle drivers before handing them out, replacing a driver whose WebSocket closed while idle.

Needs: scn

doc/spec/system_requirements.md:196

In: 2
Out: 2
Import Local CSV Files, rev. 1, req

req~import-local-csv-files~1

The Node.js application developer imports a readable local CSV file into a target Exasol table and receives the imported row count.

Needs: scn

doc/spec/system_requirements.md:255

In: 3
Out: 1
Manage a Connection Pool, rev. 1, req

req~manage-connection-pool~1

The application developer creates a connection pool with configurable minimum and maximum sizes, executes queries through it, drains it, and clears it.

Needs: scn

doc/spec/system_requirements.md:243

In: 3
Out: 1
Receive Raw SQL Responses, rev. 1, req

req~receive-raw-sql-responses~1

The application developer requests raw Exasol protocol responses for queries and commands when the normalized return type is not sufficient, for example to inspect protocol fields such as status, attributes, or responseData.

Needs: scn

doc/spec/system_requirements.md:166

In: 1
Out: 1
Run in Browser, rev. 1, req

req~run-in-browser~1

The application developer uses the package in browser runtimes by supplying a WebSocket factory that returns the runtime-provided WebSocket implementation.

Needs: scn

doc/spec/system_requirements.md:219

In: 1
Out: 1
Run in Node.js, rev. 1, req

req~run-in-nodejs~1

The application developer uses the package in Node.js runtimes by supplying a WebSocket factory that returns a compatible Node.js WebSocket implementation.

Rationale:

This keeps server-side consumers independent from the browser runtime while preserving the same package contract.

Needs: scn

doc/spec/system_requirements.md:229

In: 1
Out: 1
Use Prepared Statements, rev. 1, req

req~use-prepared-statements~1

The application developer creates prepared statements, executes them with positional values, and closes them.

Needs: scn

doc/spec/system_requirements.md:176

In: 1
Out: 1

scn

Automatically Dispose a Connection Pool, rev. 1, scn

scn~async-dispose-connection-pool~1

  • Given* an ExasolPool in an await using declaration
  • When* execution leaves the declaration's scope
  • Then* the pool drains and clears its driver instances
Needs: dsn, uman

doc/spec/system_requirements.md:559

In: 2
Out: 1
Automatically Dispose a Driver, rev. 1, scn

scn~async-dispose-driver~1

  • Given* a connected ExasolDriver in an await using declaration
  • When* execution leaves the declaration's scope
  • Then* the driver closes its database connections
Needs: dsn, uman

doc/spec/system_requirements.md:475

In: 2
Out: 1
Automatically Dispose a Prepared Statement, rev. 1, scn

scn~async-dispose-prepared-statement~1

  • Given* a prepared statement in an await using declaration
  • When* execution leaves the declaration's scope
  • Then* the driver closes the prepared statement and releases its connection
Needs: dsn, uman

doc/spec/system_requirements.md:487

In: 2
Out: 1
Browser Connection Uses Native WebSocket, rev. 1, scn

scn~browser-connection-uses-native-websocket~1

  • Given* a browser application with native WebSocket
  • When* the application creates a driver with a factory returning new WebSocket(url)
  • Then* the driver can use the browser WebSocket implementation without a Node.js WebSocket dependency
Needs: dsn

doc/spec/system_requirements.md:499

In: 1
Out: 1
CSV Export Applies Format Options, rev. 1, scn

scn~csv-export-applies-format-options~1

  • Given* a Node.js application and CSV export format options for columnSeparator, columnDelimiter, rowSeparator, encoding, null, or withColumnNames
  • When* the application calls exportToCsvFile() with those options
  • Then* the driver adds the corresponding Exasol EXPORT INTO CSV format clauses
Needs: dsn, uman

doc/spec/system_requirements.md:683

In: 2
Out: 1
CSV Export Compressed File Succeeds, rev. 1, scn

scn~csv-export-compressed-file-succeeds~1

  • Given* a Node.js application, an authenticated driver, an Exasol table or parenthesized SELECT query, and a new destination path ending in .zip, .gz, or .bz2
  • When* the application calls exportToCsvFile()
  • Then* the driver requests the matching compressed export file from Exasol and writes its compressed bytes unchanged to the local destination
Needs: dsn, uman

doc/spec/system_requirements.md:659

In: 3
Out: 1
CSV Export Is Cancelled, rev. 1, scn

scn~csv-export-is-cancelled~1

  • Given* a Node.js application exporting a local CSV file with an AbortSignal
  • When* the application aborts the signal while the export is in flight
  • Then* the driver stops receiving export data, closes the export tunnel, aborts the server-side export query, removes the partial local file, and rejects promptly with an AbortError using E-EDJS-31
Needs: dsn, uman

doc/spec/system_requirements.md:707

In: 2
Out: 1
CSV Export Query Succeeds, rev. 1, scn

scn~csv-export-query-succeeds~1

  • Given* a Node.js application, an authenticated driver, a parenthesized Exasol SELECT query, and a destination path that does not exist
  • When* the application calls exportToCsvFile()
  • Then* the driver streams the query result as CSV data through Exasol's export tunnel into the new local file and resolves with the exported row count
Needs: dsn, uman

doc/spec/system_requirements.md:647

In: 3
Out: 1
CSV Export Rejects Existing Destination, rev. 1, scn

scn~csv-export-rejects-existing-destination~1

  • Given* a Node.js application, an authenticated driver, and a destination path that already exists
  • When* the application calls exportToCsvFile()
  • Then* the driver rejects before opening the export tunnel with error code E-EDJS-30 and leaves the existing file unchanged
Needs: dsn, uman

doc/spec/system_requirements.md:671

In: 3
Out: 1
CSV Export Streams Chunked Request Bodies, rev. 1, scn

scn~csv-export-streams-chunked-request-body~1

  • Given* an in-flight CSV export whose tunnel sends an HTTP request with Transfer-Encoding: chunked
  • When* the driver receives the request body
  • Then* the driver decodes the HTTP chunks and writes their payload data to the destination file
Needs: dsn

doc/spec/system_requirements.md:695

In: 1
Out: 1
CSV Export Table Succeeds, rev. 1, scn

scn~csv-export-table-succeeds~1

  • Given* a Node.js application, an authenticated driver, an Exasol table, and a destination path that does not exist
  • When* the application calls exportToCsvFile()
  • Then* the driver streams the exported CSV data through Exasol's export tunnel into the new local file and resolves with the exported row count
Needs: dsn, uman

doc/spec/system_requirements.md:635

In: 3
Out: 1
CSV Import Applies Format Options, rev. 1, scn

scn~csv-import-applies-format-options~1

  • Given* a Node.js application and CSV format options for columnSeparator, columnDelimiter, rowSeparator, encoding, skip, trim, or null
  • When* the application calls importFromCsvFile() with those options
  • Then* the driver adds the corresponding Exasol IMPORT FROM CSV format clauses
Needs: dsn

doc/spec/system_requirements.md:609

In: 1
Out: 1
CSV Import Is Cancelled, rev. 1, scn

scn~csv-import-is-cancelled~1

  • Given* a Node.js application importing a local CSV file with an AbortSignal
  • When* the application aborts the signal while the import is in flight
  • Then* the driver stops streaming the file, closes the import tunnel, aborts the server-side import query, and rejects promptly with an AbortError
Needs: dsn, uman

doc/spec/system_requirements.md:621

In: 2
Out: 1
CSV Import Rejects Missing File, rev. 1, scn

scn~csv-import-rejects-missing-file~1

  • Given* a Node.js application and an authenticated driver
  • When* the application calls importFromCsvFile() with a missing or unreadable file path
  • Then* the driver rejects before opening the import tunnel and reports a file-not-found error
Needs: dsn

doc/spec/system_requirements.md:597

In: 1
Out: 1
CSV Import Rejects Missing Target Table, rev. 1, scn

scn~csv-import-rejects-missing-target-table~1

  • Given* a Node.js application, an authenticated driver, a readable local CSV file, and a target table name that does not exist
  • When* the application calls importFromCsvFile()
  • Then* the driver rejects with the SQL error returned by Exasol for the missing table
Needs: dsn

doc/spec/system_requirements.md:585

In: 1
Out: 1
CSV Import Succeeds, rev. 1, scn

scn~csv-import-succeeds~1

  • Given* a Node.js application, an authenticated driver, a readable local CSV file, and an existing target table
  • When* the application calls importFromCsvFile()
  • Then* the driver streams the file through Exasol's import tunnel and resolves with the imported row count
Needs: dsn

doc/spec/system_requirements.md:573

In: 2
Out: 1
Cancel Active Work, rev. 1, scn

scn~cancel-active-work~1

  • Given* an active database operation
  • When* the application calls the provided cancel function or driver.cancel()
  • Then* the driver sends an Exasol abort query command
Needs: dsn

doc/spec/system_requirements.md:439

In: 1
Out: 1
Configured Fetch Size Used During Fetch, rev. 1, scn

scn~configured-fetch-size-used-during-fetch~1

  • Given* a configured fetchSize value and a query result with more rows available
  • When* the driver fetches additional result data
  • Then* each fetch command requests the configured number of bytes from Exasol
Needs: dsn, uman

doc/spec/system_requirements.md:763

In: 2
Out: 1
Connect With Basic Authentication, rev. 1, scn

scn~connect-with-basic-authentication~1

  • Given* a configured driver with host, port, user, password, encryption setting, and WebSocket factory
  • When* the application calls connect()
  • Then* the driver opens a WebSocket connection, performs the Exasol login flow, and resolves after the session is authenticated
Needs: dsn

doc/spec/system_requirements.md:363

In: 1
Out: 1
Encrypted Connection by Default, rev. 1, scn

scn~encrypted-connection-by-default~1

  • Given* a driver configuration that does not override encryption
  • When* the application connects
  • Then* the driver builds a secure WebSocket URL by default
Needs: dsn

doc/spec/system_requirements.md:721

In: 1
Out: 1
Execute Returns Row Count, rev. 1, scn

scn~execute-returns-row-count~1

  • Given* an authenticated driver and a SQL statement that returns a row count
  • When* the application calls execute()
  • Then* the driver returns the row count
Needs: dsn

doc/spec/system_requirements.md:399

In: 1
Out: 1
Node Connection Uses Injected WebSocket, rev. 1, scn

scn~node-connection-uses-injected-websocket~1

  • Given* a Node.js application with a WebSocket implementation such as ws
  • When* the application creates a driver with a factory returning a compatible WebSocket
  • Then* the driver can connect with the supplied Node.js WebSocket implementation
Needs: dsn

doc/spec/system_requirements.md:511

In: 1
Out: 1
Pool Enforces Configured Size Limits, rev. 1, scn

scn~pool-enforces-configured-size-limits~1

  • Given* a configured ExasolPool with minimum and maximum pool sizes
  • When* the application submits more concurrent work than one driver can serve
  • Then* the pool creates and reuses driver instances without exceeding the configured pool size limits
Needs: dsn

doc/spec/system_requirements.md:535

In: 2
Out: 1
Pool Reuses Drivers for Queries, rev. 1, scn

scn~pool-reuses-drivers-for-queries~1

  • Given* a configured ExasolPool
  • When* the application submits multiple queries
  • Then* the pool acquires driver instances, runs the queries, and releases drivers after each operation
Needs: dsn

doc/spec/system_requirements.md:523

In: 2
Out: 1
Pool Shutdown, rev. 1, scn

scn~pool-shutdown~1

  • Given* a configured ExasolPool
  • When* the application calls drain() and then clear()
  • Then* the pool stops accepting new work and closes pooled driver instances
Needs: dsn

doc/spec/system_requirements.md:547

In: 2
Out: 1
Prepared Statement Execution, rev. 1, scn

scn~prepared-statement-execution~1

  • Given* an authenticated driver and a SQL statement with parameters
  • When* the application prepares the statement, executes it with a value count matching the parameter columns, and closes it
  • Then* the driver sends Exasol prepared-statement commands and releases the underlying connection when the statement is closed
Needs: dsn

doc/spec/system_requirements.md:427

In: 1
Out: 1
Query Returns Rows, rev. 1, scn

scn~query-returns-rows~1

  • Given* an authenticated driver and a SQL statement that returns a result set
  • When* the application calls query()
  • Then* the driver fetches all required result data, closes the remote result set, and returns a QueryResult exposing columns and row objects
Needs: dsn

doc/spec/system_requirements.md:387

In: 1
Out: 1
Raw Response Requested, rev. 1, scn

scn~raw-response-requested~1

  • Given* an authenticated driver
  • When* the application calls query() or execute() with responseType set to raw
  • Then* the driver returns the Exasol protocol response instead of converting it to a QueryResult or row count
Comment:

A protocol response is the low-level object returned by the Exasol WebSocket API, for example a SQLResponse<SQLQueriesResponse> with fields such as status, attributes, responseData, and optional exception.

Needs: dsn

doc/spec/system_requirements.md:411

In: 1
Out: 1
Reject Missing Credentials, rev. 1, scn

scn~reject-missing-credentials~1

  • Given* a configured driver without user/password and without access or refresh token
  • When* the application calls connect()
  • Then* the driver rejects the connection attempt with an invalid-credentials error
Needs: dsn

doc/spec/system_requirements.md:375

In: 1
Out: 1
Reject a Command on Unexpected WebSocket Termination, rev. 1, scn

scn~reject-command-on-unexpected-websocket-termination~1

  • Given* an authenticated driver or pooled driver executing a database command
  • When* its WebSocket emits an error or closes before a response arrives
  • Then* the command rejects with available socket failure details, the connection is no longer active, and a pool discards the broken driver before later requests
Needs: dsn

doc/spec/system_requirements.md:451

In: 1
Out: 1
Replace an Idle-Closed Pooled Driver, rev. 1, scn

scn~replace-idle-closed-pooled-driver~1

  • Given* a released driver in an ExasolPool whose WebSocket closes while idle
  • When* the application submits a later query
  • Then* the pool validates the driver, destroys it when invalid, creates a replacement, and executes the query with the replacement
Needs: dsn

doc/spec/system_requirements.md:463

In: 2
Out: 1
Result Row Limit Applied During Fetch, rev. 1, scn

scn~result-row-limit-applied-during-fetch~1

  • Given* a configured resultSetMaxRows value and a query result with more rows available
  • When* the driver fetches additional result data
  • Then* the driver stops appending rows after the configured maximum, even if Exasol can provide more rows
Comment:

The driver applies this limit while assembling the fetched result pages. It does not change the SQL statement or send a separate server-side row-limit command.

Needs: dsn

doc/spec/system_requirements.md:747

In: 1
Out: 1
Session Attributes Sent During Login, rev. 1, scn

scn~session-attributes-sent-during-login~1

  • Given* a driver configuration with session attributes
  • When* the application connects
  • Then* the driver sends supported attributes such as autocommit, schema, and compression during login
Needs: dsn

doc/spec/system_requirements.md:735

In: 1
Out: 1

uman

async-dispose-connection-pool-3014535674, rev. 0, uman

uman~async-dispose-connection-pool-3014535674~0

doc/user_guide/user_guide.md:67

Out: 1
async-dispose-driver-2334683095, rev. 0, uman

uman~async-dispose-driver-2334683095~0

doc/user_guide/user_guide.md:46

Out: 1
async-dispose-prepared-statement-2102051960, rev. 0, uman

uman~async-dispose-prepared-statement-2102051960~0

doc/user_guide/user_guide.md:49

Out: 1
configured-fetch-size-used-during-fetch-997284659, rev. 0, uman

uman~configured-fetch-size-used-during-fetch-997284659~0

doc/user_guide/user_guide.md:392

Out: 1
csv-export-applies-format-options-2847744408, rev. 0, uman

uman~csv-export-applies-format-options-2847744408~0

doc/user_guide/user_guide.md:321

Out: 1
csv-export-compressed-file-succeeds-1159405658, rev. 0, uman

uman~csv-export-compressed-file-succeeds-1159405658~0

doc/user_guide/user_guide.md:356

Out: 1
csv-export-is-cancelled-3616030351, rev. 0, uman

uman~csv-export-is-cancelled-3616030351~0

doc/user_guide/user_guide.md:363

Out: 1
csv-export-query-succeeds-1920401168, rev. 0, uman

uman~csv-export-query-succeeds-1920401168~0

doc/user_guide/user_guide.md:311

Out: 1
csv-export-rejects-existing-destination-3737216845, rev. 0, uman

uman~csv-export-rejects-existing-destination-3737216845~0

doc/user_guide/user_guide.md:332

Out: 1
csv-export-table-succeeds-766900980, rev. 0, uman

uman~csv-export-table-succeeds-766900980~0

doc/user_guide/user_guide.md:304

Out: 1
csv-import-is-cancelled-2009943969, rev. 0, uman

uman~csv-import-is-cancelled-2009943969~0

doc/user_guide/user_guide.md:269

Out: 1

utest

runtime-command-execution-3333493598, rev. 0, utest

utest~runtime-command-execution-3333493598~0

src/lib/sql-client.spec.node.ts:235

Out: 1
runtime-csv-export-cancellation-1461106964, rev. 0, utest

utest~runtime-csv-export-cancellation-1461106964~0

src/lib/import/csv-file-export.spec.node.ts:73

Out: 1
runtime-csv-export-chunked-request-stream-2065247288, rev. 0, utest

utest~runtime-csv-export-chunked-request-stream-2065247288~0

src/lib/import/chunked-http-body.spec.node.ts:4

Out: 1
runtime-csv-export-chunked-request-stream-2365462198, rev. 0, utest

utest~runtime-csv-export-chunked-request-stream-2365462198~0

src/lib/import/http-protocol.spec.node.ts:69

Out: 1
runtime-csv-export-compressed-file-2150967243, rev. 0, utest

utest~runtime-csv-export-compressed-file-2150967243~0

src/lib/import/export-sql-builder.spec.node.ts:5

Out: 1
runtime-csv-export-destination-file-1483480713, rev. 0, utest

utest~runtime-csv-export-destination-file-1483480713~0

src/lib/import/csv-file-export.spec.node.ts:21

Out: 1
runtime-csv-export-file-stream-1003536193, rev. 0, utest

utest~runtime-csv-export-file-stream-1003536193~0

src/lib/import/csv-file-export.spec.node.ts:22

Out: 1
runtime-csv-export-format-options-4162490999, rev. 0, utest

utest~runtime-csv-export-format-options-4162490999~0

src/lib/import/export-sql-builder.spec.node.ts:4

Out: 1
runtime-csv-import-cancellation-2000859339, rev. 0, utest

utest~runtime-csv-import-cancellation-2000859339~0

src/lib/import/http-transport.spec.node.ts:43

Out: 1
runtime-csv-import-cancellation-3832424004, rev. 0, utest

utest~runtime-csv-import-cancellation-3832424004~0

src/lib/import/csv-file-import.spec.node.ts:73

Out: 1
runtime-csv-import-file-readability-check-1633277864, rev. 0, utest

utest~runtime-csv-import-file-readability-check-1633277864~0

src/lib/import/csv-file-import.spec.node.ts:20

Out: 1
runtime-csv-import-file-readability-check-611246129, rev. 0, utest

utest~runtime-csv-import-file-readability-check-611246129~0

src/lib/sql-client.spec.node.ts:346

Out: 1
runtime-csv-import-file-stream-324661538, rev. 0, utest

utest~runtime-csv-import-file-stream-324661538~0

src/lib/import/http-transport.spec.node.ts:6

Out: 1
runtime-csv-import-file-stream-3384287420, rev. 0, utest

utest~runtime-csv-import-file-stream-3384287420~0

src/lib/import/tls-transport.spec.node.ts:5

Out: 1
runtime-csv-import-file-stream-791148841, rev. 0, utest

utest~runtime-csv-import-file-stream-791148841~0

src/lib/import/http-protocol.spec.node.ts:4

Out: 1
runtime-csv-import-format-options-1979285367, rev. 0, utest

utest~runtime-csv-import-format-options-1979285367~0

src/lib/import/import-sql-builder.spec.node.ts:4

Out: 1
runtime-driver-async-disposal-242776500, rev. 0, utest

utest~runtime-driver-async-disposal-242776500~0

src/lib/sql-client.spec.node.ts:29

Out: 1
runtime-inflight-websocket-failure-1016596448, rev. 0, utest

utest~runtime-inflight-websocket-failure-1016596448~0

src/lib/errors/errors.spec.ts:33

Out: 1
runtime-inflight-websocket-failure-3192927237, rev. 0, utest

utest~runtime-inflight-websocket-failure-3192927237~0

src/lib/connection.spec.ts:112

Out: 1
runtime-inflight-websocket-failure-3291807596, rev. 0, utest

utest~runtime-inflight-websocket-failure-3291807596~0

src/lib/errors/errors.spec.dom.ts:14

Out: 1
runtime-inflight-websocket-failure-3946152837, rev. 0, utest

utest~runtime-inflight-websocket-failure-3946152837~0

src/lib/connection.spec.ts:84

Out: 1
runtime-inflight-websocket-failure-3992050780, rev. 0, utest

utest~runtime-inflight-websocket-failure-3992050780~0

src/lib/connection.spec.ts:99

Out: 1
runtime-inflight-websocket-failure-4112488915, rev. 0, utest

utest~runtime-inflight-websocket-failure-4112488915~0

src/lib/sql-client.spec.node.ts:43

Out: 1
runtime-pool-async-disposal-681554497, rev. 0, utest

utest~runtime-pool-async-disposal-681554497~0

src/lib/sql-pool.spec.ts:5

Out: 1
runtime-prepared-statement-async-disposal-3412096965, rev. 0, utest

utest~runtime-prepared-statement-async-disposal-3412096965~0

src/lib/statement.spec.ts:96

Out: 1
runtime-query-cancellation-3274137835, rev. 0, utest

utest~runtime-query-cancellation-3274137835~0

src/lib/sql-client.spec.node.ts:385

Out: 1
runtime-query-execution-1155267034, rev. 0, utest

utest~runtime-query-execution-1155267034~0

src/lib/sql-client.spec.node.ts:73

Out: 1
runtime-query-fetch-size-3526938659, rev. 0, utest

utest~runtime-query-fetch-size-3526938659~0

src/lib/sql-client.spec.node.ts:131

Out: 1
runtime-raw-response-execution-1077682595, rev. 0, utest

utest~runtime-raw-response-execution-1077682595~0

src/lib/sql-client.spec.node.ts:176

Out: 1
runtime-raw-response-execution-1177643891, rev. 0, utest

utest~runtime-raw-response-execution-1177643891~0

src/lib/sql-client.spec.node.ts:278

Out: 1
runtime-reject-missing-credentials-171317548, rev. 0, utest

utest~runtime-reject-missing-credentials-171317548~0

src/lib/sql-client.spec.node.ts:17

Out: 1
runtime-reject-missing-credentials-1757681918, rev. 0, utest

utest~runtime-reject-missing-credentials-1757681918~0

src/lib/sql-client.spec.dom.ts:4

Out: 1