Sunday, November 16, 2008

SQLTools++ 1.21 RC3 is out

Finally, a new release SQLTools++ 1.21 RC3 is out. It's mainly a stability/bug fix release.

You can download it from the SQLTools++ homepage.

Here's a summary of the changes for SQLTools++ Version 1.21RC3:

The following features tracked on Sourceforge.net have been added:

* 2094823: No connection to ASM instance possible
You can connect now to an ASM instance. Although depending on your current settings you get various error messages the connection is no longer rejected but is successfully opened. The same should apply to RDBMS instances not opened.

* 1992460: Add "Execute script from cursor position" option
Two new options and keyboard shortcuts have been added to the "Script" menu:
- Execute from cursor position (Default shortcut Ctrl+Alt+F5)
- Execute from cursor position (Halt on errors) (Default shortcut Ctrl+Alt+Shift+F5)
These can be used to run a script from the current cursor position and halt on errors, optionally
Note that you need to add the following two lines to your "Custom" keymap ("custom.keymap" located in the "Data" subdirectory) if you're using it because the installer never attempts to modify the "Custom" keymap if updating an existing installation:
Script.ExecuteFromCursor Ctrl+Alt+F5
Script.ExecuteFromCursorHaltOnErrors Ctrl+Alt+Shift+F5

* 1979440: Recognize DROP TYPE/CREATE TYPE operation
The type related SQL commands are now recognized and confirmed with appropriate messages (Type created/dropped)

* 1919413: Add SQLTools++ on sourceforge link to menu/distribution
The installation script now adds a link to the SQLTools++ Sourceforge.net site

1916777: (Optionally) do not populate Object List when connecting
For users that have to connect using a low bandwidth (e.g. WAN) connection two enhancements have been added:
1. If the schema browser is not visible it won't populate any lists initially (which was the case previously)
2. You can disable the "Known object cache" feature in the "PlusPlus" settings which will prevent this in-memory cache from being populated when establishing a connection

* 1914736: Consider "Load DDL" shortcut (Ctrl+F12) in Object List
This feature was already available with the "Development" intermediate build. You can press now the "Load DDL" keyboard shortcut in the "Object List" (Schema Browser). This is the same as performing a double-click or selecting "Load DDL" in the right-mouse button context menu

* 1914185: Allow "Copy Query Columns" for empty result set
You can copy now the query columns even if the result set is empty

The following bugs tracked on Sourceforge.net have been fixed:

* 2270076: Snapshot DDL shows incomplete query for large query texts
The built-in snapshot DDL generation code is quite basic anyway but additionally showed incomplete query text if the length of the query text was longer than 4000 chars. Now this has been extended to 64k which hopefully is sufficient for most complex queries

* 2166142: Known objects are not properly redrawn when settings change
If you change settings and the "Known object cache" is enabled then the cache contents are refreshed every time you confirm the settings changes. This refresh was not properly reflected in the editor (Only when moving the cursor the content was redrawn). This has been fixed

* 2062502: Change "Generic Exception" dialog to point to Sourceforge
The "Generic" exception dialog now points to the SQLTools++ Sourceforge.net site and bug tracker rather than to the rather unmoderated original SQLTools forum

* 2062499: Stack Overflow in Connect.cpp (429) when connection is lost
When a background connection is established (e.g. with statistics or DBMS_XPLAN.DISPLAY_CURSOR enabled) and the connection is lost a nasty "Generic" exception used to show up. This has been fixed and should work now even with these features enabled

* 2032463: Synonyms for remote objects are shown as "INVALID"
Synonyms for remote database objects used to be shown with status "INVALID". This has been fixed

* 2032446: Known objects followed by a dblink - wrong highlighting
If a known object was followed by a dblink the highlighting was incorrect. This has been fixed

* 2017327: Extract Schema DDL doesn't use "Use DBMS_METADATA" setting
The "Extract Schema DDL" didn't use the "Use DBMS_METADATA" setting of the corresponding setup dialog. This has been fixed

* 1991909: Highlighting error in case of comment /* */ followed by *
A minor highlighting error when a comment was immediately followed by an asterisk has been fixed

* 1988773: Incorrect representation of timestamp type in Object Viewer
The TIMESTAMP family related data types were not correctly represented in the Object Viewer window. This has been fixed.

* 1988113: Run in external tool while disconnected
You get now an appropriate message instead of an screwed up external tool call if you're currenly not connected to a database

