$Id: ChangeLog,v 1.20 2014/03/14 17:24:53 mwesdorp Exp $

Release Notes

sqsh 2.1.6 through 2.5

Please read the file CHANGES for a detailed list of changes in these releases.

sqsh 2.1.5

Experimental support for kerberos network authentication, via the
-K and -R command line flags.
Various bug fixes.

sqsh 2.1.4

Various bug fixes.

Command line -P argument hiding.
Allow host:port syntax for the -S option if built with OpenClient
12.5.1 or later.
Experimental support for CSV output (\go -m csv).

sqsh 2.1.3

This is an incremental bug-fix release.

Better library detection in the configure script (handles new OCS 15 library
names)

Cygwin build instructions and files.

sqsh 2.1.2

This is an incremental bug-fix release.

Bugs fixed (bug IDs from SourceForge's bug tracker)

1010901		Problems with -w ($width).
1051672		Missing OCS libs for static build
1010961		Can't provide multiple sqshrc's
987494		Better version reporting

Other fixes include fixing a segfault if "go" appears on its own in a
comment block, and making sure that the \read command actually reads from
the terminal even when using redirected input or the -i flag.


2005-12-30  Michael Peppler  <mpeppler@peppler.org>

	* src/sqsh_main.c (main): Add support for -P command line argument
	hiding via a pipe (a la isql).

2005-07-24  Michael Peppler  <mpeppler@peppler.org>

	* src/var_dsp.c (var_set_style): Add CSV style (patch from
	  Thomas Depke).

2005-04-09  Michael Peppler  <mpeppler@peppler.org>

	* src/cmd_connect.c (check_opt_capability): Add this function
	to check for ct_option() capability.

	* src/var.h: Change "chained" to default to NULL.

2004-12-08  Michael Peppler  <mpeppler@peppler.org>

	* src/var_passwd.c (var_set_password): Add a check for NULL
	string (requested by Helmut Ruholl)

2004-11-09  Michael Peppler  <mpeppler@peppler.org>

	* src/cmd_bcp.c (cmd_bcp): Add support for BLK_VERSION_150.

	* src/cmd_connect.c (cmd_connect): Add support for CS_VERSION_150.

	* src/sqsh_compat.c (sqsh_getinput): Set the interrupted flag
	if user hits ^D.

2004-11-08  Michael Peppler  <mpeppler@peppler.org>

	* aclocal.m4 (AC_SYBASE_ASE): Change library search code to
	also look for libsybxxx.a and lib[syb]xxx64.a libraries.

2004-11-05  Michael Peppler  <mpeppler@peppler.org>

	* src/sqsh_main.c (main): Don't set "width" to the terminal
	width if it has been set via the .sqshrc file.

	* src/cmd_connect.c (cmd_connect): Change sprintf() to strncpy()
	to avoid possible buffer overflow problem.

	* src/dsp_desc.c (dsp_desc_bind): Comment out code to limit
	datafmt.maxlength to the column display max len. Avoids "bind
	resulted in truncation" errors for text/image/varchar/varbinary
	columns at the expense of disrupting the columnar display.

	* src/cmd_read.c (cmd_read): Use ctermid() to get the name of the
	controlling terminal.

2004-11-04  Michael Peppler  <mpeppler@peppler.org>

	* src/sqsh_expand.c (expand_skip_comment): Fix bug 1046570
	segv if a go is first on a line within a comment.

	* src/cmd_connect.c (cmd_connect): First try at implementing
	optionally setting "chained" mode on connect.

	* aclocal.m4 (AC_SYBASE_ASE): Change the order of the libraries
	so that static linking will work.

	* src/cmd_read.c (cmd_read): Add check to make sure that
	we read data from the terminal in all cases. This means
	checking sqsh_stdin_isatty() and possibly opening /dev/tty
	for reading in the case where sqsh is run with its input
	redirected.

2004-04-12  Michael Peppler  <mpeppler@peppler.org>

	* src/cmd_bcp.c (cmd_bcp): Add logic to use the correct
	BLK_VERSION_xxx value corresponding to the CS_VERSION_xxx used
	when Client Library was initialized and the CS_CONTEXT was
	allocated in cmd_connect.h

	* src/sqsh_global.c (g_cs_ver): Add global variable to hold the
	value of the current CS_VERSION_xxx. Needed in cmd_bcp.c to
	correctly initialize the BLK command.

	* configure.in: Fixed configure script issues with obsolete macros
	and incorrect handling of libraries for the readline test.

2004-04-10  Michael Peppler  <mpeppler@peppler.org>

	* src/dsp_meta.c (dsp_meta): Applied patch from Andrew Pimlott to
	handle sqsh hanging when one interrupts output that is piped to
	another program.

	* src/sqsh_expand.c (expand_variable): Applied patch from Michael
	Chepelev for core dumps when expanding $$ $, etc. This bit of code
	is currently #ifdef'd pending complete testing of variable
	expansion.

	* src/cmd_func.c (cmd_call): Apply patch from Bin Mu to fix
	segfault when using \call without a function name.

	* src/cmd_bcp.c (cmd_bcp): Apply patch from Onno van der Linden to
	avoid potential divide by 0 error.

2004-04-09  Michael Peppler  <mpeppler@peppler.org>

	* src/dsp_desc.c (dsp_desc_fetch): Add support for CS_DATE_TYPE
	and CS_TIME_TYPE.

	* src/dsp_meta.c (dsp_meta_transtate): Add support for
	CS_DATE_TYPE and CS_TIME_TYPE.

	* src/dsp_desc.c (dsp_desc_fetch): CS_ROW_FAIL return codes from
	ct_fetch should not be considered fatal errors for the query, as
	they are usually the result of data overflow/truncation.

	* src/cmd_connect.c (cmd_connect): Add logic to use the the
	highest CS_VERSION_xxx value that is available at run-time. This
	should enable wide varchar() columns to be retrieved correctly
	when sqsh is built with 12.5.x OpenClient.

Changes from 1.8 to 2.0
   o  New build system/directory structure. Should build against
      ASE 12.0 and FreeTDS now.
   o  Added support for varchar2() and varbinary2() for ASE 12.5
      (I don't have a 12.5 instance to test against yet though).
   o  New $maxlen configuration variable controls the maximum
      amount of data that will be displayed for a given column.
      The default value is 8192 (8K). This will automaticallly
      truncate large columns (i.e. TEXT columns) to 8K.
   o  Added \if command to perform conditional execution. This
      includes \elif and \else handling, like so:
           \if [ $x -lt 10 ]
               \echo hello
           \elif [ $x -lt 15 ]
               \echo hi
           \else
               \echo howdy
           \fi
      Please read the manual carefully on how expressions work.
   o  Added \while command to perform basic looping conditional
      expressions:
           \while [ $x -lt 10 ]
               \echo $x
               \set x=`expr $x + 1`
           \done
   o  Added \break command to break out of current loop
   o  Added \for command to perform basic iteration.
           \for i in 1 2 3 4 5 6
               \echo $i
           \done
   o  Added \do command to allow the exection of a sqsh script
      block once per row returned from statement. Also new
      #[0-9] variables may be used to refer to column names
      in result set.
           SELECT name FROM SYSDATABASES
           \do
               USE #1
               go
               CHECKPOINT
               go
           \done
      Also note that \do allows flags -U, -S, -P for execution
      of statements on other server or as other users.
   o  Added \func command to create a sqsh function for later
      execution.  Also, now ${[0-9]} now refer to the parameters
      to this function when it is called.
           \func stats
               SET STATISTICS IO ${1}
               SET STATISTICS TIME ${1}
               go
           \done
           \call stats on
      Note that by passing -x to \func, the function will be
      exported as a full sqsh command, and can be called
      directly without calling \call.
   o  Added \return to return from current function.
   o  Obviously, added \call to call sqsh function.
   o  New variable $? contains:
         -  Return status of command executed on pipe '|'
         -  Return status of expression evaluated for \while or \if.
         -  Last server error number of severity > 10 (@@error).
      This is useful for flow-of-control using the new conditional
      statements.
   o  Added a directory of handy filter scripts.
   o  Fixed \rpc command with @variable names.
   o  \exit now exits sqsh, no matter how many \loop nesting
      levels you are in.
   o  The user will now be re-prompted to enter a password if a
      "Login failed." message is received from the server. This
      may be disabled using the new $password_retry variable.
   o  Fix for signal handling (usually puked on AIX) - Brian
      Bruns.

Changes from 1.7 to 1.8
   o  Got rid of error message about ct_exit() not being called.
   o  Created new 'make distrib' option to build a self-contained
      sqsh binary distribution.
   o  $rcfile and $SQSHRC may now be colon delimited lists of
      sqshrc files.  This allows for system-wide rc files to be
      loaded first before local files.  Also, the default $SQSHRC
      setting is now "/usr/local/etc/sqshrc:$HOME/.sqshrc" (the
      /usr/local will be automatically replaced by the contents
      of --prefix when passed to configure).
   o  Fixed -C.
   o  $SQSHRC no longer needs to be writable.
   o  sqsh no longer pays attention to quotes inside of comments
      during variable expansion.
   o  Fixed bcp'ing of results from stored procedures.
   o  libsybtcl will now be chosen if available.
   o  'exact' mode keyword expansion should now work better (thanks
      to Sean Woolcock <sean@nando.net>.
   o  Added $bcp_colsep and $bcp_rowsep configuration variables to
      control the separators used during "go -m bcp".
   o  Added $bcp_trim to configure whether or not trailing spaces
      are trimmed in the bcp output.
   o  Fixed segfault in "pretty" display mode.

Changes from 1.6 to 1.7

   o  Added support for Windows NT (many thanks to Vadim
      Beloborodov <bvr@cc.pib.alex-ua.com> for the tips and
      tricks to get cygwin32 to work properly).
   o  Fixed Linux stropt.h problem.
   o  For better NT support sqsh will now use $SHELL to determine
      which shell is to be used when processing pipes.
   o  Horizontal output should now make maximal use of the screen
      width (it used to wrap at $width-1 characters).
   o  Hopefully finally fixed characters being dropped in the
      output on certain platforms.
   o  Added new `meta' display style.  This style suppresses row
      data and only shows the behind-the-scenes meta information
      returned instead.  I used this primarily for debugging
      Open Server passthrough gateways.
   o  Added new `pretty' display style.  This style prints its out-
      put in a nicely formatted table output.  Also added the
      variable $colwidth to control the maximum width of a column
      displayed in this mode.
   o  Finally re-wrote the \rpc command to use CT-Lib.  This works
      as it did in 1.4 with the exception that output parameters can
      no longer be sent to sqsh variables.
   o  Fixed CTRL-C problem sending sqsh into an infinite loop on some
      platforms.
   o  Fixed -D flag to connect/reconnect.
   o  Fixed install-wrapper's setting of LD_LIBRARY_PATH.
   o  Added --with-motif support that will cause X support for sqsh
      to use Motif widgets rather than the rather crude and ugly
      Athena widgets. See INSTALL for details (thanks to John Griffin
      <belved!JOHNG@uunet.uu.net> for contribted code).
   o  Added --with-static configure flag to allow static linking with
      sybase libraries.
   o  Added --with-devlib configure flag to allow linking with
      sybase devlib libraries.
   o  Got rid of some compiler warning messages.
   o  Worked around AIX bug where periodically a 'go | more' would
      stop displaying a prompt (this was a freaky problem).
   o  The $history environment will now have its contents expanded
      prior to loading the history file.  This allows for such
      nifty tricks as having a different history file for each
      server.  Thanks to Colin Foss <colin.foss@efi.com> for this
      submission.
   o  Added ability to pass multiple instances of '-e' to the \loop
      command.  Thanks again to Colin Foss <colinf@ttmc.com>.
   o  Changed password behavior. If password is set to the string
      "NULL" then the user is prompted.
   o  Fixed problem with -k option being ignored.
   o  Fixed -lsec library problem with HP-UX 10.20.
   o  Fixed `errno' undeclared problem on certain environments.
   o  Added -C flag to allow a single sql statement to be executed.
      Right now this is a little limited in that it may not contain
      any double quotes.
   o  Added boolean $output_parms variable to enable to disable the
      display of output parameter result sets.
   o  Fixed small locale problem when determining the maximum
      length of a datetime (thanks again to Vadim Beloborodov
      <bvr@cc.pib.alex-ua.com>).

Changes from 1.5 to 1.6

   Release 1.6

   o  Cleaned up the `Password' entry a tad to help programs like
      `expect' avoid race conditions.
   o  Supplying a password of `-' to the -P flag will now cause your
      password to be read from the first line of stdin.
   o  Added install-wrapper option to install a shell-script wrapper
      around sqsh that automatically takes care of setting your
      LD_LIBRARY_PATH (thanks to Tod Olsen).
   o  Reverted back to the 1.5.2 version of the logic that determines
      the set of libraries on a given platform.  1.5.3 had some
      problems on certain Solaris installations.
   o  Fixed redirection problem with the html and bcp display styles
      when performed non-interactively (say via a sqsh script).
   o  Fixed problem where $database was no longer tracking your
      current database context (broken in previous release).
   o  Added configurable display format for floats and reals via
      $float and $real environment variables.
   o  Got rid of setjmp/longjmp in new filtering feature in order
      to lose some compiler warnings about clobbered variables.
   o  Got rid of packet size limit of 2048 (I don't know why I had
      it in the first place).
   o  Fixed coredump problem with `\set var' was called without
      an '=' to specify the value of the variable.
   o  Hopefully got rid of characters being dropped on HP-UX when
      sqsh is linked with termcap.
   o  Fixed problem with \read failing to echo when -h is not
      supplied.
   o  Added -a option to \buf-load to append, rather than replace,
      the buffer being loaded.

   Release 1.5.3 (internal release)

   o  Fixed bug on AIX where a COMPUTE clause without a BY list would
      fail to display any results.
   o  Corrected bug where 'SELECT * FROM sysaudits' was not returning
      a result set.
   o  Fixed problem with certain message headers being displayed when
      they shouldn't have, such as messages from dbcc's and database
      dumps.
   o  Added new $filter and $filter_prog variables, and -t flag to \go
      command to allow the SQL buffer to be filtered through an external
      program (such as cpp or m4) prior to being sent to SQL Server.
   o  Added new $HOME/.sqsh_readline output which will save away
      the readline line-by-line history buffer upon exit.  Also added
      new variables $readline_history which allows you to change the
      default filename, and $readline_histsize which allows you to
      limit the number of entries in the file.
   o  Added new "exact" option to the $keyword_completion variable
      which will complete the keyword exactly as it is specified in
      the .sqsh_words file.
   o  Added new $repeat_batch variable to control whether or not
      a 'go' with an empty work buffer will repeat the last command
      executed.  Note that this now defaults to 'off' which is the
      opposite of previous versions.
   o  Added -x flag to the \set command to allow the variable to
      be exported to the environment.  Also, the \set command may
      now be used to set more than one variable at a time.
   o  Added $semicolon_cmd to set which command will be executed
      when a semicolon is encountered (only when $semicolon_hack
      is set to On).
   o  PRINT statements and informational messages will no longer
      increment batch_failcount because $thresh_fail now defaults
      to 11.  Any several level under 11 is now considered
      informational.
   o  The -P option of \bcp no longer requires an argument
   o  The \bcp command should deal with transferring identity columns
      between tables.  Also, added the -N option to indiciate that the
      identity column values are not being supplied.
   o  Fixed memory leak related to editing a SQL Buffer (sqsh was
      losing approx. 1K every time you ran vi, emacs, or edit). Thanks
      again to the folks at Pure.

   Release 1.5.2

   o  Added -D option to \connect and \reconnect to allow switching
      of database context during establishing of a new connection.
   o  Return param result sets should now be displayed similar to
      11.1 version of isql (anyway, they shouldn't cause sqsh to
      choke).
   o  Ran sqsh through Purify (a great tool!) and cleaned up a couple
      of minor memory leaks and array boundry read problems.
   o  Corrected the ability to ^C out of the \lock command (making
      it virtually useless).
   o  Cleaned up error recovery during result set display so sqsh
      should no longer go into infinite loops.
   o  SA_RESETHAND and SA_ONESHOT problems should be solved on AIX
      (which, for some reason does not support these flags).
   o  Fixed problem with -P being ignored during \reconnect and
      \connect.

   Release 1.5.1

   o  Cleaned up 'configure' logic to make it a little smarter in
      determining whether or not to use siglongjmp() or longjmp().
   o  Added -lsdna to link line for OSF/1.
   o  On SGI machines using TLI, configure should now choose to
      include the -lnsl library as well.
   o  Got rid of test for -Xc flag on the SunPro compiler.  This
      was causing sigjmp_buf to be unavailable for use by sqsh.
   o  Fixed (?) problem with SA_RESETHAND being undefined on AIX,
      sqsh will now also look for SA_ONESHOT instead.
   o  Fixed problem with $thresh_exit being ignored.
   o  Fixed problem with sig_t conflicting with OS defintion on
      Dec UNIX in sqsh_sig.c.
   o  Fixed formatting problem with REAL and FLOAT data types.
   o  Added configurable date format with the $datetime variable,
      similar to the strftime(3C) function.
   o  Started documentation on "How to write a sqsh command" in
      doc/Commands.

Changes from 1.4 to 1.5

   Release 1.5

   o  Fixed problem where sqsh was not kicking you out when the
      server was shut down.
   o  Fixed bug in longjmp() code throughout sqsh that I am totally
      amazed hasn't caused anyone to coredump during the last year
      that sqsh has been available.
   o  Fixed bug in signal handling during non-interactive mode.
   o  Replaced entire signal handling mechanism in sqsh with a
      centralized signal handler (quite an interesting piece of
      work).  This handler will use POSIX signals if they are
      available on the system, so -D_BSD_SIGNALS is no longer
      required on SGI IRIX.
   o  Added $batch_pause to cause a "Hit enter to continue" message
      following each batch sent to the server, useful for use with
      $echo to debug scripts.
   o  Added '-r sqshrc' option to allow you override the name of the
      .sqshrc file to read upon start-up.  If sqshrc is not supplied
      then no startup file is read.
   o  Optimized file descriptor handling so that sqsh no longer
      attempts to fstat() every possible file descriptor upon
      startup.
   o  The "rows affected" message should come close to emulating
      isql's and older versions of sqsh. It probably will never
      match exactly, but should be pretty close.
   o  Cleaned up client and server error handlers to display
      more closely to the DB-Lib version of sqsh (they still
      don't quite match, but it looks much better then 1.4.2).
   o  Added -B flag so that sqsh will now attempt to turn off
      buffering of stdin, stdout, and stderr upon start-up.
      This should allow it to be controlled by such libraries
      as 'expect'.
   o  Added --with-gcc flag, and INCDIRS and LIBDIRS environment
      variables (thanks to Tod Olson <ta-olson@uchicago.edu>).

   Release 1.4.2

   o  Reworked autoconf stuff to determine the set/order of libraries
      used to link according to OS type; if this fails, autoconf
      should now take a best guess.  Also, added check to define
      _POSIX_SOURCE. Added --with-x, --x-includes, --x-libraries
      options to configure.
   o  Got rid of extraneous error messages generated if a login
      fails (this was do to faulty clean-up code).
   o  If no buffer is supplied, '\go' will now re-execute the
      last command run (thanks to Daniel Roitman <daniel.roitman@gs.com>
      for this patch).
   o  Added '-e <statement>' to the \loop command to execute
      the contents of <statement> within its own SQL Buffer (thanks
      again to Dan Roitman for this patch).
   o  Horizontal output style (default isql style) will now attempt to
      pack the data as tight as the current locale will allow. For
      example, if the datetime format for the current locale uses at
      most 23 characters, then a 23 character column will be displayed.
   o  Added new X display style if X11 support is compiled in.  This
      also added the new $xgeom variable and -d, -w and -x flags to the
      \go command.
   o  Semicolon will no longer be interpreted within comments (both
      "/* */" style and "--" style).
   o  thresh_exit will now only be applicable while in non-interactive
      mode, rather than any time.
   o  Added a FAQ to the distribution.

   Release 1.4.1

   o  Converted all internal Sybase calls from db-lib to ct-lib (a
      major undertaking that is highly likely to break things, so
      watch out!).
   o  Fixed faulty test in which sqsh would only abort if
      $batch_failcount was exactly equal to $thresh_exit.
   o  Added new "html" display style, that generates HTML <TABLE>
      constructs, this should be useful for running sqsh through
      a CGI.  Right now, the format is not very configurable, but
      this may change in the future.
   o  Stole some 'configure' logic from Steve Etchelecu (thanks
      Steve!), so sqsh should now automatically configure the
      appropriate include and lib directories as well as the
      required set of libraries.
   o  Thanks to the kind sole that converted CT-Lib for Linux
      (Steve again?), the -DNO_DB flag has been removed.
   o  Cleaned up many warning messages generated on stricter ANSI
      compilers (such as SunPro).
   o  Slowly converting my coding style from K&R to BSD (much easier
      to read), so for those coders out there, you'll now see two
      different styles intermixed in the code until I am done cleaning
      everything up.

Changes from 1.3 to 1.4
   o  Fixed bug in vertical display style where garbage was being
      displayed following certain data types.
   o  Fixed bug in \bcp where it would give an overflow error on
      non-NULL CHAR(n) columns.
   o  Added code to automatically detect window size change (SIGWINCH)
      and adjust the $width variable while sqsh is running.  The behavior
      of resizing the screen while a result set is being displayed is
      undetermined.
   o  Added new \lock command to lock the current session until a
      password is typed.  The default password is the same as your
      UNIX password, unless the $lock password is set.
   o  Both $password and $lock are no longer available in clear-text,
      they will now expand to '*password*' and '*lock*' respectively
      thus providing some semblance of security in sqsh.  If you want
      to keep the old behavior, define -DINSECURE in the Makefile.
   o  Added new \rpc command for calling a remote procedure directly.
      This is useful for using sqsh to control an Open Server that does
      not support language calls.

Changes from 1.2 to 1.3
   o  (Hopefully) fixed bug with AIX dropping portions of the output
      from a command substitution (many thanks to David Whitmarsh
      <djw@accessio.demon.co.uk>!).
   o  Fixed bug where \buf-edit attempted to launch an editor called
      \buf-edit.
   o  Fixed bug where partial alias names were being expanded (for
      example just typing the first character of an alias name caused
      the alias to expand).
   o  Added positional parameters when the -i flag is used, so now
      you can do nifty things like creating an executable file called
      sp_who with the contents of:

           #!/usr/local/bin/sqsh -i
           sp_who ${1}
           go

   o  Added transaction count to the '\go' command, similar to isql's.
      Also added -s flag to \go to pause for a specified number of
      seconds per transactions.  Also changed to statistics output
      to more closely resemble that of isql.
   o  Corrected some faulty logic with error capturing. Now, the variable
      $thresh_fail is based upon the error severity as reported by the
      message handler rather than the error handler (makes a lot more
      sense).
   o  Added -c flag to \connect and \reconnect to force the commands
      to ignore the value of $database.  That is, to *not* attempt to
      preserve the current database context upon reconnect.
   o  Added new selectable result set display styles.  Currently supported
      styles are "horizontal" (traditional isql output), "vertical", "bcp",
      and "none" (thanks to Bob Stent for example vertical code). The
      display style is selectable via the new $style variable, and the -m
      command line flag and -m option to the \go command.
   o  Added the \bcp command to transfer the result set from the current
      command batch to another SQL Server via bcp protocol.  This acts
      kind of like a SELECT INTO another server.

Changes from 1.1 to 1.2

   o  Got rid of the "(exit = X)" message generated by the
      \shell command and added a new variable called $? that
      contains the exit status of the process.
   o  Fixed problem where the output of \shell would "out-run"
      the output of sqsh when redirected to a file.
   o  Fixed problem with a background connection being established
      with a database context of the users default database rather
      than inheriting the context of the foreground (its parent)
      connection.
   o  Added code to attempt to blank out the password from the
      command line on platforms that support this (hopefully
      this won't cause a coredump on other platforms).
   o  Added -J flag and $charset variable to set the character
      set to be used on the client side. Note that the $charset
      variable will automatically set itself to the current
      client charset.
   o  Added -X flag and $encryption variable to enable client-side
      password encryption.
   o  Added -z flag and $language variable to enable language specific
      database messages.  $language will automatically set itself
      to the current language context.
   o  Added -H flag and $hostname variable to set the client hostname
      for the sqsh session.  Note that "\set hostname=`hostname`" is
      a neat trick to put in your .sqshrc.
   o  The $autouse variable has been deprecated. Now, if the $database
      variable is set, it will take precedence over the $autouse
      variable.  Since the $database variable is automatically set
      after connecting to the database this fixes the bug where a
      background task was failing to connect to the same database
      as the forground task that launched it.
   o  Added "real" alias support.  That is, aliases may now contain
      additional command line information, and may include positional
      '!*' entries for expansion within the body of the alias. So,
      you may now do cool things like "\alias prod='\reconnect !*
      -SSYB_PROD'" and "\alias mo='\go !* | more'".

Changes from 1.0 to 1.1

   o  Fixed bug with redirection failing to truncate the output
      file upon creation.
   o  Fixed problem with -i flag being ignored by \loop.
   o  During interactive use, sqsh will now attempt to figure out
      the current screen width if an explicit -w was not been
      supplied.  This feature may not work on all terminals.
   o  Added external environment variable SQSH, which may contain
      any desired sqsh command line arguments.  This variable is
      parsed prior to parsing the actual sqsh command line. This
      provides yet another reasonably secure way to supply a password
      to sqsh.
   o  Added new command line argument '-L var=value' used to set
      the value of the variable $var.  This may be used to set any
      sqsh variable, even if there is no explicit command line flag
      available.
   o  Added new $histnum variable that contains the history number
      that will be assigned to the current SQL batch as soon as the
      \go command is executed.
   o  Added line continuation by escaping the new-line, that is
      if the line ends with a \\, then the newline will be ignored.
   o  Added $prompt2 variable to be displayed during line continuations.
   o  Drastically re-worked user input internals, cleaning up signal
      handling and modularlizing the read functions (making way for
      dealing with flow-of-control logic). Also got rid of compiler
      warnings about variables being clobbered by longjmp.
   o  Added tons of comments to doc/sample.sqshrc.

Changes from 0.8 to 1.0

   o  Fixed bug introduced in 0.8 where a NULL -P on the command
      line caused a coredump.
   o  Reduced the circumstances in which the banner message is
      displayed (it won't be displayed if -i is used, or stdin
      or stdout has been redirected).
   o  Fixed bug where setting $username in your .sqshrc was being
      ignored (it was still defaulting to your real username).
   o  Fixed bug with coredumps when sqsh commands receive more than
      16 arguments.
   o  Fixed portability issue with the MAXPATHLEN define and with
      strdup prototype.
   o  Fixed problem with sqsh failing to exit following a shutdown
      of the server (ignoring the EOF from SQL Server).  The new rule
      is, unless you are doing a \reconnect, if DBPROCESS dies or is
      NULL, then sqsh will exit with 255.
   o  Fixed portability problem for 4.9.2 systems that don't have
      the DBSETLPACKET() call available.
   o  Corrected quoting rules. I used to interpret single quotes
      contained within double quotes and visa versa.  This meant
      that in the string "scott '$rules'" the $rules wouldn't be
      expanded. According to POSIX quoting rules this isn't the
      correct behaviour.  Once inside either single or double quotes
      the only quote to be interpreted is the matching closing quote.
   o  Reworked the escaping mechanism.  Basically I threw out the
      escaping via doubling mechanism (where ""hello"" expanded
      to "hello") and went with something a little more conventional.
      Since \ is already reserved for commands, the escape character
      is now \\.
   o  Attempted to make sqsh command line parsing a bit smarter. Now,
      commands no longer have to begin at the very first column of the
      current command line.
   o  Added command substitution both withing SQL batches and
      in a command function, using the ` character, much in the
      same way a standard shell does.  This also necessitated the
      creation of the $ifs variable to determine the internal
      field separator.
   o  Added new start-up configuration file ~/.sqsh_session to be
      executed immediatly prior to establishing a connection to the
      database.
   o  To allow setting NULL passwords within the .sqshrc, you may now
      do: \set password=NULL.
   o  Added all sorts of internal debugging code, a -l flag to set
      the debugging level and a new $debug variable.  These are
      mostly undocumented, but they are there.
   o  Added -v flag and $version variable to display the current version
      number.
   o  \alias without any parameters will now display a list of the alias'
      that are currently in place.
   o  \help now displays its commands in alphabetical order.
   o  Added new \shell command to execute something in a sub-shell.
   o  Added -i flag to \loop to supress error conditions if the
      supplied file name could not be opened.
   o  Fixed problem with 'go 2>&1 | more' failing to redirect error
      messages to 'more'.
   o  Added -k flag, $keyword_file variable for supplying your own
      file full of custom readline completion keyword.
   o  Added support for -c without an associated argument.  This
      is the same as -c "".

Changes from 0.6 to 0.8

   o  Added some more GNU Autoconf logic to make Sequents happier
      with the gettimeofday() function.
   o  Added $database variable which automagically keeps track of
      the current database context.
   o  The SQSHRC environment variable was being ignored.   This
      has been corrected.
   o  Added README.SGI to detail solutions to getting sqsh to build
      on SGI's (thanks to Pablo Sanchez).
   o  Added -D flag and $autouse variable to force to sqsh to connect
      with a database context of $autouse.
   o  Added "real" history recall mechanism. That is, you don't need
      to have a space after the '!' to copy a buffer into the current
      work buffer.  This feature is only available for interactive
      sessions and must be turned on with the $history_shorthand
      variable.
   o  Re-worked signal handling for cmd_go.c (when your result set
      is being displayed), such that a longjmp() is never performed.
      Hopefully this will keep dblib happy across all platforms.
   o  Fixed bug where -n flag to \echo was being ignored.
   o  Added \read command to read input from user.
   o  Drastically re-worked variable expansion scheme when executing
      sqsh commands.  It used to be that when doing:

        1> \set x="1 2 3"
        2> \command $x

      that \command would only receive one argument, '1 2 3', however
      I was doing some testing and discovered that most shells don't
      behave this way.  Now, \command will receive three arguments,
      '1', '2', and '3'.  Unforunately (or fortunately) because of the
      way that I did this, this also means that you can now do:

        1> \set x=">/dev/null"
        2> \echo hello $x

      And "hello" will be sent to /dev/null, which isn't "standard"
      shell behaviour.
   o  In an effort to take a stab at adding \if, \then, \endif logic
      to sqsh, \loop is now contextual, that is, each instance of
      \loop maintains its own $lineno and work buffer.  This doesn't
      mean much now, but paves the way towards allowing loop to execute
      to be used by \if to execute one of the conditions.
   o  Added comments using the '#'. Comments must begin at the first
      column of the line, and the first character following the '#'
      must *not* be a valid character for a temp-table name.  This now
      gives you the ability to have sqsh skip lines that start with #!, so
      that sqsh scripts may now be run directly.
   o  Fixed bug encountered on some systems, where a 60 second delay
      is encountered between when a pipe completed and the prompt is
      returned.

Changes from 0.5 to 0.6

   o  Fixed problem introducted in 0.5 that caused sqsh to immediatly
      exit after reading a user's .sqshrc file on SunOS machines.
   o  Fixed -s flag (I thought I had fixed it in 0.5, but I didn't).
   o  Damn it! Once and for all, I have fixed the -c flag.  I swear
      I wish I would read my own command and source code from time
      to time.
   o  The check to verify if a variable being set by command line
      flags was properly specified, was not working.  This has been
      corrected.
   o  Fixed bad quoting rules associated with commands following a
      pipe.  I was accidently striping the quotes off of the string
      following a pipe, which is not what was documented.
   o  Cleaned up the message handler output to make sure that I print
      the name of the stored procedure (if applicable) and don't
      print the current line number (if no applicable).
   o  Fixed problem where a SIGINT while sqsh is in non-interactive
      mode (i.e. reading input from a file or some-such), only caused
      sqsh to abort the current batch.  It should now abort, returning
      an exit value of 254.
   o  Added TSQL keyword completion if GNU readline support is compiled
      in.  This feature may be turned on using the $keyword_completion
      variable, and supports either forcing the completion to lower case,
      upper case, or "smart" casing of the keyword.
   o  Added call to dbsetversion(DBVERSION_100), if available,
      to fix dbcancel() failure on SGI's and similar platforms.  This
      may also be fixed by grabbing the latest EBF of dblib for that
      platform.
   o  Added the -d flag and $thresh_display variable to specify the
      minimum severity level which will display a message.
   o  Added the -f flag and $thresh_fail variable to specify the
      minimum severity level which will be considered a failed batch.
   o  Added the -a flag and $thresh_exit variable to specify the
      maximum number of failed batches (from above) that may occur
      before sqsh will exit.
   o  Added -A flag and $packet_size variable to control the TDS
      packet size used during a session.
   o  Added -o flag to attach sqsh's stdout to a file.
   o  Added the \abort command to force sqsh to abort (even from within
      nested \loop's) with an error code of 254.
   o  Added (well, added documentation for) $clear_on_fail, which is used
      to toggle wether or not the current work buffer is cleared out if
      the batch doesn't succeed.
   o  Once again, I bow to the masses against my better judegement. You
      can now provide and empty alias for \go, via the command line
      option -c ''.  However, this is a pretty ugly hack and is done
      using the variable $newline_go.  Use at your own risk.  You have
      been warned.
   o  Added -y to specify alternative $SYBASE value.
   o  Made the $semicolon_hack smarter.  Now, if a semicolon is contained
      within either a set of single quotes or double quotes it will not
      be interpreted.  This holds true even for multi-line quotes.

Changes from 0.4 to 0.5

   o  Fixed more signal handling problem (actually, some that I thought
      were fixed in the last release) in config.h.in and cmd_go.c.  Now,
      if you have sigsetjmp() available, then it will be used in
      preference to setjmp().  This solves many of the collisions with
      use with the readline library.
   o  Actually remembered to update the banner message with the
      current version number (yeah, big deal).
   o  Bowed (reluctantly) to the torrent of users that wanted to use ';'
      as an in-line command terminator.  This must be turned on using the
      $semicolon_hack variable.  Unfortunately, this is not yet smart
      enough to figure out when a ';' is being used inside of a quoted
      string.  I'll add that later.
   o  Fixed problem with certain severity 0 messages being dropped from
      being printed by the message handler.
   o  For some reason I had the $colsep variable only accepting integer
      values, this also affected the -s flag.  This has been cleared
      up (hopefully).
   o  Fixed problem with my quoting rules: under certain circumstances
      sqsh would throw quotes out of strings in SQL statements (which
      is obviously not what is wanted).
   o  A SIGPIPE (death of the process on the end of a pipe) no longer
      generates a ^C, not that anyone complained.
   o  Got rid of the \floop command, and merged the responsibilities
      into the \loop command.  The user's resource file is now read via
      '\loop -n < $rcfile'...see sqsh_main.c.
   o  Got rid (hopefully) of warning messages about setjmp() being
      redifined on some systems.

Changes from 0.3 to 0.4

   o  Added prototype for strdup() to sqsh_compat.h for those systems
      that don't supply one for you (what *is* it with that function?).
   o  Cleaned up the USE() macro in sqsh_compat.h that caused some anal
      versions of gcc to spew warnings.
   o  I lied last time, *now* \help should display a message that there
      are no help files available.
   o  Cleared up some compiler warning messages on some platforms.
   o  Fixed potential bug with signal handlers destroying the current
      state of the processes signal mask.
   o  Fixed '-h' flag failing to work on the command line.
   o  Still having signal handling problems with some platforms.  Added
      the \sigtest command to dump some usefull debugging information.

Changes from 0.2 to 0.3

   o  Fixed security bug in sqsh_open() that caused in file created by
      redirection to be created with the wrong/random permissions.
   o  Defer files are now created with permissions of 0600, for a little
      added security.
   o  Added more comments in Makefile.in to make life a little easier.  Also
      added default library -lm to SYBASE_LIBS.
   o  File descriptor manipulation is more efficient; there is less
      juggling going on for files that are rapidly opened and closed
      (see sqsh_fd.c, fop_push()).
   o  Added the -b flag and the $banner variable to turn off the start-up
      banner message.
   o  Added the -p flag to the command line and \go command, and the
      $statistics variable to turn on/off performance statistics.
   o  Fixed bug in syb_err_handler() that caused a coredump on dblib 4.9.x
      if dbproc is NULL.
   o  Fixed bug with -S being ignored.
   o  '\help command' now properly displays that it doesn't have any help
      files yet.

Release 0.2

   o  Initial release.  Chock Full O' Bugs.
