[ 
https://issues.apache.org/jira/browse/SQOOP-481?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13267058#comment-13267058
 ] 

[email protected] commented on SQOOP-481:
-----------------------------------------------------


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/4974/
-----------------------------------------------------------

Review request for Sqoop, Arvind Prabhakar and Jarek Cecho.


Summary
-------

The changes include:

1) Introduce a new class SqlTypeMap (subclass of HashMap) that validates values 
inside the get() and put() methods. This guarantees that the values in the map 
are always valid (i.e. not null) so that a NPE during auto unboxing can be 
prevented.

2) Replace HashMap<String, Integer> with SqlTypeMap<String, Integer> in code.


This addresses bug SQOOP-481.
    https://issues.apache.org/jira/browse/SQOOP-481


Diffs
-----

  /src/test/com/cloudera/sqoop/hive/TestTableDefWriter.java 1333183 
  /src/java/org/apache/sqoop/manager/SqlManager.java 1333183 
  /src/java/org/apache/sqoop/util/SqlTypeMap.java PRE-CREATION 

Diff: https://reviews.apache.org/r/4974/diff


Testing
-------

Ran ant test, ant test -Dthirdparty=true, and ant checkstyle.


Thanks,

Cheolsoo


                
> Sqoop import with --hive-import using wrong column names in --columns throws 
> a NPE
> ----------------------------------------------------------------------------------
>
>                 Key: SQOOP-481
>                 URL: https://issues.apache.org/jira/browse/SQOOP-481
>             Project: Sqoop
>          Issue Type: Bug
>            Reporter: Cheolsoo Park
>            Assignee: Cheolsoo Park
>
> To reproduce the error, 
> 1) Create a table "foo" with a column name "I" on Oracle DB
> 2) Run sqoop import --connect jdbc:oracle:thin:@//localhost/xe --username 
> **** --password **** --verbose --table foo --split-by i --columns i 
> --hive-import
> This generates the following call stack:
> {code}
> 12/05/01 16:12:00 ERROR sqoop.Sqoop: Got exception running Sqoop: 
> java.lang.NullPointerException
> java.lang.NullPointerException
>       at 
> com.cloudera.sqoop.hive.TableDefWriter.getCreateTableStmt(TableDefWriter.java:162)
>       at com.cloudera.sqoop.hive.HiveImport.importTable(HiveImport.java:195)
>       at com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:394)
>       at com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:455)
>       at com.cloudera.sqoop.Sqoop.run(Sqoop.java:146)
>       at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
>       at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:182)
>       at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:221)
>       at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:230)
>       at com.cloudera.sqoop.Sqoop.main(Sqoop.java:239)
> {code}
> The reason is simple. In the following lines of code:
> {code}
> Integer colType = columnTypes.get(col);
> ...
> tring hiveColType = connManager.toHiveType(colType);
> {code}
> colType is null because column "i" does not exist in the table "foo" but "I" 
> exists. Now toHiveType(int colType) tries to autocast a null to a primitive 
> int, resulting a NPE.
> It would be better if more informative message is provided rather than a 
> random NPE.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to