# SQLLine release history and change log For a full list of releases, see GitHub. ## 1.12.0 (2021-11-07) Now sqlline works on Apple/M1 architecture SQLLINE-444. This release requires Java version 8 or higher. Bugs and functional changes: * [SQLLINE-447] Certain sequence of queries for JSON output format leads to ArrayIndexOutOfBoundsException * [SQLLINE-436] User configuration file for sqlline (Richard Antal) * [SQLLINE-432] Highlight decimal numbers when highlighting is on * [SQLLINE-431] Custom prompt handler should apply even if there is no connection The custom prompt handler is ignored until a connection is created; with no connection, prompt is always "sqlline> " (IceMimosa) Other: * [SQLLINE-434] Support JDK 14, 15, 16 * [SQLLINE-453] Rename 'master' git branch to 'main' * [SQLLINE-454] Enable jdk17 in Travis * [SQLLINE-444] Update JLine to 3.21.0 * Upgrades: * checkstyle to 9.0.1 * forbiddenapis to 3.2 * junit to 5.8.1 * maven-checkstyle-plugin to 3.1.2 * maven-dependency-plugin to 3.2.0 * maven-enforcer-plugin to 3.0.0 * maven-javadoc-plugin to 3.3.1 * maven-project-info-reports-plugin to 3.1.2 * maven-gpg-plugin to 3.0.1 ## 1.11.0 (2021-02-25) A patch to release 1.10.0, fixing one issue. This release requires Java version 8 or higher. Bugs and functional changes: * [SQLLINE-425] `!quit` command should return success ## 1.10.0 (2021-02-21) Pluggable [scripting engines](https://github.com/julianhyde/sqlline/issues/394) (to accommodate JDK 15). This release requires Java version 8 or higher. Bugs and functional changes: * [SQLLINE-394] Make script engine configurable via new `scriptEngine` property; compensates for the fact that Nashorn is not available on JDK 15 and above * [SQLLINE-419] Allow empty string after connection name in config * [SQLLINE-386] Support saved connections * [SQLLINE-415] Switch off highlighting in manual; ignore case while searching through manual * [SQLLINE-254] Live templates support * [SQLLINE-412] Autocompletion for all properties with FILE_PATH type * [SQLLINE-410] Respect line separator while column size calculations * [SQLLINE-157] Column types in header * [SQLLINE-391] Set error code when `-e` command fails * [SQLLINE-407] Autocompletion for `!help` command * [SQLLINE-336] and [SQLLINE-376] Support PL/SQL and PL/pgSQL queries, and ability to add similar support for other dialects * [SQLLINE-402] Table styles for table output format * [SQLLINE-361] Support patterns for tables, columns, procedures; add parameter support for `!tables`, `!columns`, `!indexes`, `!primarykeys`, and `!procedures` commands * [SQLLINE-378] Check for silent property before outputting info message; `--no-` prefix for string properties is handled as empty if empty value is allowed for that property; `--silent` as input parameter makes prompts empty * [SQLLINE-389] Respect all properties from properties file * [SQLLINE-395] Enable autopairing JLine feature * [SQLLINE-355] Colours in default and script prompts * [SQLLINE-388] Use `outputstream` instead of `System.out` * [SQLLINE-379] DB2 JDBC driver throws if SQLLine attempts to call `ResultSet.next` after last row * [SQLLINE-362] Add completion for `!go` command * [SQLLINE-367] `!resize` command and `autoResize` property Build and tests: * Make `SqlLineParserTest` using parameterized tests * Make tests for [SQLLINE-354] work on Windows Other: * Document that the `promptscript` property is broken in JDK 15, per [SQLLINE-394] (but see the new `scriptEngine` property) * [SQLLINE-392] Add JDBC url templates for Hiveserver2 * Regenerate web site for sqlline-1.9.0 * [SQLLINE-380] Add Maven wrapper, so that people may build using "./mvnw" * Upgrades: * [SQLLINE-417] Update JLine to 3.18.0, add geshi color scheme * [SQLLINE-421] Require Maven 3.2.3 or higher * [SQLLINE-382] Update JLine3 to 3.16.0 * Bump checkstyle from 8.23 to 8.29 ## 1.9.0 (2019-10-16) There are several improvements regarding user interaction, such as line numbers support, long query editing which take more than a screen, and improvements for autocompletion (autocompletion for schema, table, column names and show description for completion candidates). Now there is also a demo page for some of sqlline's features. This release requires Java version 8 or higher. Bugs and functional changes: * Autocompletion improvements * [SQLLINE-331] Autocompletion for schema, table, column names * [SQLLINE-314] Description for command name completion candidates depending on `showCompletionDesc` property value * [SQLLINE-326] Respect `user`, `password` properties in connection url; add `connectInteractionMode` property * [SQLLINE-354] Use minimum possible `width` if calculated is negative * [SQLLINE-332] Add `historyFlags` property to customize `!history` output * [SQLLINE-343] Use batches accordingly * [SQLLINE-337] Move connection information to debug level of tracing * Add `setReadOnly` connection option (iconeb) * [SQLLINE-248] `!dropall` for specific schemas * [SQLLINE-327] `!reconnect` should respect `fastconnect` property value * [SQLLINE-321] Ansiconsole outputformat * [SQLLINE-323] Add line numbers support * [SQLLINE-306] Turn off menu because of issue mentioned in #306 * [SQLLINE-312] Show error if there are wrong arguments for `!metadata` methods * [SQLLINE-309] Fix highlighting of sqlline commands with quoted arguments * [SQLLINE-305] Posix compatibility for double quotes to allow spaces inside command arguments * [SQLLINE-310] `!schemas` command * [SQLLINE-318] Correct highlighting and line continuation for '`/*/`' * [SQLLINE-340] Rethrow `SQLException` from `DatabaseMetaDataHandler` if it is the cause Other: * [SQLLINE-316] Link to demos page * [SQLLINE-302] Make tests run with their own `sqlline.properties` via `propertiesFile` property; remove all instantiations of `SqlLine` from `PromptTest` * [SQLLINE-210] Add property to skip doc generation * Upgrades: * Update JLine3 to 3.12.1 * Update Checkstyle to 8.23 * Update Jmockit to 1.48 * Update Junit to 5.5.1 * Update maven-jar-plugin to 3.1.2 * Update maven-surefire-plugin to 2.22.2 * Update hsqldb up to 2.5.0 * Update h2 up to 1.4.199 ## 1.8.0 (2019-05-30) 1.8 comes quite soon after 1.7, and the most significant change is fixing Ctrl-C to abort the current statement, not crash SQLLine. Among the improvements are allowing multiple statements on the same line, a more powerful !outputformat command, and allowing null values to be output as "null". This release requires Java version 8 or higher. Bugs and functional changes: * [SQLLINE-295] Find all db metadata methods including class hierarchy cases * [SQLLINE-284] Use proxy for `DatabaseMetaData` * [SQLLINE-237] Allow several SQL statements on the same line, separated by ';' * [SQLLINE-288] Output null value as `null` * [SQLLINE-298] Optional extra parameters for `!outputformat` command * Improve the `hashCode` of the key used in the internal table cache * [SQLLINE-292] `Ctrl-C` causes SQLLine to quit, but should just cancel current query (Volodymyr Vysotskyi) * Upgrades: * [SQLLINE-301] Upgrade checkstyle to 8.20, jmockit to 1.46 and junit to 5.4.2 * [SQLLINE-287] Support JDK 12 Other: * [SQLLINE-296] Replace class `ColorBuffer` with Jline3's class `AttributedString` ## 1.7.0 (2019-03-27) Continuing the major changes in the previous release, this release adds more improvements to interactivity, including custom prompts (`promptscript` property and custom prompt handler), warnings before executing dangerous commands (`confirm` and `confirmPattern` properties), and improved validation for enum and integer properties. Large result sets are formatted better, faster, and using less memory, due to two improvements: the default for the `incremental` prompty is now false, and a new `incrementalBufferRows` property is 1,000 by default. SQLLine will now read the first 1,000 rows of a query, set column widths accordingly, and adjust column widths if larger values are seen later. This release requires Java version 8 or higher. Bugs and functional changes: * Prompt customization: * [SQLLINE-278] Add 'promptscript' property, generating prompt from a JavaScript program * [SQLLINE-246] Custom prompt handler * [SQLLINE-276] Unable to submit password interactively * Column-widths * [SQLLINE-251] Enter "incremental" mode if a query returns more than `incrementalBufferRows` * [SQLLINE-228] Set `incremental` property to false by default (Cheng Lian) * [SQLLINE-239] Confirm before executing 'dangerous' SQL commands such as `DROP` and `DELETE`; controlled by new properties `confirm` and `confirmPattern` (Swaroopa Kadam) * [SQLLINE-258] Correct highlighting of numbers followed by `]`, `!`, `*`, `|`, `&`, `^` * [SQLLINE-260] Validate given values for enum type properties (e.g. `outputFormat`, `colorScheme`) before setting * [SQLLINE-226] Correct highlighting and line continuation for quotes inside sqlline comments * [SQLLINE-186] In definitions of built-in properties, define available values for completion * [SQLLINE-236] Add error message if URL property is absent but user, password or driver is present * [SQLLINE-232] Use `SqlLineParser` for file parsing, the same parser as for interactive * [SQLLINE-242] Script command should not write itself to file when spooling ends * [SQLLINE-5] Use `ServiceLoader` to load drivers, rather than `Class.forName` * [SQLLINE-224] Print exception traces only in case of `verbose` on * [SQLLINE-224] Validate values for integer properties before setting * [SQLLINE-134] Reuse history object while resetting history, use `-e` option to hide prompt output * Upgrades: * [SQLLINE-252] Update `jmockit` to 1.44 * [SQLLINE-266] Update `junit` to version 5 and `checkstyle` to version 8 * [SQLLINE-268] Bump `jline3` version to 3.10.0 * [SQLLINE-275] Upgrade `checkstyle` to 8.18 Other: * [SQLLINE-279] Release 1.7 * [SQLLINE-281] Remove temporary directory after test finishes * [SQLLINE-257] Separate the code that switches off `SqlLineParser` from the code that reads user answer * [SQLLINE-11] Add 'Command line options' and 'Prompting' sections to manual * [SQLLINE-270] Remove `maven-compiler-plugin` from `pom.xml` * [SQLLINE-273] Failed to generate javadoc on JDK 11 (Masayuki Takahashi) * Enable Travis CI on 'scratch' branch * [SQLLINE-255] Explicitly set `incremental` property inside `sqlline.SqlLineArgsTest#testMultilineScriptWithH2Comments` * [SQLLINE-217] Enable JDK 11 for AppVeyor * [SQLLINE-245] Example of launching SQLLine using a bash command-line, explaining how to quote special characters in the URL (Terence Namusonge) * [SQLLINE-221] Now require Java 8 or higher ## 1.6.0 (2018-11-26) This is the most colorful and interactive SQLLine ever! Upgrading to `jline3` and improved dialect support allowed us to add syntax highlighting, line continuation and multi-line editing. There are new commands `!rerun`, `!/` and `!reset`, new properties `colorScheme`, `escapeOutput`, `maxHistoryRows`, `maxHistoryFileRows`, `mode`, `prompt`, `rightPrompt`, `strictJdbc`, `useLineContinuation`, `version`, and improvements to existing commands. This release requires Java version 8 or higher. (Since the previous release, we have dropped support for JDK 1.6 and 1.7.) WARNING: Between version 2 and 3, jline changed the format of its history file. After this change, you may need to remove your history file (~/.sqlline/history) or provide a `--historyfile` argument before SQLLine will start successfully. Bugs and functional changes: * [SQLLINE-218] Update default of `maxColumnWidth` property to -1, and add getter to `SqlLineOpts` for `maxWidth` property * [SQLLINE-213] Syntax highlighting does not work for `!sql`, `!all` commands * [SQLLINE-215] `!metadata 1` command should not show private methods, or methods inherited from `java.lang.Object` * [SQLLINE-183] Add wrapper around `DatabaseMetaData`, to make SQLLine less susceptible to errors in underlying JDBC driver * [SQLLINE-60] Add 'vi' editing mode, and add `mode` property to switch between emacs and vi * [SQLLINE-199] Make use of jline3's powerful `StyleResolver` functionality to parse styles * [SQLLINE-199] Add `prompt` and `rightPrompt` properties to allow customization of prompt and right prompt * [SQLLINE-201] Line continuation and highlight for sqlline comments * [SQLLINE-203] Carry on even if JDBC driver's `ResultSetMetaData.getColumnDisplaySize()` throws * [SQLLINE-205] Show human-readable message if `!go` command fails * [SQLLINE-190] Make sure that exceptions during highlighting/line continuation do not cause infinite loops * [SQLLINE-190] Add `Dialect` API, and various database-specific behaviors * [SQLLINE-164] Syntax highlighting * [SQLLINE-184] Multi-line parsing is fooled by a line that ends in a semi-colon followed by a comment * [SQLLINE-168] In multiline parsing, detect mismatched brackets and parentheses * [SQLLINE-129] Allow multiline query parsing in shell mode and files * [SQLLINE-151] Add property `escapeOutput` to escape control symbols * [SQLLINE-177] Add `maxHistoryRows` and `maxHistoryFileRows` properties * [SQLLINE-160] Use `maxColumnWidth` in `TableOutputFormat` column width calculation * [SQLLINE-158] Add `xmlattrs` output format name as a synonym for `xmlattr` * [SQLLINE-155] Do not use default encoding * [SQLLINE-154] Do not use default locale * [SQLLINE-105] Upgrade to jline3, drop support for Java versions lower than 8, and add `!rerun` command (also known as `!/`) * [SQLLINE-73] Re-execute the previous query * [SQLLINE-143] Add `!reset` command, and add a mode to `!set` command to show current value * [SQLLINE-146] Add read-only `version` property Other: * [SQLLINE-191] Release 1.6 * [SQLLINE-193] Add key strokes to help output * Upgrade JMockit to 1.41 * [SQLLINE-141] Add test for `!save` command * [SQLLINE-179] Add `false` setting for `maven-surefire-plugin` * [SQLLINE-181] Use `` tag rather than ``, as `` is deprecated in HTML5 * [SQLLINE-166] Refactor properties, adding `enum BuiltInProperty` and `interface SqlLineProperty.Writer` * [SQLLINE-172] Travis CI fails for Oracle JDK 10 * [SQLLINE-98] Add `appveyor.yml`, to allow CI on Windows * Generate javadoc in HTML 5 * [SQLLINE-162] Various cleanup in `SqlLineArgsTest` * [SQLLINE-163] Upgrade `checkstyle` to 7.8.2, `maven-checkstyle-plugin` to 3.0.0 to support Java 8 syntax * Site: Publish manual and API for release 1.5.0 * [SQLLINE-153] Invalid link to API docs on `README.md` page * [SQLLINE-149] Correct typos * [SQLLINE-142] Add missed `-e` option in `--help` output ## 1.5.0 (2018-09-09) Bugs and functional changes: * [SQLLINE-135] Display connection class name during `!reconnect` (Arina Ielchiieva) * [SQLLINE-139] `!close` command wrongly claims to be ambiguous with `!closeall` command (Arina Ielchiieva) * [SQLLINE-106] New `class Application` allows customization of command handlers, output formats, startup message (Arina Ielchiieva) * [SQLLINE-114] Pluggable commands, by means of `interface CommandHandler` (Sergey Nuyanzin) * [SQLLINE-52] Set isolation level if supported, otherwise use default (Sergey Nuyanzin) * [SQLLINE-111] Enable multiline calls for `!all`, `!sql` commands from file (Sergey Nuyanzin) * [SQLLINE-121] Cannot parse one-character commands `!?` and `!#` (Sergey Nuyanzin) * [SQLLINE-109] In XML output formats, escape all required symbols in case of attribute/text (Sergey Nuyanzin) * [SQLLINE-43] Allow quoting of arguments to `!connect` command (Sergey Nuyanzin) * [SQLLINE-53] In `!connect` command, allow passing of JDBC properties outside of the URL (Sergey Nuyanzin) * [SQLLINE-120] Do not keep connection if it fails to do connection stuff (Sergey Nuyanzin) * [SQLLINE-55] SQLLine throws `NullPointerException` when JDBC URL is invalid (Arina Ielchiieva) * [SQLLINE-86] Parse arguments that contain quoted strings with spaces (Sergey Nuyanzin) * [SQLLINE-104] Make output of `!scan` command valid (Sergey Nuyanzin) * [SQLLINE-57] Respect `showheader=false` in file output (Renny Koshy and Sergey Nuyanzin) * [SQLLINE-107] If a user-specified driver cannot be found, fall back to the registered driver (Sergey Nuyanzin) * [SQLLINE-101] Add `nullValue` property, to override the value printed for NULL values (Sergey Nuyanzin) * [SQLLINE-67] Add `-log` command-line argument, equivalent to `!record` command (Sergey Nuyanzin) * [SQLLINE-90] Use more relevant exception messages for `!metadata`, `!record`, `!run` and `!script` commands (Sergey Nuyanzin) * [SQLLINE-88] Make `!set` command stable for the case of variables with null values (Sergey Nuyanzin) * [SQLLINE-50] For CSV output format, specify delimiter and quote character (Sergey Nuyanzin) * [SQLLINE-38] In `!run` command, expand "~" to user's home directory (Sergey Nuyanzin) * [SQLLINE-83] Add `json` output format (Sergey Nuyanzin) * [SQLLINE-66] Add `dateFormat`, `timeFormat` and `timestampFormat` properties (Sergey Nuyanzin) * [SQLLINE-77] Poor performance with drivers that have a slow implementation of `DatabaseMetaData.getPrimaryKeys` JDBC method (Kevin Minder) Other: * [SQLLINE-131] Release 1.5 * Add committers: Arina Ielchiieva and Sergey Nuyanzin (committers were previously called 'authors') * [SQLLINE-132] Fix 9 javadoc warnings (Arina Ielchiieva) * [SQLLINE-137] Typo in description of `!save` command (Arina Ielchiieva) * [SQLLINE-127] In manual, update `!help` description with actual output (Sergey Nuyanzin) * Add more information to `pom.xml` and manifest * [SQLLINE-123] Make `SqlLineArgsTest.testScan` test stable in case of several registered drivers (Sergey Nuyanzin) * [SQLLINE-69] Make `sqlline` and `sqlline.bat` scripts work in dev environment (Sergey Nuyanzin) * [SQLLINE-96] Add to Travis CI all supported JDK versions (Sergey Nuyanzin) * [SQLLINE-93] To fix flaky tests on Windows, use static final fields for `jline.Terminal#getWidth` and `jline.Terminal#getHeight` (Sergey Nuyanzin) * [SQLLINE-95] In `pom.xml`, replace 'prerequisites' element with `maven-enforcer-plugin` * [SQLLINE-80] In `HOWTO`, describe how to run SQLLine in IntelliJ IDEA's console on Windows (slankka) ## 1.4.0 (2018-05-31) Bugs and functional changes: * [SQLLINE-75] jline gives `NumberFormatException` during startup * Caused by [JLINE2-281], and fixed by upgrading jline to 2.14.4 * [SQLLINE-72] Allow quoted file names (including spaces) in `!record`, `!run` and `!script` commands (Jason Prodonovich) Other: * Upgrade `maven-javadoc-plugin` to 3.0.1 due to [MJAVADOC-517] * [SQLLINE-76] During build, manual fails to validate against docbook DTD * Travis CI: remove JDK 6 and 7 (no longer supported by Travis) * Upgrade `maven-javadoc-plugin` to 3.0.0 due to [MJAVADOC-485] * Add hyperlinks to previous test-cases (Julian Hyde) * Add coursier usage example, and update contact info (Marc Prud'hommeaux) ## 1.3.0 (2017-06-09) Bugs and functional changes: * [SQLLINE-63] Add Athena JDBC driver (Ben Poweski) * [SQLLINE-62] In `!record` and `!run` commands, expand '~' to user's home directory (Mike Mattozzi) * [SQLLINE-61] Add `!nickname` command, to set a friendly name for a connection (Mike Mattozzi) * [SQLLINE-54] Add JDK 9 support; drop JDK 1.5 support Other: * Fix tests on Windows * Sort list of JDBC drivers * Publish manual and API for release 1.2.0 * Create a property for the version number of each maven dependency * Add "release" profile, and only sign if it is enabled * Edit release instructions ## 1.2.0 (2016-10-26) Bugs and functional changes: * [SQLLINE-49] `!manual` command fails * [SQLLINE-48] Lazily load system properties on startup * [SQLLINE-35] Make `SqlLine.begin` method public * [SQLLINE-42] Script fails if first line is a comment * [SQLLINE-41] `!tables` command hangs in h2 * [SQLLINE-39] `!help set` shouldn't break long lines * Add `WrappedSqlException` to allow `IncrementalRows` to throw a `SQLException` (Parth Chandra) Other: * Change capitalization of project name to "SQLLine" (previously a mixture of "sqlline" and "SQLline") * [SQLLINE-37] Initial github-pages web site, including manual * Checkstyle should always look for unix line endings, even on windows * Fix Windows line endings * Switch to "scott-data-hsqldb" as test data set; it is smaller than "foodmart-data-hsqldb" ## 1.1.9 (2015-03-06) No bug fixes or other functional changes Other: * Publish releases to Maven Central (previous releases are in Conjars) * Sign jars * Use net.hydromatic parent POM, upgrading several maven plugins * Fix code style for upgraded checkstyle ## 1.1.8 (2015-02-16) Bugs and functional changes: * [SQLLINE-32] `!help set` should print documentation for all variables * Add `sqlline` and `sqlline.bat` scripts, and `jar-with-dependencies` (Jongyeol Choi) * Fix color output: output style instead of name * Add test for [HIVE-5768] Beeline connection cannot be closed with `!close` command * Test `!record` command * [SQLLINE-26] Flush output for each command when using `!record` command * Use `ResultSet.getString()` for types that support it, `getObject().toString()` otherwise * [SQLLINE-25] Spaces in classpath * Add mailing list to maven * Upgrade `maven-release-plugin` to version 2.4.2 * Make return code enum public so other code can check it ## 1.1.7 (2014-02-14) Bugs and functional changes: * Fix bug: SqlCompleter was skipping every other column. * Fix HIVE-4566, "NullPointerException if typeinfo and nativesql commands are executed at beeline before a DB connection is established" (Xuefu Zhang via Ashutosh Chauhan and Julian Hyde) * Fix HIVE-4364, "beeline always exits with 0 status, should exit with non-zero status on error" (Rob Weltman via Ashutosh Chauhan and Julian Hyde) * Fix HIVE-4268, "Beeline should support the -f option" (Rob Weltman via cws and Julian Hyde). SQLLine options '-f file' and '--run=file' are now equivalent. * Add `SqlLineArgsTest`, copied from `BeeLineArgsTest`, but testing against hsqldb rather than Hive. Code re-organization: * Break out inner classes. * Re-format in Apache style (indent 2). * Enable maven-checkstyle-plugin, and fix code to comply. * Modern Java style: add generics; use `StringBuilder` rather than `StringBuffer`; convert arrays to collections; convert some array parameters to varargs; convert loops to `foreach`; remove paranoid `!= null` checks; convert `ColorAttr` to an enum. * Fix javadoc errors and warnings. Other: * Add release history. * Enable oraclejdk8 in Travis CI. * Fix verbose mode. ## 1.1.6 (2013-08-23) * When not running as a shell return boolean to indicate if command worked. * Add travis build status to README. ## 1.1.5 (2013-07-31) * Follow the JDBC pattern of not putting extra checks in cancel calls. * Specify source and target java versions. * Enable Travis CI. ## 1.1.4 (2013-07-22) * Add maven release plugin. * When reading from stdin redirect don't NullPointer at the end of data. ## 1.1.3 (2013-06-27) * Fixed setting of working dot dir to allow override. * Limit history saving to interactive shell. * Fixed history so it saves; removed JLine1 workaround code. * CTRL-C cancels screen output from query