* 1949675: Doing describe (F12) with lost connection raises exception
Appropriate message shown instead of a "Generic" exception

* 1942383: "Use DBMS_METADATA" not saved in Settings dialog
Handling of this setting is now similar to the other settings, it used to be inconsistent

* 1942045: Editor's backup file error
If a backup file cannot be created the actual file save is no longer aborted and you should an explanation why the backup file could not be created

* 1941453: Opening *.txt files results in "Language 'NONE' not found"
This annoying error has been fixed

* 1939328: Length of multibyte character columns incorrectly reported
If you have multibyte character columns, e.g. NVARCHARs or multibyte database character sets (e.g. UTF8) then the byte size of the column was shown in the Object Viewer instead of the actual character size. This has been fixed

* 1939306: Extended Block information is wrong for lines with TABs
TABs should be treated now correctly for the extended information shown when "Enhanced Visuals" is enabled

* 1939241: Visual match braces does not work with TAB chars
TABs should be treated now correctly for the "match braces" functionality when "Enhanced Visuals" is enabled

* 1938706: Object List using list representation - quick filter applied
The list representation mode was broken when a quick filter has been applied. The columns were resized to a minimum size so that the content was unreadable

* 1928265: Extract Schema DDL: "Type parsing error: invalid header!"
Incomplete type definitions lead to this error message sometimes. The handling of these incomplete types has been changed accordingly so that the message should no longer show up

* 1927183: DDL generated for deferrable disabled constraint is wrong
The keywords for a deferrable disabled constraint used to be in the wrong order. This has been fixed

* 1927173: Table Transformation Helper wrong GRANTS with DBMS_METADATA
When using the "DBMS_METADATA" package to generate the DDL the GRANTS generated were too many and about unrelated tables. This has been fixed.

Wednesday, July 16, 2008

Ongoing development of SQLTools++...

For those out there who might be interested (which I assume are not really that many): I'm currently in the process of fixing all bugs submitted so far and adding some minor features. I'm aiming for releasing a bug fix release 1.21 RC3 when this is done. No clue yet when this will be the case, but I hope it won't take too long.

Major changes will be left for the next major release which is probably going to take a significant time before being released as I'm currently quite busy in my job, so there is not much time left to spend on SQLTools++, unfortunately.

Regards,
Randolf

Wednesday, April 9, 2008

Homepage and Sourceforge.net page updated

I've added a sample screenshot to the SQLTools++ homepage (http://www.sqltools-plusplus.org:7676/) which links to the Sourceforge.net project "Screenshots" page . There you'll find more screenshots showing the look and feel of SQLTools++ if you don't know it yet and are interested in finding out what it is about.

In addition the "Documentation" page on Sourceforge.net (http://sourceforge.net/docman/?group_id=220648) now contains a document that describes the main enhancements of SQLTools++ in comparison to the original SQLTools.

Friday, March 14, 2008

SQLTools++ on Sourceforge.net

I was thinking about offering users the opportunity to provide feedback, submit bugs, ask for help, request new features etc. Therefore I had to decide how to do that. The straightforward solution would have been to add a forum and a bug tracker (e.g. bugzilla) to my already existing SQLTools++ homepage.

But then I thought there are already sites out there that offer these functions and more. So I opted for an Sourceforge.net project... Back to the roots, the original SQLTools is also hosted there, although no longer maintained.

The project request was approved very quickly, so here we are:

http://sourceforge.net/projects/sqlt-pp/

Still the Sourceforge team has not managed yet to upload the existing CVS archive to the sourceforge CVS system but apart from that one already can do a lot of things there:

- Of course download all the available stuff
- Use the "Tracker" feature to submit bugs, request features etc.
- Discuss in forums (Currently "Help" and "Open discussion" are available)

I think this is quite useful and hope the users out there (are there any? :-)) will be able to benefit from it as well.

Best Regards,
Randolf

Saturday, March 1, 2008

SQLTools++ 1.20 RC3 is out

A new release SQLTools++ 1.20 RC3 is out.

You can download it from the SQLTools++ homepage.

Here's a summary of the changes for SQLTools++ Version 1.20RC3:

New features:

