Revision: 6407
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6407&view=rev
Author: gerdwagner
Date: 2011-09-18 18:26:18 +0000 (Sun, 18 Sep 2011)
Log Message:
-----------
SQLScripts plugin:
Generating data/insert scripts from inside the Object tree failed for tables that didn't belong to the
default schema when the Plugins preferences where chosen not to qualify table names.
Modified Paths:
--------------
trunk/sql12/doc/src/main/resources/changes.txt
trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/CreateDataScriptCommand.java
trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/ScriptUtil.java
Modified: trunk/sql12/doc/src/main/resources/changes.txt
===================================================================
--- trunk/sql12/doc/src/main/resources/changes.txt 2011-09-17 16:44:12 UTC (rev 6406)
+++ trunk/sql12/doc/src/main/resources/changes.txt 2011-09-18 18:26:18 UTC (rev 6407)
@@ -116,7 +116,11 @@
Bug-fixes:
+SQLScripts plugin:
+ Generating data/insert scripts from inside the Object tree failed for tables that didn't belong to the
+ default schema when the Plugins preferences where chosen not to qualify table names.
+
Patch #3401315 (Derby Object tree trigger). Trigger source was not being displayed because the
SYS.SYSTRIGGERS.REFERENCINGOLD and SYS.SYSTRIGGERS.REFERENCINGNEW columns no longer accept 1 and 0 as values
for comparison. Now an actual boolean data type is used. (Thanks to Jesus Marin for the patch)
Modified: trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/CreateDataScriptCommand.java
===================================================================
--- trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/CreateDataScriptCommand.java 2011-09-17 16:44:12 UTC (rev 6406)
+++ trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/CreateDataScriptCommand.java 2011-09-18 18:26:18 UTC (rev 6407)
@@ -19,31 +19,11 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-import java.awt.event.WindowAdapter;
-import java.sql.Blob;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Timestamp;
-import java.sql.Types;
-import java.util.Calendar;
-
-import javax.swing.SwingUtilities;
-
import net.sourceforge.squirrel_sql.client.session.IObjectTreeAPI;
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.fw.dialects.DialectFactory;
-import net.sourceforge.squirrel_sql.fw.dialects.DialectUtils;
import net.sourceforge.squirrel_sql.fw.dialects.HibernateDialect;
-import net.sourceforge.squirrel_sql.fw.sql.IAbortController;
-import net.sourceforge.squirrel_sql.fw.sql.IDatabaseObjectInfo;
-import net.sourceforge.squirrel_sql.fw.sql.ISQLConnection;
-import net.sourceforge.squirrel_sql.fw.sql.ISQLDatabaseMetaData;
-import net.sourceforge.squirrel_sql.fw.sql.ITableInfo;
-import net.sourceforge.squirrel_sql.fw.sql.JDBCTypeMapper;
-import net.sourceforge.squirrel_sql.fw.sql.SQLUtilities;
-import net.sourceforge.squirrel_sql.fw.sql.TableColumnInfo;
+import net.sourceforge.squirrel_sql.fw.sql.*;
import net.sourceforge.squirrel_sql.fw.util.ICommand;
import net.sourceforge.squirrel_sql.fw.util.log.ILogger;
import net.sourceforge.squirrel_sql.fw.util.log.LoggerController;
@@ -51,6 +31,11 @@
import net.sourceforge.squirrel_sql.plugins.sqlscript.SQLScriptPlugin;
import net.sourceforge.squirrel_sql.plugins.sqlscript.prefs.SQLScriptPreferencesManager;
+import javax.swing.*;
+import java.awt.event.WindowAdapter;
+import java.sql.*;
+import java.util.Calendar;
+
public class CreateDataScriptCommand extends WindowAdapter implements ICommand
{
/** Logger for this class. */
@@ -129,8 +114,6 @@
IDatabaseObjectInfo[] dbObjs = api.getSelectedDatabaseObjects();
- boolean qualifyTableNames = SQLScriptPreferencesManager.getPreferences().isQualifyTableNames();
- boolean useDoubleQuotes = SQLScriptPreferencesManager.getPreferences().isUseDoubleQuotes();
for (int k = 0; k < dbObjs.length; k++)
{
@@ -139,22 +122,8 @@
if (isAborted()) break;
ITableInfo ti = (ITableInfo) dbObjs[k];
String sTable = ScriptUtil.getTableName(ti);
- StringBuilder sql = new StringBuilder();
- sql.append("select * from ");
- sql.append(DialectUtils.formatQualified(ti.getSimpleName(), ti.getSchemaName(), qualifyTableNames, useDoubleQuotes));
-
- // Some databases cannot order by LONG/LOB columns.
- if (!JDBCTypeMapper.isLongType(getFirstColumnType(ti)))
- {
- sql.append(" order by ");
- sql.append(getFirstColumnName(ti));
- sql.append(" asc ");
- }
- if (s_log.isDebugEnabled()) {
- s_log.debug("execute: generating insert statements from data retrieved with SQL = "
- + sql.toString());
- }
- ResultSet srcResult = stmt.executeQuery(sql.toString());
+
+ ResultSet srcResult = executeDataSelectSQL(stmt, ti);
genInserts(srcResult, sTable, sbRows, false);
}
}
@@ -187,7 +156,69 @@
});
showAbortFrame();
}
-
+
+ private ResultSet executeDataSelectSQL(Statement stmt, ITableInfo ti) throws SQLException
+ {
+ StringBuilder sql = genDataSelectSQL(ti, ScriptUtil.getTableName(ti));
+
+ ResultSet srcResult;
+
+ try
+ {
+ srcResult = stmt.executeQuery(sql.toString());
+ }
+ catch (SQLException e)
+ {
+ boolean qualifyTableNames = SQLScriptPreferencesManager.getPreferences().isQualifyTableNames();
+ if(false == qualifyTableNames)
+ {
+ try
+ {
+ sql = genDataSelectSQL(ti, ScriptUtil.getTableName(ti, true, false));
+ srcResult = stmt.executeQuery(sql.toString());
+ }
+ catch (SQLException e1)
+ {
+ boolean useDoubleQuotes = SQLScriptPreferencesManager.getPreferences().isUseDoubleQuotes();
+ if(false == useDoubleQuotes)
+ {
+ sql = genDataSelectSQL(ti, ScriptUtil.getTableName(ti, true, false));
+ srcResult = stmt.executeQuery(sql.toString());
+ }
+ else
+ {
+ throw e;
+ }
+ }
+ }
+ else
+ {
+ throw e;
+ }
+ }
+ return srcResult;
+ }
+
+ private StringBuilder genDataSelectSQL(ITableInfo ti, String tableName) throws SQLException
+ {
+ StringBuilder sql = new StringBuilder();
+ sql.append("select * from ");
+ sql.append(tableName);
+
+ // Some databases cannot order by LONG/LOB columns.
+ if (!JDBCTypeMapper.isLongType(getFirstColumnType(ti)))
+ {
+ sql.append(" order by ");
+ sql.append(getFirstColumnName(ti));
+ sql.append(" asc ");
+ }
+ if (s_log.isDebugEnabled()) {
+ s_log.debug("execute: generating insert statements from data retrieved with SQL = "
+ + sql.toString());
+ }
+ return sql;
+ }
+
protected String getFirstColumnName(ITableInfo ti) throws SQLException {
TableColumnInfo[] infos =
_session.getSQLConnection().getSQLMetaData().getColumnInfo(ti);
Modified: trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/ScriptUtil.java
===================================================================
--- trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/ScriptUtil.java 2011-09-17 16:44:12 UTC (rev 6406)
+++ trunk/sql12/plugins/sqlscript/src/main/java/net/sourceforge/squirrel_sql/plugins/sqlscript/table_script/ScriptUtil.java 2011-09-18 18:26:18 UTC (rev 6407)
@@ -1,14 +1,14 @@
package net.sourceforge.squirrel_sql.plugins.sqlscript.table_script;
-import java.util.Hashtable;
-
import net.sourceforge.squirrel_sql.client.session.ISession;
+import net.sourceforge.squirrel_sql.fw.dialects.DialectUtils;
import net.sourceforge.squirrel_sql.fw.sql.ITableInfo;
-import net.sourceforge.squirrel_sql.fw.dialects.DialectUtils;
import net.sourceforge.squirrel_sql.plugins.sqlscript.prefs.SQLScriptPreferenceBean;
import net.sourceforge.squirrel_sql.plugins.sqlscript.prefs.SQLScriptPreferencesManager;
+import java.util.Hashtable;
+
public class ScriptUtil
{
@@ -119,7 +119,12 @@
*/
public static String getTableName(ITableInfo ti)
{
- return DialectUtils.formatQualified(ti.getSimpleName(), ti.getSchemaName(), prefs.isQualifyTableNames(), prefs.isUseDoubleQuotes());
+ return getTableName(ti, prefs.isQualifyTableNames(), prefs.isUseDoubleQuotes());
}
+ public static String getTableName(ITableInfo ti, boolean qualifyTableNames, boolean useDoubleQuotes)
+ {
+ return DialectUtils.formatQualified(ti.getSimpleName(), ti.getSchemaName(), qualifyTableNames, useDoubleQuotes);
+ }
+
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|