DBCopy Change Log ================= 1.15 ==== - (Feature request #3291501) This plugin now has a command-line interface (via DBCopyCLI). See DBCopy plugin documentation for usage details. 1.14 ==== - Added support for mapping the DISTINCT source column type for copying data from PostgreSQL 1.13 ==== - Only attempt to order the tables being copied if there is more than one table in the copy set. 1.12 ==== - Copy thread will wait for the dialog record progress bar to be updated before continuing to copy records. - Fixed bug which caused cursors to remain open in the source database after the copy operation was complete. 1.11 ==== 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 prevents this time component value from being lost if the destination database can also store a time component in DATE columns. The error message for SQLExceptions now includes the SQL statement that was last executed (including bind variable values if it was a PreparedStatement) 1.1 (12/31/2006) === - Removed reflective code used for backward compatibility which was causing IllegalAccessExceptions when the keyword test was applied to column names. - Fixed bug in copying FK constraints which left cursors open by not properly closing ResultSets when they were no longer needed. - Fixed bug in copying FK constraints where the primary key table name wasn't fully qualified the schema of the destination database. This was most noticeable when copying tables with FKs into a schema which was not the default schema for that session. - Fixed bug where cancelling the copy operation during table data transfer did not also cancel the transfer of table constraints. - Removed needless dependency on Java 5 from the DBCopy plugin. - Added support for IBM Informix Dynamic Server (10.0) and Sun Java System High-Availability Database (HADB). 1584283: (DBCopy plugin - Copying LOBs from Oracle to Oracle fails) If destination column type is Types.OTHER (1111), try to get the type name and map it to a valid java SQL type (such as Types.BLOB or Types.CLOB). This only works when the database column type name as reported by the JDBC driver is a standard type such as BLOB, VARCHAR, CLOB, CHAR, etc... A mapping exception is thrown otherwise. 1584260: (DBCopy plugin - Fix for issue where the same table is found in multiple schemas/catalogs that the user has access to. Now we specify catalog or schema if the driver claims to support them.) - Relocated dialect framework to SQuirreL's fw module so that it can be re-used (namely in the refactoring plugin). This breaks backward compatibility with previous versions of SQuirreL. However, it means SQuirreL can be enhanced to take session dialects into consideration for doing all manner of operations. 1.0 (10/07/2006) === - Ran latest version of findbugs (http://findbugs.sourceforge.net/) and fixed various issues that it reported such as NPEs and the like. 0.25 (08/27/2006) ==== - Previously, when copying from Axion and "Copy Primary Keys" or "Copy Foreign Keys" was selected, the copy operation would fail with SQLException stating the following: "getPrimaryKeys() is not supported" "getImportedKeys() is not supported" Now, when using Axion as the source database, the copy operation will ignore the user's preference for these settings, since it is not possible to honor them with Axion and complete the copy operation. - When selecting tables to copy, the user can now select the "TABLES" folder which will mark all tables contained in that schema for copy. Previously, the user would have to expand the tables folder and select all tables manually. Similarly, the "TABLES" folder has also become a "target" for paste operations. - Added support for TimesTen 6.0 (Note: fetch size for TimesTen is max 128. If the preference is set to larger than this, 128 will be used) - Bugfix: In getting the qualified name of a table (schema.table) when the schema was an empty string, the qualified name would appear to be ".table" - Bugfix: Added CLOB type to the list of types for which clearParameters must be called prior to setting parameters when null and non-null values are used for MySQL driver. - Bugfix: Use the same logic to determine the source column type for "OTHER" type when inserting records into destination, as is used to determine what types to use for creating the table in the destination database. Previously, the "OTHER" type resolution was only being done for table creation and not for record insertion. 0.24 (07/23/2006) ==== - Fixed bug #1468056 (Missing i18n string argument) - No longer use class names of the jdbc driver to decide which dialect to use. Now we use database product name and version. This should be a more accurate method for determining which dialect to use for source and destination sessions, prompting the user less often. 0.23 (04/07/2006) ==== - Added support for MaxDB 7.6 (open-source re-branding of SAPDB) - Fine tuning of the precision mechanism added in the previous release for some drivers which report erroneous sizes and precision of number and char datatypes. 0.22 (03/18/2006) ==== - Added support for DaffodilDB and H2 (www.h2database.com) - For number type fields, previously, the precision was always the maximum allowed by the destination database. A new mechanism was added to allow the source database precision to be used if it doesn't exceed the destination database's maximum precision. Otherwise the previous behavior (maximum precision allowed by the destination database) is used. 0.21 (01/21/2006) ==== - Tested binary data copy using newly developed BinaryGenerator plugin for DBMonster. - Fixed a bug where copying to MySQL when the table exists in a catalog other than the one in the connect URL would result in a "table not found" error message. - Fixed bug #1398199 (Copying large tables from MySQL causes SQuirreL to run out of memory) - Fixed bug #1386606 (Copying tables with BLOB columns to Pointbase fails) Now using ps.setNull instead of ps.setBytes for null values. - Fixed memory leak caused by undisposed progress dialogs. - Added elapsed time counter and time remaining estimate to the progress dialog. - Added independently configurable delay (in millisecond granularity) between copying records and tables. This reduces the load (cpu and io) on both the client and the database server(s). - Better support for BOOLEAN types when the source database supports them and the destination database does not. - Updated DBCopy plugin help screens that are available in SQuirreL via the help menu. 0.20 (12/10/2005) ==== - Added the ability to copy to existing table definitions that differ from the source table definitions with regard to column order (columns are now matched up by name instead of assuming they are in the same order on the destination database as that of the source database). - Added support for the Axion (build M3) Java embedded database. - Added support for the Progress, FrontBase and Ingress RDBM servers. - Added ability to disable copying Primary Keys (Axion build M3 doesn't have the ability to get primary key information). - Used DBMonster (http://dbmonster.kernelpanic.pl/) to generate a test set for DBMonster-supported types. This yielded another round of tweaking the specification of types to use in Hibernate for determining the destination database table definitions. The result is a more precise algorithm for determining what field type and length to use when the destination database table doesn't exist before copying. - Fixed bug #1355029 (Copying BLOBs to MySQL sometimes fails) - Fixed bug #1365782 (null values converted to O) - Fixed bug which caused TIME columns to be copied into MySQL as DATE instead. (The value would appear to be 0000-00-00, regardless of this actual value in the source database) - Fixed bug #1369033 (In Sybase, nullable fields are created as NOT NULL) 0.19 (11/04/2005) ==== - Performance increase due to a reduction in the number of data-type queries on the source and destination databases (Thanks to Dan Dragut) - Fixed table analysis progress monitor dialog so that it goes away when the copy operation is complete. - Examined data types for the other dialects (Firebird, HyperSonic, Pointbase, etc.) currently supported and explicitly set them for the appropriate java type. Tested each type against the corresponding database for usage and compatibility. - Added custom type mappings for McKoi, Derby and Sybase - Fixed bug which caused multiple dialogs to appear when cancelling a copy operation. - Fixed bug that would create a temporary file to store the blob in if the blob column value is null. - Fixed bug 1344224 (When auto-commit is disabled, committing the source session) 0.18 (10/22/2005) ==== - Added table analysis of source tables prior to attempting to create the tables in the destination database. Analysis consists of creating a test table with one column in it for each column of the table. This can be turned off, but it gives a better description of what happened in the event that a column name isn't allowed in the destination database. Additionally, this will be done for all tables in the copy set before making any changes in the destination database. If the source and destination databases are the same, this analysis is skipped. - Updated for SQuirreL plugin interface changes to be compatible with latest SQuirreL (> 2.0 final) This version of the plugin is still compatible with previous versions of SQuirreL (2.0RC1, 2.0Final) as the interface change added new members and did not change any existing members. - Examined data types for the major dialects currently supported and explicitly set them for the appropriate java type. Tested each type against the corresponding database for usage and compatibility. This should hopefully make the default data type mappings used sufficiently robust for compatibility between databases.(See http://dbcopyplugin.sourceforge.net/dbcopydatatypemapping.html for more detail regarding how the plugin maps data types between different databases) - Fixed a bug that resulted in the following error message - "Copy failed: 0". Behind the scenes an ArrayIndexOutOfBoundsException was encountered when getting information about the newly created table in the destination schema, if the case of the table name didn't match. 0.17 (8/26/2005) ==== - Added configuration item for column name keyword checking in destination database. This feature uses the "keywords" reported by the JDBC driver to find column names in the source table copy set that cannot be used as column names in the destination database. However, this is too aggressive in some cases as some databases (like DB2) report keywords that can also be used as column names. So, now this checking can be disabled. The configuration is available in "File" -> "Global Preferences" -> "DBCopy" -> "Column Type Mapping" 0.16 (8/21/2005) ==== - Added custom column type mappings for IBM DB2. (Tested against DB2 PE for Windows) - Added new configuration option to disable auto-detection of destination database.(This causes the Hibernate dialect chooser to always appear when copying to a new database session. Dialect choices are cached for existing sessions). The configuration is available in "File" -> "Global Preferences" -> "DBCopy" -> "Column Type Mapping" - Fixed bug which would cause destination copy sessions to linger in memory even after being closed. - Changed Oracle type mapping for LONGVARCHAR to use CLOB instead of LONG since LONG is deprecated and multiple LONG columns for a single table aren't supported whereas multiple CLOB columns for a single table are. - Massive refactoring to provide a framework for external application integration. (For the most part, this facilitates writing a driver that automates regression testing, but might be useful for other 3rd-party integrations) 0.15 (8/13/2005) ==== - Added support for turning off auto-commit and committing after a configurable number of records. - Added support for turning on/off the copy of foreign keys, table records and index defintions. - Added ability to detect and ignore duplicate index defintions. - Fixed bug which resulted from using the wrong string function to query max length for a column - this is database-dependent and the code was assuming that all databases have a "length" function. 0.14 (8/5/2005) ==== - Added support for caching BLOBs to disk during transfer to prevent the client from running out of memory on large BLOBs. Transfer buffer size is configurable. - Added DB Copy tab to Global Preferences section of SQuirreL to configure preferences for the DB Copy Plugin. - Truncate can now be used for databases that support it, instead of "delete". This can be turned on/off for all databases in the preferences. If enabled it will be attempted, and if not supported, delete will be used instead. - When truncating/deleting records for tables that exist in the destination database, the dialog that prompts for record deletion now has a "Yes to all" button to apply record deletion to all destination tables. - Added support for choosing additional Hibernate dialects if destination database vendor couldn't be determined. (DB2, Derby, FrontBase, Informix, Ingres, Interbase, McKoi and TimesTen) 0.13 (7/30/2005) ==== - Added support for copying index definitions along with the tables that are being copied. - Altered destination table truncation to use "delete from" instead of the less standard "truncate table". Will add support for this back in on some databases in the next release. - Added check for if column is a keyword when copying data from one table to another (In the case where the data is copied without creating the table). - If an SQLException is encountered during record copy, show it's message to the user (instead of simply printing the stack trace). - Fixed source files eol chars. 0.12 (7/13/2005) First Beta Release ==== - Added support for internationalizing the the user dialog messages. - Bug fixes (moved GUI work onto event dispatch thread) - Added support for checking if source database column names are in fact keywords in the destination database. - When records exist in the destination table, the delete dialog now indicates the name of the table when asking the user if it should truncate the table. - Added custom type mappings for MS SQLServer - Added ability to auto-determine when destination database is MS SQLServer. - Tested this version's MS SQLServer dialect against MS SQLServer 2005(CTP) 0.11 (6/30/2005) ==== - Added copying table constraints (Primary Key and Foreign Key). - Added dialog to allow user to select a hibernate dialect for the destination database, if one couldn't be determined automatically. - Asks user to truncate records in destination table, if records already exist. - Fixed packaging to place hibernate and commons-logging jars in subdirectory space of dbcopy plugin. - Supported Hibernate dialects are now: Firebird, Oracle, Sybase, MS SQLServer, MySQL, HyperSonic, Pointbase, PostgreSQL. - Bug fixes. Actually tested this release a bit. 0.10 (6/24/2005) ==== - Initial release.