Home of SQLTools++
  Changelog

The following is the list of changes to the release 1.20RC3 of SQLTools++ since the previous version SQLTools++ 1.10 RC2:

New features

  • Major new feature: Enhanced editor highlighting

    * Match braces
    * Highlight identifiers exceeding maximum length (default 30 chars but can be changed in "PlusPlus" settings, you can use 0 as length to disable this particular feature)
    * Highlight known user objects for current connection
    * Show extended information about selected text in status bar
    Since this is quite beta, all the related new code paths can be disabled in the "PlusPlus" section of the settings

    Note that the "Match brace" functionality behaves as of now differently from the "Find Match" functionality (although it is based on the same): It does not support partial matches (like #if - #else - #endif in "C" mode), it does not consider "broken" matches, e.g. (...]...) will nicely highlight the closing brace at the end, whereas "Find Match" will report a "broken match".

    The colors used for enhanced highlighting are currently either hard coded or linked to existing color categories:
    * Unmatched braces will always have a red background color as of now
    * Matched braces use the "Random Bookmark" color as background color
    * The "Known user objects" use the "Random Bookmark" color as text color
    * Identifiers that exceed the maximum length use the "Bookmark" color as background color and the "Selected Text" foreground color as text color.

    If you change the mentioned colors, the new highlighting will change accordingly.

    Note also that the "Known user object" highlighting  is dumb regarding fully qualified references. It does not consider a fully qualified object name and will still highlight any object name that belongs to the current user, even if it is fully qualified and therefore might not exist in the specified schema or refer to something completely different (Interestingly enough the corresponding TOAD functionality does the same).

    If you have created or dropped objects in your schema and want to refresh the cached list of objects, you can use the "Refresh All" functionality of the Object List/Schema Browser. Note that the cache is also refreshed when use press the OK button in the "Settings" dialog.

    The extended information about selected text covers the following additional information:

    * In Stream selection mode it shows [R: <x>, <y>] where x represents the number of selected rows and y represents the number of selected characters.

    * In Column selection mode it shows
    [RxC: <x>x<y>, <z>] where
    x represents the number of selected rows, y represents the number of selected columns and z represents the number of selected characters which is simply x times y in this case.

  • Auto resize columns after each fetch in the Grid (analyses only the newly fetched array of rows)

    Note that if you often fetch large result sets by moving to the end of the Grid (default shortcut CTRL+END), then you probably do not want to use this option since it can take quite a while to render all the cells to determine maximum size. There is a new option in the "Data Grid 1" section of the Settings dialog to control this behaviour: "Auto resize columns with each fetch".

  • Added external tool placeholder "<SYS_PRIVS>" which can be empty, " AS SYSOPER" or " AS SYSDBA" to support privileged connections in external tools

  • Order columns in Object Viewer for tables by column name, can be selected in PlusPlus Settings dialog or toggled by using second keyboard shortcut (F12 / Shift+F12 by default). The toggling is triggered by the SHIFT key, so if you choose a different keyboard shortcut make sure that you define a second one that combines with a SHIFT key.

    Note that since the installer never attempts to modify the "custom.keymap" file you need to manually add the second shortcut to "Script.FindObject" like that if you use the "Custom" keyboard layout:
    Script.FindObject             Shift+F12
Improvements
  • Reading NCLOBs is now supported, no longer ORA-24806 error message when attempting to fetch them

  • Double-Click on column header border in Grid autofits column (similar to normal windows lists)

  • Appropriate message when not connected to database and attempting to expand a node in Object Viewer

  • Use environment variable ORACLE_HOME if set in environment to locate Oracle Home / OCI.DLL

  • Use environment variable TNS_ADMIN if set in environment to locate TNSNAMES.ORA file for parsing the entries and populating the TNS drop down box

  • Support TNS entries having multiple aliases assigned delimited by comma.

    TNS aliases like that:

    alias1.domain, alias2.domain = (...)

    will be shown as separate entries "alias1.domain" and "alias2.domain" in the Connect TNS drop down list of available alias

  • Support both synonyms SNAPSHOT (LOG) and MATERIALIZED VIEW (LOG)

    Depending on the version of Oracle sometimes the one or the other synonym is used in the catalog views. Now all versions should be supported equally.

  • Do not report ORA-28002 twice if using background connection for statistics or DBMS_XPLAN.DISPLAY_CURSOR

  • More precise information about various data types in Object Viewer: NUMBER, FLOAT, *LOB.

    Numbers show they scale and precision, and for *LOBS no length will be shown.

  • Set filter to "N/A" if none of the QuickFilters "VALID/INVALID" are selected

    This should filter on objects like partitioned indexes that do not have a global status but an individual status for each partition object

  • "Refresh All" in Object List now actually does a "refresh all" resp. marks all tabs for refresh the next time they are used (It didn't do it before, it just did a "refresh" of the current tab)

    Note that this "Refresh All" also refreshes the "Known object" cache used by the enhanced editor highlighting, so in case you've added/dropped objects you can use this option to refresh the cache used for highlighting. The "Known object" cache will also be refreshed when the settings are changed using the "Settings" dialog.

  • All kinds of reverse indexes and function-based bitmap indexes should be handled now correctly

    No longer "unsupported index type" exceptions

  • Optionally disable cell selection wraparound in Grid

    New option in the "Data Grid 1" settings page where you can disable the default wraparound of the cell selection in the Grid.

Changes

  • No longer set focus to "Plan" pane when performing "Explain plan", use "Switch pane" (default: F6) to set focus to it if needed

  • Show execution times that are less than one second in milliseconds

Bugfixes

  • Materialized view log handling (drop) fixed in Object List
     
  • Re-enabled "Allow remember manually changed column width" which was broken due to my misunderstanding

  • Get DBMS_METADATA DDL for MATERIALIZED VIEW LOG fixed

  • Consistent handling of statistics setting in current session if changing the setting in Settings dialog or in GUI via button

  • 9i emulation of DBMS_XPLAN.DISPLAY_CURSOR now also enables the "Refresh" context menu entry in the "Plan" window

  • If "Connection lost" related error is thrown from remote do not close local connection

  • Exception no longer raised when clicking in the row header of an empty result set

  • Changing VALID/INVALID filters in Object List now invalidates all tabs so that changed filter is applied when activated

  • Setting a filter in an Object list tab no longer invalidates all other tabs

  • Opening a non-existing document from the most recently used file list no longer raises an Exception

  • Re-enabled TAB/SHIFT+TAB key in Grid (it was broken probably a long time ago before SQLTools++ came into existence). It moves the cell selection to the right and left respectively

  • The "Find in Files" function should work again now. Thanks to Antonio Mazzei for the hint that a wrong GREP.EXE was packaged with the RC releases so far, therefore SQLTools++ inherited this bug. It should use now a GREP.EXE that works with SQLTools++

  • Documentation bug: 9i unfortunately does not populate the V$SQL_PLAN_STATISTICS_ALL view if statistics_level is set to default value TYPICAL, therefore you don't get the basic plan info (10g does). You only get the view populated if statistics_level is set to ALL. Whereas 10g already mirrors basic plan information from V$SQL_PLAN into V$SQL_PLAN_STATISTICS_ALL in TYPICAL mode

Known issues

  • The original SQLTools SQL execution mode (Enabled by turning off both options "Empty lines delimits statement" and "Whitespace line delimits statement" in Tools->Settings->PlusPlus Settings) does not work correctly. It sends only the current line to the database rather than scanning for the end of the statement.
    Note: This has been addressed in the Development Build available on the right hand side.

  • Filenames after a SPOOL command in a SQL*Plus script are marked as invalid identifiers if exceeding the maximum defined length.
    Note: This has been addressed in the Development Build available on the right hand side.

  • Quoted identifiers (using "<IDENTIFIER>") potentially are not correctly recognized by new "Known objects" hightlighting since the current tokenizer does treat them as "normal" identifiers and therefore breaks them apart in case of any special character encountered.

  • Auto resizing columns by doubleclicking on the header border does not work correctly when the first column is not visible, which means that the grid has been scrolled to the right. It resizes the column to the left by the offset the grid has been scrolled to the right.

  • There seems to be a bug in the 10.2.0.1 Oracle Client that causes all columns after a skipped LOB column (when skipping LOB fetching is enabled in the Options) to be left blank. I have not understood yet the exact root cause but when using a patched or newer client (e.g. 10.2.0.3 or 11.1.0.6) the issue does not show up, so it's somehow related to the Oracle Client version.

The wish list

Here is the ever growing list of features I would like to add, but haven't managed to cope with yet.

  • Nice session browser

    Still TOAD is the only tool that I'm aware of that offers a comprehensive session browser with advanced functionality like automatic grouping of Parallel Slaves etc., but sometimes the session browser in TOAD behaves strangely. So this is something I wish to have: A good session browser built into SQLTools. But it's a tedious task...

  • Enable filter in Object list

    Done

  • In Oracle 9i and above, use Oracle DBMS_METADATA package for DDL extraction

    Done

  • Edit Data feature: Extend existing Grid to enable DML operations (INSERT/UPDATE/DELETE)

  • Online visual match: Highlight matching braces/brackets etc. when moving cursor (more an OpenEditor issue)

    Done

  • Completey fix Auto-Fit in Grid to data, which sometimes does not work for me as intended
    Tip: Adjust the "Max column length" setting in the "Data Grid 1" options. It means the maximum number of chars to be used for calculating the column width.

    Done

  • Multi-connection feature

    Idea is to have support for multiple DB connections at the same time, and you can select from a drop-down list of connections which you want to use as current connection in your SQL worksheet. Currently you need to start multiple instances of SQLTools++ to keep multiple connections open at the same time.
     

  • Threaded query support

    Non-blocking execution of SQL

  • Execution Time in SQL history

  • Automatically save files before SQL execute

    Done

  • Null password on connect should show a separate password entry dialog

    Done

  • Preselect SYSDBA if connect as SYS

  • Run SQL file in external tool (e.g. SQL*Plus)

    Done

  • Use DBA Views optionally if available

  • Get rid of the hardcoded "RULE" hints currently used all over the place in the queries when connected to 10g or later

SQLTools++

SQLTools++ is published under the GNU General Public License (GPL). This means that this tool can be used free of charge under the GPL. The formal terms of the GPL license can be found at http://www.gnu.org/licenses/.

SQLTools++ on Sourceforge.net. Use Sourceforge.net to submit bugs, request features and post messages in forums.

SQLTools++ release version "SQLTools_pp 1.20 RC3"

Previous Releases

Release Date 02/Mar/2008

Download the Windows installer here:
SQLTools_pp_1.20RC3.exe

File size: 1.109.286 bytes
MD5: 94ac311580895ab4dd94bc824986f060
SHA1: 98e654ac1dbf214b95ab631d3a97f0bd2f0a7548
Virus checked on http://www.virustotal.com, no viruses were found

Download the bare binaries without installer (can be used directly from any device like USB stick or similar):
SQLTools_pp_1.20RC3.zip

File size: 1.166.420 bytes
MD5: 3fd6540585e00260859aad2bdfc8182b
SHA1: 65f5af96433dcc7f19af8cc91b300ce958922d7f
Virus checked on http://www.virustotal.com, no viruses were found

Development Build (contains only SQLTools.exe, not a full installation):
SQLTools_DevBuild.zip

File size: 889.422 bytes
MD5: 4e6d7a7010954464b4f4dc897f2e28c4
SHA1: 7d7744427549cde6086304f25173c27071fe3945
Virus checked on http://www.virustotal.com, no viruses were found

The Development Build is released as intermediate version containing the latest enhancements and fixes, but it is not as thoroughly tested as the official release. If you do not have a particular reason you should use the official release. This Development Build in particular fixes the bug that the original "SQLTools" mode (current SQL begins at current line, no search for any blank or whitespace line) is supposed to work again correctly. In addition it fixes a couple of bugs, the detailed description of those can be found on the Sourceforge.net "bug" tracker site searching for "Closed" bugs or by reading the release notes of the "DevBuild" package on Sourceforge.net.

1949675 Doing describe (F12) with lost connection raises exception
1942383 "Use DBMS_METADATA" not saved in Settings dialog
1941453 Opening *.txt files results in "Language 'NONE' not found"
1939328 Length of multibyte character columns incorrectly reported
1939306 Extended Block information is wrong for lines with TABs
1939241 Visual match braces does not work with TAB chars
1938706 Object List using list representation - quick filter applied
1927183 DDL generated for deferrable disabled constraint is wrong
1927173 Table Transformation Helper wrong GRANTS with DBMS_METADATA

The following tracked features have been added:
1914736 Consider "Load DDL" shortcut (Ctrl+F12) in Object List

For further details regarding known issues of the current release please check the changelog on the left hand side.

Please note that the Development Build currently contains only the main executable. In order to use it you need to have the 1.20 RC3 release already installed. You then need to replace the existing "SQLTools.exe" with the "SQLTools.exe" contained in the provided archive.

Installation instructions: If you have already an existing installation of the original SQLTools, I recommend to install SQLTools++ in a separate directory as these versions are not compatible to each other in terms of support files they require. If you have customised your existing installation (e.g. keyboard accelerators) you can try to move/migrate your changes to the new installation, but be aware that new lines have been added to some of the config files, so keep a backup of the original files in case the application does not start anymore after modifying the configuration.

If you intend to update a previous SQLTools++ installation location, the installer recognizes this and offers options to overwrite existing configuration information. It is recommended to do that to get support for all new features added. If you are using the "custom" keyboard configuration, please note that this configuration file is never updated by the installer. You therefore need to do a diff on the newly installed "default" keyboard and your "custom" config file to be able to add the new keyboard shortcuts available. If you do not add them, newly added functions like "Execute script and halt on errors" will not have a keyboard accelerator assigned in the "Custom" Keymap layout configuration (Tools->Settings->Editor->General->Keymap layout).

Download the source tarball here:
sqlt_1.20RC3.tar.gz

Browse the CVS repository here:
http://www.sqltools-plusplus.org:7676/cgi-bin/viewvc.cgi

The corresponding CVS tag for this release is: "sqltpp_1_20RC3_2"

You can download the source tarball also from the CVS repository browser.

Build instructions: You need Visual C++ 2005, Oracle OCI 10g libraries and header files (part of any regular Oracle database or client installation) and the MFC libraries, which means that Visual C++ 2005 Express Edition is not sufficient since it does not contain the MFC libraries and header files. You can download or order a trial version of Visual Studio 2005 from the Microsoft homepage:

http://www.microsoft.com/emea/msdn/visualstudio/getthetrials/default.aspx

The Professional Edition trial version available there is sufficient, you don't need the Team Edition.

The Project file to use is: SQLTools2005.sln or SQLTools2005.vcproj in the 
SQLTools subdirectory

Note that it has not been tested yet with the recently released Microsoft Visual Studio 2008.