[ 
https://issues.apache.org/jira/browse/SQOOP-481?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Cheolsoo Park updated SQOOP-481:
--------------------------------

    Description: 
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.

  was:
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:

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)

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.

    
> Sqoop import with --have-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