What's new with BroadSQL 5.1.0 (2026-09-03)

BroadSQL 5.1.0 brings Java 21 and updated drivers and libraries, unified exports with PULL, improved connection management, and catalogs for SQL queries and scripts.

New features

Exporting and copying data

  • PULL exports a table/view, the last query (/), or a parenthesized query to H2, XLSX, ODS, CSV, TXT, JSON, Markdown, or HTML. It validates column types before writing and rejects unsupported BLOB, CLOB, binary, and structural columns. Existing EXPORT and DUMP commands remain supported. See Export.
  • PULL <source> TO <name>.<table> AS H2 reuses an existing H2 connection or creates and registers one, deriving the target table's columns and types from the query. MODE OVERWRITE (the default) recreates the table. MODE APPEND KEY(<column>) loads all rows initially, then inserts only rows whose key exceeds the target's current maximum, without updating or deleting existing rows.
  • Append mode supports joins, including outer joins. A key known to allow NULL is rejected; an indeterminate key, such as a computed column, is rejected unless FORCE follows KEY(<column>). Use FORCE only after checking that the key is safe. Outer joins always produce a caution because nullability cannot be verified reliably on every database.
  • PULL <source> TO <name>.<tab> AS XLSX or AS ODS replaces only the named spreadsheet tab, preserving other tabs. A maintained QUERIES tab records each data tab's query, timestamp, source connection, and row count.
  • Flat file exports overwrite the whole file with appropriate quoting and escaping. JSON produces an array of row objects, preserving numeric precision where possible and using ISO-8601 dates/times; Markdown produces a table; HTML produces a table fragment. TXT is tab separated. PULL ... AS CSV uses the optional CsvSeparator setting in BroadSQL.ini or broadsqlux.ini, defaulting to semicolon.
  • EXPORT and DUMP support OpenDocument spreadsheets (.ods). DefaultFileFormat accepts XLSX, ODS, CSV, or TXT and defaults to ODS; it applies to EXPORT without an extension and to DUMP below its row count threshold. Their CSV output always uses commas, while TXT uses FieldsSeparator/SET SEPARATOR, independently of CsvSeparator. See Application settings.

Queries, library, and scripts

  • // and SHOW QUERY display the last executed query on one line without running it. On Windows, EDIT (alias ED) with no filename opens that query in Notepad; closing Notepad updates the saved query without executing it. Use / to run it. EDIT <fileName> remains available.
  • FIND COLUMN <name> is the recommended name for finding tables with matching column names; SHOW COLUMN, SH COL, and SHCOL remain aliases.
  • LIB LIST and LIB FIND <term> show a grid with file, description, landscape, tags, status, and modification time. FIND searches file contents. Metadata supports @description, repeatable @landscape (or ALL), @tags, @alias, and informational @status values (draft, stable, deprecated). SHOW, RUN, EDIT, and DEL accept aliases.
  • Library listing defaults to the current landscape, includes untagged entries, and supports LIB LIST ALL. RUN and SHOW warn about landscape mismatches without blocking. LIB EDIT on Windows opens Notepad and supplies a metadata skeleton for new entries. LIB LINT reports gaps in %N parameters, unknown landscapes, and duplicate aliases; RUN warns about excess arguments.
  • LIB DEL confirms and archives entries rather than deleting them. LIB UNDO/LIB RESTORE <name> recover them, and LIB LIST ARCHIVES lists them; there is no automatic purge.
  • The parallel SCRIPT LIST/SHOW/RUN/FIND/EDIT/DEL/UNDO/RESTORE/LINT family provides the same catalog and recovery tools for the folder set by the new Scripts INI key. SCRIPT RUN <name> behaves like @<path>, without %N substitution.

Connections and command handling

  • The Windows CONFIG screen has a refreshed appearance and manages login scripts and landscapes. Login statements can be added, removed, reordered, and enabled or disabled. Renaming a landscape updates all referencing connections, including inactive ones; landscape choices refresh immediately. Deactivation is refused while any active or inactive connection references the landscape.
  • CONFIG separates active and inactive connections. Inactive entries appear greyed out and can only be reactivated or permanently deleted, not edited. REACTIVATE CONNECTION <id> restores an existing inactive connection and clearly identifies unknown IDs. Creating an ID already used by an inactive connection offers immediate reactivation. HARDDEL and the inactive view's Delete action require prior deactivation.
  • Commands targeting inactive connections, including CONNECT, PING/CHECK, SHOW CONNECTION, SHOW INSTANCES, COMPARE TABLE STRUCTURE, and LINK TABLE, now report their inactive state explicitly.
  • CTRL+C cancels a running SELECT, EXPORT, or DUMP and returns to the prompt without closing the connection; partial export files are cleaned up. Interrupting CONNECT no longer leaves the connection in a corrupted state. A broken extension JAR is logged and skipped instead of preventing startup.

Problems solved

  • Excel exports preserve timestamps and large BIGINT/DECIMAL values, render nonbinary NULL values as blank cells, handle invalid sheet name characters, and clean up temporary files.
  • Text and CSV exports use UTF-8 and proper quoting for separators, quotes, and newlines. Empty values remain distinguishable from literal "null"; write errors are reported, and appending no longer repeats the header.
  • New H2 connections registered by PULL receive DefaultEnvironment from the INI file (DEV by default) and the CDF's first registered instance, or an automatically created DEFAULT instance if none exists.
  • Login scripts retain their saved statement order and repeated statements. Cached type, instance, and landscape lists remove deactivated entries correctly.
  • DIRECT LOAD/DIRECT UPDATE match CSV headers to Derby's uppercase column names regardless of header casing. EVAL correctly retries with FROM DUAL where required.

Installing BroadSQL 5.1.0

Java 21 or later is required, replacing Java 11. See Installation.

Upgrading from previous releases

  • Older H2 database files, including the Connections Definition File (CDF), may require migration. If opening one reports an unsupported file version, use H2's SCRIPT/RUNSCRIPT commands or the H2 Migration Tool.
  • To retain XLSX as the default export format, set DefaultFileFormat=XLSX under [General] in the INI file. For a configured text separator, use TXT rather than the now comma separated EXPORT/DUMP CSV output.
  • Legacy .xls export is removed; use .xlsx. MS Access .mdb export remains available through EXPORT/DUMP as a frozen legacy format and is not supported by PULL.
  • CsvSeparator and Scripts are documented in Application settings. Adding PULL does not require replacing existing export commands.

Known issues

  • CTRL+C does not cancel a running PULL. On some terminals, CTRL+C at an idle prompt can exit the application; use EXIT for a clean shutdown.
  • PULL MODE MERGE is recognized but reports that it is not implemented. XLSX and ODS exports enforce a spreadsheet row limit, stop cleanly when reached, and report written and unwritten rows.
  • EXPORT/DUMP still use generic text for BLOB/CLOB/NCLOB columns. A NULL binary value appears as placeholder text in Excel, though ODS leaves it blank. PULL rejects unsupported column types before writing.
  • CONFIG is Windows only; Linux administration may require direct SQL against the CDF.