Announcing SQLCMD Version 85.00 (2008-04-11) ============================================ This is a feature release, adding support for DB-Access or ISQL mode. When invoked as 'dbaccess' or 'isql', or with the -J option, it expects either one or two arguments to follow. The first argument is either the database name or a dash. The second argument is either the script file name or a dash. If the script file name does not end in '.sql', then the '.sql' suffix is added. This allows you to use SQLCMD as a direct replacement for dbaccess or isql. Note, however, that the installer does not create links to sqlcmd called dbaccess or isql by default; you must do that manually. You can thank Tom Girsch at Hilton for the idea. This is also a bug fix release. The main bug fixed is that it builds out of the box with ESQL/C 3.00.xC3. Previously, it failed because the newer version of locator.h defined the type ifx_loc_t. This requires non-negligible (though not horrendous) support in the autoconf code. Version 85.00 builds on release 84.00 which added support for the new BIGINT and BIGSERIAL types that are available with CSDK 3.50 and IDS 11.50. The code has also been cleaned up so it once more compiles with ESQL/C 5.20. Additional changes include reporting inserted serial number values after an insert operation in verbose mode, and right-justifying INT8 (and BIGINT) values when formatted in one of the fixed format modes. Version 83.00 was mainly a bug fix release compared with v82.03 (which was uploaded to the IIUG, but may not have been announced). The largely invisible fix cleans up warnings from 64-bit compilers set to fussy. The visible change is in the print format used with FLOAT and SMALLFLOAT values in both fixed and variable format output. Previously, in variable format output, SQLCMD used "%g" for both types, while for fixed format it used "%21.13e" for FLOAT and "%14.6e" for SMALLFLOAT. Now, in variable format it uses "%-.14G" for FLOAT and "%-.7G" for SMALLFLOAT, and in fixed format it uses "%21.14E" for FLOAT and "%14.7E" for SMALLFLOAT. This means that exponential notation values are written with an upper-case E instead of lower-case, and it also means you get much better reporting of numbers. If you object to this change, then (a) let me know, and (b) you can hack output.c back to the original; it is two lines of code near the top. Or use output.c from SQLCMD 82.03. You can compare and contrast using this script: #!/bin/ksh # # @(#)$Id: double.sh,v 1.2 2008/03/01 03:22:03 jleffler Hacked $ # # Check that SQLCMD is handling float values sensibly { echo "create temp table double(x float, y smallfloat, z varchar(20));" for v in 1.000000 1.000001 1.0000101010101010101 1.000002 1.000003 \ 1.00000000000001 1.0000000000001 1.000000000001 1.00000000001 \ 1.0000000001 1.000000001 1.00000001 1.0000001 1.000001 1.00001 \ 1.0001 1.001 1.01 0.01 0.002 0.0003 0.00004 0.000005 0.0000006 \ 0.0000007 0.000000008 0.0000000009 12.3456789 123.456789012 \ 12345.678901234 12345678.90123456 123456789.01234567 do echo "insert into double(x,y,z) values($v, $v, '$v');" done echo "select * from double order by x;" } | ${SQLCMD:-sqlcmd} -d ${DBASE:-stores} -xHT "$@" - Invoke with options '-F fixed' (or fixsep or fixdel) to see fixed format output. Version 82.01 was also a bug fix release compared with v81.03 with just one optional new feature that has to be enabled explicitly - it is not ready for prime time. If you compile with 'make UFLAGS=-DENABLE_SINGLE_STEP', you can more or less single-step through statements in scripts. There are some issues to be resolved, like what happens at EOF with nested scripts, and it would probably be a good idea to permit a number in the response, to indicate the number of steps to skip. Build Changes ------------- The file previously called CONNECTY.c is now connecty.c.std (to avoid problems on machines with case-insensitive file systems). If you need to use it (you have no variant of Yacc available on the machine), run './configure' as before, then run 'make no-yacc' before running 'make'. This will rename the files for you, permitting the build to complete. This code has been revalidated against a C++ compiler (G++ 4.2.3) and it compiles cleanly except for the warnings about an unused variable, kludge, in one file. The warnings are correct (kludge is unused). Packaging Changes ----------------- Starting with the 81.0x releases, the packaging process used to release SQLCMD now includes a file such as sqlcmd-82.03.sha, which contains the SHA-256 checksum (and file size) of each file in the official distribution. (The 81.0x releases used MD5 checksums, just to be pedantically accurate.) This can be used with a standard SHA-256 checksum generator to establish which, if any, of the source files have changed. The other files for which checksums are generated include the main source tar file. Contact me for the chksumtool Perl script I use to generate this information. A second change is that the software is given a public timestamp by http://publictimestamp.org/. The public timestamp includes many checksums (pretty much any algorithm you can think of and probably a fair few you didn't know existed) for the released tar files, and also establishes a date and time for when the code was released. You can also use the web site to validate that you obtained the correct software. You can also take, say, the SHA-256 checksum of a file you found on the internet and ask whether PublicTimeStamp.org knows which file it is. If it does, it will give you the metadata too. SHA-256 Checksums and File Sizes -------------------------------- SHA-256 20f082afc5f0712340c098a2f5f33a2bf4f7def984dac1aaa31dbe349f18740a 1006839 sqlcmd-85.00-MSD.t gz SHA-256 5f9fb5427a248d39e53a7d6b92b3604afffc591b9ea25138bc7bfb6a2e2444f1 882181 sqlcmd-85.00-Maste r.tgz SHA-256 97e887f2186a796c044d068f5eb8232a1bdda17ea56fea7eb514bf5495438ec3 97 sqlcmd-85.00.sum SHA-256 48b7f1b3fd46bdeab49a1046986bb604bdd77d287595f77880147cd3c1b26a2a 432078 sqlcmd-85.00.tgz Public Timestamp (PTS) Numbers ------------------------------ PTS#756277 sqlcmd-85.00.tgz PTS#756281 sqlcmd-85.00-MSD.tgz PTS#756282 sqlcmd-85.00-Master.tgz PTS#756283 sqlcmd-85.00.sum PTS#756284 sqlcmd-85.00.rel Jonathan Leffler Variously: jleffler@us.ibm.com, j.leffler@acm.org, jonathan.leffler@gmail.com