- New major feature: Enhanced editor highlighting
* Match braces
* Highlight too long identifiers exceeding threshold length (default 30 chars but can be changed in "PlusPlus" settings)
* 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 ("Enhanced Visuals")
- New feature: Auto resize columns after each fetch (analyses only the newly fetched array of rows)
- New feature: Added external tool placeholder which can be empty, " AS SYSOPER" or " AS SYSDBA" to support
privileged connections in external tools
- New feature: 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)

Improvements:

- Improvement: Reading NCLOBs is now supported, no longer ORA-24806 error message when attempting to fetch them
- Improvement: Double-Click on column header border in Grid autofits column (similar to other windows lists)
- Improvement: Appropriate message when not connected to database and attempting to expand a node in Object Viewer
- Improvement: Use environment variable ORACLE_HOME if set in environment
- Improvement: Use environment variable TNS_ADMIN if set in environment
- Improvement: Support TNS entries having multiple aliases assigned delimited by comma
- Improvement: Support both synonyms SNAPSHOT (LOG) and MATERIALIZED VIEW (LOG)
- Improvement: Do not report ORA-28002 twice if using background connection for statistics or DBMS_XPLAN.DISPLAY_CURSOR
- Improvement: More precise information about various data types in Object Viewer: NUMBER, FLOAT, *LOB
- Improvement: 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
- Improvement: "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
- Improvement: All kinds of reverse indexes and function-based bitmap indexes are handled correctly
- Improvement: Optionally disable cell selection wraparound in Grid

Changes:

- Change: No longer set focus to "Plan" pane when performing "Explain plan", use "Switch pane" (default: F6) to set focus
if needed
- Change: Show execution times that are less than one second as milliseconds

Bugfixes:

- Fix: Materialized view log handling (drop) fixed in Object List
- Fix: Re-enabled "Allow remember manually changed column width" which was broken due to my misunderstanding
- Fix: Get DBMS_METADATA DDL for MATERIALIZED VIEW LOG fixed
- Fix: If unlimited DBMS_OUTPUT size is selected in settings, apply the changed setting to current connection
- Fix: Consistent handling of statistics setting in current session if changing the setting in Settings dialog or in GUI
via button
- Fix: 9i emulation of DBMS_XPLAN.DISPLAY_CURSOR now also enables the "Refresh" context menu entry
- Fix: If "Connection lost" related error is thrown from remote do not close local connection
- Fix: Exception no longer raised when clicking in the row header of an empty result set
- Fix: Changing VALID/INVALID filters in Object List now invalidates all tabs so that changed filter is applied when
activated
- Fix: Setting a filter in an Object list tab no longer invalidates all other tabs
- Fix: Opening a non-existing document from the most recently used file list no longer raises an Exception
- Fix: Re-enabled TAB key in Grid
- Fix: "Find in Files" should work again. Correct "GREP.EXE" is now part of the installation package again
- 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. 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:

- Known Issue: Quoted identifiers (using "") 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

Saturday, December 22, 2007

SQLTools++ 1.10 RC2 is out

Good news, SQLTools++ 1.10 RC2 is out.

You can download it from the SQLTools++ homepage.

Here's a summary of the changes:

SQLTools++ Version 1.10RC2 (22-DEC-2007):

Improvements:
- Tested with Oracle 11g Server and Client, recognizes 11g as server/client version
- 11g session statistics supported
- Filter header bars added to connection dialog and schema browser object list, similar to SQLTools 1.5
- Freshened GUI look, the initial SQLTools++ release used accidentally the "old" Win9x style
- Execute script and halt on errors (new toolbar button)
- Execute script in external tool (new toolbar button)
- Use optionally DBMS_METADATA to generate DDL (can be used from Server version 9i onwards)
- Optionally save all files automatically before executing database operation
- Test connection/Reconnect in case you were disconnected from the database, similar to TOAD functionality (new toolbar button)
- Schema browser object list supports now Snapshots, Snapshot logs and the Recyclebin in 10g onwards
- Index as lookup object supported
- DDL generation support for database and DDL triggers
- Cleanup of Settings dialog: PlusPlus settings are now in a separate page grouped together
- Copy selected entries from schema browser and object viewer separated by newlines using new shortcut Ctrl+Alt+C in addition to the already supported Ctrl+C shortcut
- Handle NULL passwords better by offering a separate dialog to enter the missing password
- DBMS_OUTPUT now allows max. linesize of 32767 beginning with 10g
- Unlimited DBMS_OUTPUT supported in 10g or later
- 10g DBMS_XPLAN.DISPLAY_CURSOR emulation now available for Oracle9i, see "Data\display_cursor_9i.sql"
You may change the contents of the file to meet your needs, or even save the code in a persistent procedure/package and change the file contents to just call this procedure/package.
The file content is re-read each time the DISPLAY_CURSOR functionality is called
- MERGE sql statement now recognized and appropriate feedback provided (no. of rows merged)
- Popup Editor window can now be closed using the ESC key as shortcut
- Handle Oracle error ORA-28002 ("password expires in next days") more gracefully when opening a connection
- Check for update on web site with a single click. Although not yet automated, you will be redirected to a web page using the default browser of your system that shows you if there is a newer version available for download.
- Customizable settings regarding the "whitespace" and "blank" lines act as statement delimiter in the new "PlusPlus" settings page
- Installation cleanup, default settings, files and web links updated

Bugfixes:
- Fixed issue with background session connection (timing issue while establishing the connection)
- Explain plan did not adhere to "whitespace line" setting
- Auto-fit columns is now executed even if the column descriptions stay the same (there was a caching active that compared the current columns of the result set with the previous and in case they were the same no resizing took place. I deactivated that comparison because it annoyed me)
- Object lookup in Object Viewer for similar object names used previous object in case previous object name is superset (OBJECT_NAME1 vs. OBJECT_NAME) of current object name. Now an exact match is performed
- Lookup of partitioned object fails due to unknown object type error message, this has been fixed

Known Issues:
- Believe it or not, but the DBMS_METADATA package sometimes generates invalid and incomplete DDL. For instance generating the indexes of an table having LOB columns by calling DBMS_METADATA.GET_DEPENDENT_DDL attempts to create the LOB indexes explicitly using an incomplete and invalid CREATE INDEX command.
This holds true even for Oracle 11g, nevertheless I doubt that this is something you would dare to call a "feature"... Still I render the option to use DBMS_METADATA as useful.

Wednesday, December 5, 2007

New version 1.10RC2 of SQLTools++ underway

Just a few words on the latest development: I've found some time and motivation again and have already added a lot of new features. I hope that the new version will be out soon (which means within the next couple of weeks), but won't promise anything here.

Here a list of things that have been added/updated resp. currently being worked on:

SQLTools++ Version 1.10RC2

Improvements:
- Tested with Oracle 11g Server and Client, recognizes 11g as server/client version
- 11g session statistics supported
- Filter header bars added to connection dialog and schema browser lists, similar to SQLTools 1.5
- Schema browser supports now Snapshots, Snapshot logs and the Recyclebin in 10g onwards
- Use optionally DBMS_METADATA to extract DDL from database
- Execute a script and halt on errors
- Execute a script or a selected range in an external tool
- Test the connection resp. re-connect in case you've been disconnected from the database, similar to TOAD functionality
- Automatically save your files before a database execution takes place
- Cleanup of Settings dialog: PlusPlus settings are now in a separate page grouped together
- Copy selected rows from schema browser and object viewer separated by newlines using new shortcut Ctrl+Alt+C in addition to the already existing Ctrl+C shortcut
- Handle NULL passwords better by offering a separate dialog to enter the missing password
- DBMS_OUTPUT now allows max. linesize of 32767 beginning with 10g
- Unlimited DBMS_OUTPUT supported on 10g or later
- DBMS_XPLAN.DISPLAY_CURSOR emulation now available for Oracle9i, see "Data\display_cursor_9i.sql"
You may change the contents of the file to meet your needs, or even save the code in a persistent procedure/package and change the file contents to just call this procedure/package.
The file content is re-read each time the DISPLAY_CURSOR functionality is called
- MERGE SQL statement now recognized and appropriate feedback provided (no. of rows merged)
- Popup Editor window can now be closed using the ESC key as shortcut
- Handle Oracle error ORA-28002 ("password expires in next days") more gracefully
- Check for update on web site with a single click. Although not yet automated, you will be redirected to a web page using the default browser of your system that shows you if there is a newer version available for download.
- Installation cleanup, default settings, files and web links updated

Bugfixes:
- Fixed issue with background session connection (timing issue while establishing the connection)
- Explain plan did not adhere to "whitespace line" setting
- Auto-fit columns is now executed even if the column descriptions stay the same (there was a caching active that compared the current columns of the result set with the previous and in case they were the same no resizing took place. I deactivated that comparison because it annoyed me)