Skip to content

docs(clients): document QWP ingestion and queries in the Node.js client - #569

Open
glasstiger wants to merge 10 commits into
mainfrom
ia_js_client
Open

glasstiger wants to merge 10 commits into
mainfrom
ia_js_client

Conversation

@glasstiger

@glasstiger glasstiger commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Documents the QWP support shipping in @questdb/nodejs-client 5.0.0.

  • Node.js client page (connect/clients/nodejs.md): rewritten from an ILP-only ingestion page into a full QWP client page, following the structure of the other QWP client pages. It covers the pooled client (connectQwpNodeClient), the standalone Sender, connect strings, authentication and TLS, every column method and its QuestDB type, null handling, designated timestamps, arrays, decimals, compiled object-row writers, flushing modes and backpressure, acknowledgements, transactions, store-and-forward, UDP, querying (result value types, bind parameters, DDL/DML, cancellation, flow control, zero-copy views, compression), error handling with diagnostic fields, failover and connection events, concurrency, migration from ILP and from 4.x, and the legacy ILP transports. The URL stays /docs/connect/clients/nodejs/.
  • Connect overview and client cards: Node.js QWP support moves from Planned to Stable, and UDP support lists the Node.js client.
  • Node.js deviations on shared pages: the connect-string reference, store-and-forward, client-failover, and client-behavior pages now note where the Node.js client differs: target and zone also apply to ingestion, memory-mode senders give up after reconnect_max_duration_millis, off is rejected for auto_flush_rows and auto_flush_interval, only single-letter size suffixes are accepted, tls_roots must be PEM, sf_durability=append is supported, plus its pooled slot naming and defaults.
  • Fixes: removes the nonexistent decimalColumnUnscaled() from the old page, and updates the stale PGWire Node.js tip, the Node.js date-to-timestamp snippet, and the "bring QWP to JavaScript" sentences in the wire-protocol specs.
  • Changelog entry.

Dependencies

  • Merge after @questdb/nodejs-client 5.0.0 is published.

…lient

Rewrite the Node.js client page as the JavaScript client page for
@questdb/nodejs-client 5.0.0 and the new @questdb/browser-client package:
pooled ingestion and streaming SQL queries, column types, compiled writers,
acknowledgements, transactions, store-and-forward, UDP, failover, error
handling, browser session authentication, and migration from ILP and 4.x.

Mark Node.js QWP support as beta on the Connect overview and client cards,
and note where the JavaScript client differs on the connect-string,
store-and-forward, failover, and client-behavior pages. Document the
qwp.browser.tls.termination.enabled server setting.
@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

🚀 Build success!

Latest successful preview: https://preview-569--questdb-documentation.netlify.app/docs/

Commit SHA: 957fe3f

📦 Build generates a preview & updates the link on each commit.

The 5.0.0 release ships QWP support as stable. Drop the beta admonition, list the client as stable on the Connect overview and client cards, and state the 5.0.0 minimum version under Requirements.
- IPv4: 0.0.0.0 is rejected, not stored as NULL; pass null instead.
- Store-and-forward example: use lazy_connect=on, because the pooled client
  cannot start while QuestDB is down with initial_connect_retry=async alone.
- Terminal rejections: under store-and-forward the rejected batch stays in the
  journal and every new sender on the slot fails again; document recovery.
- Transactions: a borrowed sender's close() commits the open transaction; only
  a standalone sender rolls back. Clarify that flush() ends the transaction.
- target=replica is a strict filter that also fails startup without a replica.
- Document QwpSenderCloseTimeoutError from a standalone sender's close().
- TLS verifies against Node's bundled CAs, not the operating system store.
- Store-and-forward lock recovery after a crash, including containers.
- Query failover: detect re-execution with batchSequence, note that
  onReplayReset cannot identify the lease and that timeoutMs spans failover.
- Add a DEDUP UPSERT KEYS example for at-least-once replay.
Only @questdb/nodejs-client ships in this release, so document the Node.js
client alone and drop every mention of the browser client: the Browser
applications section, the @questdb/browser-client package, installation, and
requirements, the browser-only opaque QwpUpgradeError kind, and the
server-side Browser connections section in configuration/qwp.md with its
changelog entry.

Rename the page and sidebar entry back to Node.js, and refer to the Node.js
client on the connect-string, failover, store-and-forward, client-behavior,
PGWire, and date-to-timestamp pages.
@glasstiger glasstiger changed the title docs(clients): document QWP ingestion and queries in the JavaScript client docs(clients): document QWP ingestion and queries in the Node.js client Sep 30, 2026
Unacknowledged rows in memory mode may already have reached QuestDB, so say
they may be lost rather than that they are lost.

Replace the Java-only journal warning: Node.js clients can share an sf_dir,
but clients in other languages lock journals with operating-system file
locks that the Node.js client does not see, so they may use the directory
only after every Node.js client on it has stopped.
Callbacks run one at a time, and credit for a batch is granted only after its callback resolves, which throttles the server only when initialCredit sets a credit window.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant