----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/60587/#review186057 -----------------------------------------------------------
nit required. src/java/org/apache/sqoop/orm/Time.java Lines 18 (patched) <https://reviews.apache.org/r/60587/#comment262463> no new line between licence comment and package declaration. src/java/org/apache/sqoop/orm/Time.java Lines 117 (patched) <https://reviews.apache.org/r/60587/#comment262464> toString () -> toString() src/test/org/apache/sqoop/orm/TestTime.java Lines 34 (patched) <https://reviews.apache.org/r/60587/#comment262465> nit: testValueOf1() { -> testValueOf1() { all function in this file has two spaces it should be single space - Sandish Kumar HN On July 3, 2017, 9:20 a.m., Eric Lin wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/60587/ > ----------------------------------------------------------- > > (Updated July 3, 2017, 9:20 a.m.) > > > Review request for Sqoop, Attila Szabo and Szabolcs Vasas. > > > Bugs: SQOOP-3039 > https://issues.apache.org/jira/browse/SQOOP-3039 > > > Repository: sqoop-trunk > > > Description > ------- > > To re-produce: > > Set up MySQL database with following schema: > > {code} > CREATE TABLE `test` ( > `a` time(2) DEFAULT NULL > ) ENGINE=InnoDB DEFAULT CHARSET=latin1 > {code} > > Store the following data in HDFS: > > {code} > 16:56:53.0999 > 16:56:54.1 > 16:56:53.0000 > 16:56:54.1230 > {code} > > run Sqoop export command to copy data from HDFS into MySQL: > > {code} > qoop export --connect jdbc:mysql://<mysql-host>/test --username root > --password password --table test -m 1 --driver com.mysql.jdbc.Driver > --export-dir /tmp/test > {code} > > Command will fail with the following error: > > {code} > java.lang.RuntimeException: Can't parse input data: '16:56:53.0999' > at t5.__loadFromFields(t5.java:223) > at t5.parse(t5.java:166) > at > org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89) > at > org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39) > at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145) > at > org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64) > at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:784) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) > at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:422) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628) > at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) > Caused by: java.lang.NumberFormatException: For input string: "53.0999" > at > java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) > at java.lang.Integer.parseInt(Integer.java:580) > at java.lang.Integer.parseInt(Integer.java:615) > at java.sql.Time.valueOf(Time.java:108) > at t5.__loadFromFields(t5.java:215) > ... 12 more > {code} > > Looks like Sqoop uses java.sql.Time.valueOf function to convert > "16:56:53.0999" to Time object, however, this function only accepts Time in > "hh:mm:ss" format: > > https://docs.oracle.com/javase/7/docs/api/java/sql/Time.html#valueOf(java.lang.String) > > > Diffs > ----- > > src/java/com/cloudera/sqoop/lib/JdbcWritableBridge.java 316547f > src/java/org/apache/sqoop/lib/JdbcWritableBridge.java afde585 > src/java/org/apache/sqoop/manager/ConnManager.java 1811ce0 > src/java/org/apache/sqoop/orm/ClassWriter.java cdb2364 > src/java/org/apache/sqoop/orm/Time.java PRE-CREATION > src/test/com/cloudera/sqoop/TestExport.java 7948dae > src/test/org/apache/sqoop/orm/TestTime.java PRE-CREATION > > > Diff: https://reviews.apache.org/r/60587/diff/2/ > > > Testing > ------- > > Test cases + manual tests > > > Thanks, > > Eric Lin > >