SQuirreL SQL version 2.5 released


Version 2.5 is now available for download. Enjoy!

2.5 (4/7/2007)


- Updated Czech translation (Thanks to Jan Kostrhun)
- Updated Simplified Chinese translation (Thanks to xpdz)
- Updated French translation (Thanks to Erwan Duroselle)
- Updated Italian translation strings (Thanks to Ivo Neri)

- When the user control-clicks on an identifier in the SQL editor it takes you
will show that object in the object tree (Same behavior as Ctrl-b).

- Dialog prompt to save file changes on exit, now includes the filename in
case there are multiple open files in different sessions. Also, the session
alias name appears in the title, in case the editor contents aren't yet
associated with a file.

- SQL history window
The contents of the SQL history combo box can now be opened in a window
where the user can search for formerly excuted statements. The history
is available through a button next to the SQL history combo box or through
tools pop up (ctrl+t).

- Export: Warn the user when exporting data to CSV/Excel if there are Clob
placeholders (<Clob>) in the table data being exported. Also, let the user
know when the export to file is complete, if no command is to be executed to
show the exported file.

- 'Delete Records' action now orders the selected tables in order to satisfy any
FK dependencies. Previously, this operation would fail if PK tables preceded
(by name alphabetically) FK tables in the object tree list.

- Certain plugins (Oracle, Sybase, MS SQL-Server) now have configuration tabs
(in Global Preferences) to allow for configuration of the statement separator
for scripts independently from the Session properties configuration. For
example, this means that now when you switch between session windows that use
different statement separators (Oracle = ';' / Sybase = 'GO'), you no longer
have to change the global statement separator for all sessions to get the
correct one for script execution. As long as you have the plugin installed
which corresponds to the type of database that a session is accessing, a
reasonable default is supplied to make this configuration unnecessary in most

- Added better support for executing large scripts (by default, a script is
considered large if it has > 200 SQL statements selected for execution in the
script). Now, only one message is written in the message panel at the bottom
of the session window at the end of running many statements summarizing the
details of execution (timing, statement type and count, etc). The message
"SQL Statement x of y <some sql...>" is still displayed in the results panel to
indicate progress. Also, the history bar isn't updated during large script
execution. The "200 SQL statement" default is configurable in Global
Preferences under 'SQL' tab and all of this new functionality can be disabled
by using '0' (zero) as the value of large script statement count. This
dramatically improves UI responsiveness for large scripts (especially those
with statement counts in the thousands) and makes it possible to cancel the
execution using the cancel button - which is otherwise effectively disabled
while the UI attempts to keep up with all of the UI updates in a large script.

New Plugins for H2, PostgreSQL and DB2
These plugins provide source tabs for stored procedures, views and triggers.
They also provide details tab for sequences and triggers

New Plugin for Sybase ASE by Ken McCullough
The plugin allows to script the code of Views and Stored Procedures of the
Sybase ASE DB.

Code Completion:
- The number of table columns that should be displayed on top of the
completion list when completion is called outside of the scope of a
table/view is now configurable in code completion properties.

Edit Extras:
- New formatting action - remove newlines. This is useful when copying SQL
from console windows that insert end-of-line characters when copying.

Refactoring Plugin
- Added support for modifying the column type from varchar2 -> clob and
clob -> varchar2 (which isn't directly supported by Oracle's column modify
alter statement).
- 'Drop Tables' action now orders the selected tables in order to satisfy any
FK dependencies. Previously, this operation would fail if PK tables
preceded (by name alphabetically) FK tables in the object tree list.

SQL Scripts Plugin
- Now when selecting 'Create Data Script', the insert statements created are
ordered by the first column.

Oracle Plugin
- Added configuration panel for Oracle plugin in Global Preferences to allow
configuration of new custom Oracle query tokenizer.
- Added support for executing create procedure, create function and create
trigger blocks delimited by a single "/" such as is supported in SQL-Plus.
Also, added support for the "@" construct which is used to specify a script
file to be executed without loading it into the SQL Editor first.
- Source tab for views now presents source code that is formatted and
correctly formed to allow it to be used as an SQL statement to replicate
the view.
- Added the schema name to the SID for session nodes - it's easier now to
find the session you are looking for.

Informix Plugin
- Is now using the code reformatter for formatting the Source Tab for views
The code reformatter was written by Gerd Wagner and previoously located in
the EditExtras plugin. It has been moved to core so that other plugins can
take advantage of this capability.

DBCopy Plugin
- Allow the user to set "0" for the fetch size to indicate that this should
not be called. JDBC-ODBC bridge driver fails to execute *any* SQL once you
have set the fetch size to *any* value.
- Analyzes FKs to be copied and skips them if they already exist in
destination database.
- Now the plugin reorders source tables to satisfy FK dependencies when
copying data into existing tables with similar constraints.
- The error message for SQLExceptions now includes the SQL statement that was
last executed (including bind variable values if it was a PreparedStatement)

Data Type Controls/DBCopy preference sheet scrolling - sped up the scrollbar
so that one click of the down arrow gives ~10 pixels of scroll instead of
only 1 pixel. This makes it so that scrolling with a wheel mouse moves from
top edge to bottom edge in about three full rotations of the wheel instead of
about thirty.

