What's new with BroadSQL 5.3.0 (2026-09-20)

New features

  • BREAKING: BroadSQL now has one kind of runnable file, the Script (a text file of SQL and/or BroadSQL commands), and one place for reusable ones, the Scripts Library (folder scripts/, setting ScriptsLibrary). The former SQL library and scripts catalogs are unified; run a library Script with @name or LIB RUN name
  • @ is now documented and visible in HELP: @maintenance/foo.bsql (Scripts Library), @./foo.bsql (working directory, or the running Script's folder), @C:\temp\foo.bsql (anywhere). @ and LIB RUN share one execution pipeline and one parameter contract (%1 to %9, quoted paths and values supported)
  • Scripts can call Scripts safely: a Script that calls itself, directly or indirectly, is refused immediately with the chain of Scripts, nesting is limited to 32 levels, and the execution context is restored after every called Script
  • The BroadSQL Editor shows the Scripts Library as a folder tree with New Folder, opens any text file whatever its extension (new Scripts default to .bsql), keeps a file's own encoding on save, and formats mixed SQL and BroadSQL Scripts without ever rewriting a BroadSQL command
  • The editor's Delete, its Recently Deleted window and LIB DEL, LIB RESTORE and LIB UNDO are now one archive model; restoring a Script continues its revision history, and a new file at a deleted path starts a new history
  • A Script with an unterminated quote or block comment now fails with its line and column instead of silently running only part of the file; a text file in a legacy encoding is read with the default character set instead of failing
  • TAB now completes connection IDs (CONNECT, SHOW CONNECTION, PING, EDIT/DEL/DUPLICATE CONNECTION), Environments (EDIT/DEL ENVIRONMENT, SHOW GROUP), Database Groups (EDIT/DEL GROUP) and Scripts Library scripts (LIB EDIT/RUN/SHOW/DEL/LINT and @script) by case-insensitive prefix, inserting the stored name
  • RUN [HTTP_METHOD] <url> [TABLE|RAW] executes an API endpoint by URL against the API and environment chosen with CONNECT API <api>:<environment>. The method defaults to GET; :name placeholders, ${name} API variables and ${ENV:NAME} operating-system variables are resolved in the URL, and only the query parameters written in the URL are sent
  • API results are shown as a complete structure-preserving LIST view by default; TABLE and RAW are chosen with a trailing keyword, and an API result can be copied with COPY RESULT or exported with PULL API RESULT
  • SHOW ENDPOINTS [API <apiId>] [VERB <verb>] [MATCH <keyword>] lists an API's endpoints without needing a session, SHOW ENDPOINT shows one endpoint in detail by id, alias or name, SYNTAX shows its URL shape, parameters and RUN examples, and SHOW API ENVIRONMENT shows one environment. SHOW ALL APIS and SHOW API ENVIRONMENTS now print bordered tables
  • VAR NAME=value sets a session variable that RUN uses for a matching :name placeholder, and VAR NAME=value PERSIST stores it in the connected API environment's variables (the ones the CONFIG API Environments tab edits)
  • CONFIG API has one Save (Ctrl+S) with real unsaved-change tracking, an endpoint URL that stays in step with its query parameter grid, a live endpoint search field and File > Exit
  • API calls can go through an enterprise proxy: apiproxymode (NONE, SYSTEM or MANUAL) and the apiproxy settings in BroadSQL.ini apply to API execution only, with proxy credentials read from ${ENV:NAME} variables
  • With activatejline=ON, TAB completes BroadSQL commands and subcommands, SQL keywords, and (when connected) schema, table, view and column names, including in multi-line statements. Several matches open a menu: TAB moves forward, Shift-TAB backward
  • TAB also completes API IDs after CONNECT API, endpoints after RUN (an endpoint id, alias or name expands to its URL), query parameter names and allowed values after the ?, and operating-system variable names after ${ENV:
  • Command history is saved per operating-system user and reloaded at the next start (Up/Down, Ctrl-R); a password you type is never echoed or recorded
  • A console line holding several ;-terminated statements runs them in order and stops at the first one that fails
  • COPY RESULT copies the most recent successful result, whether it came from SQL or from RUN. A statement or API call that fails never replaces it

Problems solved

  • A nested @script call no longer runs twice
  • An indented or trailing line comment in a script file no longer silently discards every statement after it
  • Script parameters: %10 is no longer read as %1 followed by 0, a value that looks like %2 is inserted as written, and %1 to %9 now also work in INSERT, UPDATE and DELETE statements
  • The @ command is registered at startup again (it was rejected as an invalid keyword, so @script was sent to the database as SQL)
  • Opening a saved Script in the BroadSQL Editor no longer marks it as having unsaved changes, and closing the editor no longer leaves tabs that BroadSQL asks about again at EXIT
  • RUN get<TAB> now offers the endpoints whose name or alias starts with get; a word still being typed was wrongly treated as an already given HTTP method
  • A disabled query parameter whose ${...} placeholder also appears in the endpoint URL no longer blocks execution with an unresolved variable error
  • EXIT no longer hangs after CONFIG API has been opened, EXIT ends the JLine terminal cleanly, and CONFIG API's parameter table no longer fails with a StackOverflowError when edited
  • RUN now matches the most specific endpoint when a literal URL segment and a :name placeholder could both match

Installing BroadSQL 5.3.0

See Installation.

Upgrading from previous releases

  • BREAKING: The SqlLib, Scripts and ListSubfolders settings no longer exist and are ignored, with no fallback and no migration. Set ScriptsLibrary in BroadSQL.ini (default scripts). BroadSQL does not move, merge or delete your files: move the Scripts you keep in the former sqllib and scripts folders into the Scripts Library yourself. LIB LIST now always lists subfolders
  • BREAKING: The SCRIPT commands (SCRIPT RUN, LIST, SHOW, FIND, EDIT, EDITOR, DEL, RESTORE, UNDO, LINT) and their SC aliases were removed. Run Scripts with @name or LIB RUN name and manage them with the LIB commands
  • BREAKING: References are now exact. LIB RUN foo no longer finds foo.sql, a bare file name no longer finds a Script in a subfolder, and the @alias metadata no longer finds anything (an old @alias line is an ordinary comment). Use the exact path, for example LIB RUN foo.sql or LIB RUN maintenance/foo.sql; LIB RUN also refuses paths outside the library, so use @ with an explicit path for those
  • The BroadSQL Editor no longer shows JavaScript files or a separate SQL Library and Scripts; edit .js files with any external editor (the JS commands and the JsScripts folder are unchanged). Editor history recorded under the previous library locations is not carried over, and Scripts deleted in the editor before this release are not listed in Recently Deleted
  • BREAKING: RUN takes a URL, not an endpoint reference. RUN <id-or-alias>, and the API <apiId> and ENV <environment> clauses of the previous RUN, no longer exist: RUN CUST; is refused with a hint. Run CONNECT API <api>:<environment>; once, then RUN the URL. Use TAB after RUN to expand an id, alias or name to its URL, and SYNTAX <alias> to see it. SHOW API ENDPOINTS was removed (use SHOW ENDPOINTS API <apiId>), and EXECUTE API ENDPOINT is no longer a documented command
  • BREAKING: BroadSQL's Java packages moved from com.projectsontracks to com.upandcoding.broadsql, with no compatibility layer. An extension JAR built against an earlier release must have its imports changed and be rebuilt against 5.3; see Extending BroadSQL

Known issues

None known at release time.