[
https://issues.apache.org/jira/browse/SQOOP-2349?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15632599#comment-15632599
]
Attila Szabo commented on SQOOP-2349:
-------------------------------------
Hi [~abec],
My proposed change is available online on the review board.
However I'd become concerned about just setting the transaction isolation level
for the metadata queries in the SqlManager, and not setting in in the "data
connectors" (e.g. OracleManager, OracleConnectionFactory, DBInputFormat,
SqlServerDBRecordReader). IMHO it would make sense to set that isolation level
too, but with a different cmd line argument.
What do you think? Could you please share your thoughts?
Thanks,
[~maugli]
> Transaction isolation level for metadata queries should be mutable
> ------------------------------------------------------------------
>
> Key: SQOOP-2349
> URL: https://issues.apache.org/jira/browse/SQOOP-2349
> Project: Sqoop
> Issue Type: Bug
> Affects Versions: 1.4.6
> Reporter: Abraham Elmahrek
> Assignee: Attila Szabo
> Fix For: 1.4.7
>
>
> Databases like PDW have don't accept READ COMMITTED isolation level:
> {code}
> com.microsoft.sqlserver.jdbc.SQLServerException: Setting IsolationLevel to
> ReadCommitted is not supported.
> at
> com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
> at
> com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:246)
> at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:83)
> at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:39)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(SQLServerConnection.java:1441)
> at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.connectionCommand(SQLServerConnection.java:1446)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:1907)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:1893)
> at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1045)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
> at
> com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
> at java.sql.DriverManager.getConnection(DriverManager.java:571)
> at java.sql.DriverManager.getConnection(DriverManager.java:215)
> at
> org.apache.sqoop.manager.SqlManager.makeConnection(SqlManager.java:880)
> at
> org.apache.sqoop.manager.GenericJdbcManager.getConnection(GenericJdbcManager.java:52)
> at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:739)
> at org.apache.sqoop.manager.SqlManager.execute(SqlManager.java:762)
> at
> org.apache.sqoop.manager.SqlManager.getColumnInfoForRawQuery(SqlManager.java:270)
> at
> org.apache.sqoop.manager.SqlManager.getColumnTypesForRawQuery(SqlManager.java:241)
> at
> org.apache.sqoop.manager.SqlManager.getColumnTypesForQuery(SqlManager.java:234)
> at
> org.apache.sqoop.manager.ConnManager.getColumnTypes(ConnManager.java:304)
> at
> org.apache.sqoop.orm.ClassWriter.getColumnTypes(ClassWriter.java:1833)
> at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1645)
> at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
> at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)
> at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
> at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
> at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
> at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
> 15/05/06 10:07:34 ERROR tool.ImportTool: Encountered IOException running
> import job: java.io.IOException: No columns to generate for ClassWriter
> at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1651)
> at org.apache.sqoop.tool.CodeGenTool.generateORM(CodeGenTool.java:96)
> at org.apache.sqoop.tool.ImportTool.importTable(ImportTool.java:478)
> at org.apache.sqoop.tool.ImportTool.run(ImportTool.java:605)
> at org.apache.sqoop.Sqoop.run(Sqoop.java:143)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
> at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:179)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:218)
> at org.apache.sqoop.Sqoop.runTool(Sqoop.java:227)
> at org.apache.sqoop.Sqoop.main(Sqoop.java:236)
> {code}
> Let's make it so that the isolation for metadata queries doesn't set the
> transaction isolation level or make it mutable.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)