- Fixed issue where USERS, SESSIONS, INSTANCES nodes in the object tree for
Oracle sessions weren't being populated with child nodes when the session is
first started.
- Added support for identifying Informix XPS, so that the Informix plugin can
be used (Thanks to Dieter Engelhardt for the patch)
- When treating dates like timestamps, simply use the DataTypeTimestamp class
instead of trying to make the DataTypeDate class smart enough to interpret
timestamps. This fixes the issue where a Number format error was encountered
while editing DATEs when they are being interpreted as TIMESTAMPS.
- Fixed NPE that is seen on startup when sessions are set to "Connect at Startup"
- Fixed functions like Quote/Unquote SQL or Format SQL which were removing new lines.
(Now there is a separate function to remove newlines)
- Caching of schemas (serializing to disc) failed. A NotSerializableException
was thrown, due to development code introduced during version 2.5 development.
- An error occured when F5 (Refresh) was hit in a SQL Work Sheet or an Object Tree Window.

1689040 (plugins prefs files saving)
Now preferences for some plugins (DBCopy, MS SQL-Server, Oracle, SQLScript and
Sybase ASE) that were formerly stored in the program plugin directory, are now
stored in the user's settings directory. This means that preferences for these
plugins should now be preserved when re-installing SQuirreL to a new location.
To migrate existing settings, command-line arguments can be given:

-DmigratePreferences=true -DoldSQuirreLInstallDir=&lt;old location&gt;

This will result in migrating newer prefs.xml files that are located in
the program plugin directory

\(e.g. &lt;old location&gt;/plugins/dbcopy/prefs.xml\)

to the user's settings directory

\(e.g. USER\_HOME/.squirrel-sql/plugins/dbcopy/prefs.xml\)

You should edit the launch script to add these settings, start SQuirreL, 
stop SQuirreL gracefully, then remove these settings from the launch script.

1682289 Schema browser won't show all schemas.
(Thanks to Robert Williams for the patch)

1681202 Access to column metadata by name (that is, COLUMN_NAME) fails. This
affected the SQLScripts and Graph Plugins for some versions of the DB2
JDBC driver)

1680919 failure to export cvs/excel on mac osx (incomplete ClassPath entry in

1679998 DOUBLE PRECISION is rounded with locale datatype setting

1675787 Bad link in Online Help

1672207 Create Data Script - PostgreSql. PostgreSQL requires insert statement
boolean values to be literal strings "true" or "false", instead of 1/0.

1660412 Create insert script hangs on explicit Oracle DATE fields (A bug in the
the SQL parsing routine would hang the thread when the word "from"
appeared in a column name in the select statement)

1659412 TIMESTAMP WITH TIME ZONE shows as <Unknown (-101)> - Support was added
for rendering values of columns with this Oracle-specific type.

1646886 (SQL Bookmarks: Duplicate parameters show as duplicates in the dialog box)
Now parameter that appear multiple times in an SQL statement do not
result in multiple entry fields in the boolmark run dialog.

1643307 Title is missing in Save-Dialog (When ending a session for file saves)

1617839 Two new lines with white spaces in between do not separate SQLs when
SQLs are executed without selection.

1639680 Cannot export smallint and decimal to MS Excel

1635259 Session menu has two items with mnemonic "T"

1639662 Block comments can be ended prematurely
(Thanks to Sam Polak for the patch)

1631392 (Dropping materialized views) - The 'Drop' menu item has been replaced
by a 'Drop Table(s)' menu item available with the Refactoring Plugin.
The new menu item allows the user to specify whether or not to cascade
constraints as well as being able to see the SQL that will be executed.

1471672 Float numeric field precision loss in output (DBMS:Oracle)

1447227 Object tree should refresh when changing object tree filters

DBCopy Plugin
- If the source/dest database is Oracle, and the type of column being copied
is DATE, then treat it like a TIMESTAMP for reading or writing the value.
Oracle stores a time component in date columns and this change prevents the
time component value from being lost if the destination database can also
store a time component in DATE columns.

Derby Plugin
- Transformed trigger source tab contents into valid SQL that can be used
to re-create the trigger.
- Fixed multiple bugs that occurred in the source tab when the same
view/trigger name is used in multiple schemas.

Informix Plugin
- Fixed to work with IDS 9 - qualified references to all system views by
prefixing them with the string 'informix.' (no quotes).
- Fixed ordering segements within the body of Stored Procedures.
- Applied code formatting to triggers and view source.
- Fixed erroneous inclusion of extra whitespace which for some definitions
made the SQL invalid.

Oracle Plugin
- Fixed a memory leak where the plugin was holding on to closed sessions

Refactoring Plugin
- 'Drop Column' action now properly delegates db-specific drop column command
to the appropriate dialect for the session.
- Now allows precision and scale for new or modified columns to be set to 0.
- The scrollbar in the column list dialog now appears, where previously it
did not, making tables with many columns difficult to work with for
Add/Modify/Drop column.

Posted by Rob Manning 2007-04-07