Skip to content

Releases: scgray/jsqsh

jsqsh-2.3

26 Feb 14:26

Choose a tag to compare

New Features

  • Extension plugin framework: Extensions to jsqsh can be developed that
    provide a way to load additional commands and variables into jsqsh at
    runtime (at jsqsh startup time, via the new \import command, or when
    specific jdbc drivers are loaded)). With this feature jsqsh can
    be dynamically extended with new features that, for example, take
    advantages of features specific to a particular database implementation.
    Details on extending jsqsh can be found in the 'EXTENDING.md" file
    included with the source code.

  • Added ability for \go to produce a crosstab of the underlying results,
    like so:

      [null][me] 1> select * from x
      [null][me] 2> go
      +-------+-----------+----------+
      | STATE | DAYOFWEEK |    SALES |
      +-------+-----------+----------+
      | NJ    | Mon       | 14.20000 |
      | NJ    | Tue       | 11.40000 |
      | NJ    | Wed       | 19.30000 |
      | CA    | Mon       |  4.10000 |
      | CA    | Tue       |  8.30000 |
      | CA    | Wed       | 44.20000 |
      | NJ    | Thu       | 17.10000 |
      | AR    | Tue       |  4.30000 |
      +-------+-----------+----------+
    
      [null][me] 1> select * from x
      [null][me] 2> go --crosstab dayofweek,state,sales
      +-----------+---------+----------+----------+
      | DAYOFWEEK |      AR |       CA |       NJ |
      +-----------+---------+----------+----------+
      | Mon       |  [NULL] |  4.10000 | 14.20000 |
      | Tue       | 4.30000 |  8.30000 | 11.40000 |
      | Wed       |  [NULL] | 44.20000 | 19.30000 |
      | Thu       |  [NULL] |   [NULL] | 17.10000 |
      +-----------+---------+----------+----------+
      (8 rows in results(first row: 0.001s; total: 0.002s)
    
  • Added two new display syles, simple and tight. These styles are
    identical in behavior to pretty and perfect (respectively) except
    that they drop the outer borders allowing for a few more characters of
    available screen space per line, like so:

      [null][me] 1> select * from x
      [null][me] 2> go -m tight
    
      STATE | DAYOFWEEK |    SALES
      ------+-----------+---------
      NJ    | Mon       | 14.20000
      NJ    | Tue       | 11.40000
      NJ    | Wed       | 19.30000
      CA    | Mon       |  4.10000
      CA    | Tue       |  8.30000
      CA    | Wed       | 44.20000
      NJ    | Thu       | 17.10000
      AR    | Tue       |  4.30000
    
  • New --url-var (-V) option is now available in \connect or on the
    jsqsh command line to explicitly set a variable contained in a JDBC
    URL by name, like so:

      \connect -Vdb=myDb -dmydriver
    

    In addition, the connection and driver manager configuration wizards
    will automatically detect such variables and allow you to set them.

    This feature makes working with new JDBC URl's that need configuration
    parameters that JSqsh didn't natively recognize much simpler.

  • Added new \read command to allow you to set variables using input
    provided by the user

  • The csv display style may now be configured via the new configuration
    variables ${csv_delimiter}, ${csv_quote}, ${csv_quote_esc}, and
    ${csv_null}

  • The \go command can now specify values for jsqsh configuration variables
    the the new --var (-v) argument. Variables will only be set for the
    duration of the command.

  • JDBC driver properties can now include environment variables in their values.

Bug Fixes

  • Fixed a loooong standing bug with jsqsh's inability to connect to Oracle.
  • When reading input from a file (-i) jsqsh was not handling multi-byte
    unicode characters properly.

JSqsh 2.2

29 Jan 19:49

Choose a tag to compare

You didn't ask for it, but you're getting it anyway. JSqsh 2.2 is here! Below are new and shiny features, however I'd also like to note that a lot of work went into updating the jsqsh wiki. There is now a full set of reference documentation available for all commands, variables, and additional help topics.

New Features

  • New platform support (Mac OS X X86_64, PowerPC 64bit (BE and LE) and s390x)
  • perfect display mode will try harder to avoid resizing numeric columns
  • \go options may now be provided after semicolon e.g. select * from foo; -m vert
  • The datetime_fmt now allows S to indicate fractions of a second,
    not just milliseconds, so you can now carry the precision out further.
  • Added new exit_on configuration variable. This variable indicates
    which commands, should they error, will cause the jsqsh session to
    exit.
  • Command infrastructure is no pluggable so you can provide jars that
    add additional commands into jsqsh.
  • Query time is now carried out to milliseconds precision
  • The visual query timer is now enabled by default ('cause I like it!).
    To turn off use \set timer=false
  • Upgraded jline to 2.13, and added proper handling of ^C while editing
  • Internal documentation has been refreshed, and now is nicely formatted
    to the current display width and using bold and underscore. The
    online wiki documentation is now auto-generated using the \wiki
    command. Check out the awesome new reference documentation at:
    https://github.com/scgray/jsqsh/wiki/Reference
  • The \help command now takes a --format argument to select how you want
    the help formatted
  • The new ${auto_pager} variable controls whether or not help is
    automatically send through a pager (e.g. "more")

Bug Fixes

  • Fixed NullPointerException when stored proc output parameters return a
    NULL value.
  • Fixed nested quotes in CALL statements like CALL MYPROC(?='Scott''s book')
  • Fixed bugs with word wrapping in perfect display mode
  • Handles failure of the driver to return the value for a column more
    gracefully (instead of stopping the whole result set, just prints
    *ERROR* in the column.
  • NullPointerException when calling a stored procedure in Sybase
  • Stop print DB2 warning about "statement succeeded". It is annoying.
  • Command line arguments with spaces in the value were not
    handled properly
  • Got rid of unecessary "*" when prompting for passwords
  • Fixed NPE if no password is provided at password prompt

JSqsh 2.1.0

07 Nov 21:16

Choose a tag to compare

JSqsh 2.1.0 is now available. This version includes a significant number of new changes and bug fixes. Here are some highlights of the release, but you can find a complete list here.

  • Interactive set up wizards for configuring drivers and connections
  • Improved portability: there are no more platform specific builds, just install and run it!
  • Each driver may not have its own separate classpath
  • Support for executing stored procedures with output parameters
  • Improvements to metadata commands (like \describe)
    • They are now contextual based upon the current database or schema of the session
    • Support for quoted identifiers like "My Table"
    • Object names no longer need to be entered in the same case as stored in the database catalogs
  • History recall can now reference previous executions using relative numbers (!-2 means retrieve the query executed two times ago)
  • The meaning of the exit status of jsqsh can be configured
  • Smarter recognition of semicolon as a command terminator inside of PL/SQL statements
  • A number of bug fixes