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

Jarek Jarcec Cecho commented on SQOOP-1846:
-------------------------------------------

Nice observation [~vybs], the test case where you're getting something else 
that you've put in indeed seems weird and we should rectify that. I've proposed 
to use space as a separator (instead of ISO-8601) because that is what [all the 
tools|https://cwiki.apache.org/confluence/display/SQOOP/Sqoop2+CSV+Intermediate+representation]
 that I've been working with used in their inputs/outputs. Assuming that the 
JODA is "just" an implementation detail, I think that we should not leak that 
fact and hide it by doing similar conversion on the way out (so that we return 
{{'2014-01-01 01:01:01'}} instead of {{'2014-01-01T01:01:01'}}). I'm wondering 
what are other people thoughts?

> Does DateTime have be iso8601 compliant ? JODA requires it to be
> ----------------------------------------------------------------
>
>                 Key: SQOOP-1846
>                 URL: https://issues.apache.org/jira/browse/SQOOP-1846
>             Project: Sqoop
>          Issue Type: Sub-task
>          Components: sqoop2-framework
>            Reporter: Veena Basavaraj
>             Fix For: 1.99.5
>
>         Attachments: SQOOP-1846.patch
>
>
> I saw this test case I partially was responsible for and it does not make any 
> sense to me anymore...
> {code}
> @Test
>   public void testDateTimePrecisionWithCSVTextInObjectArrayOut() {
>     Schema schema = new Schema("test");
>     schema.addColumn(new DateTime("1"));
>     dataFormat.setSchema(schema);
>     dataFormat.setTextData("'2014-10-01 12:00:00.000'");
>     assertEquals("2014-10-01T12:00:00.000-07:00", 
> dataFormat.getObjectData()[0].toString());
>   }
> {code}
> the spec in 
> https://cwiki.apache.org/confluence/display/SQOOP/Sqoop2+CSV+Intermediate+representation
>  does not mention / say that the date time has to be in iso8601 format. but 
> with us using JODA for parsing datetime objects, it becomes imminent that the 
> text representation of date-time has to have iso8601 format, see details here
> https://github.com/JodaOrg/joda-time/issues/11
> FIrst, are we ok with this?
> If so, then the following code replacing space to T in CSVIDF should be 
> removed.
> {code}
>  case DATE_TIME:
>       // A datetime string with a space as date-time separator will not be
>       // parsed expectedly. The expected separator is "T". See also:
>       // https://github.com/JodaOrg/joda-time/issues/11
>       String dateTime = removeQuotes(fieldString).replace(" ", "T");
>   
> {code}
> then the test case will be like this, that makes sense now, because the FROM 
> connector will set data in iso8601 format and it can expect it to be returned 
> bacl in the dateTime format with the timezone that sqoop is prescribing it 
> will support.
> {code}
> @Test
>   public void testDateTimePrecisionWithCSVTextInObjectArrayOut() {
>     Schema schema = new Schema("test");
>     schema.addColumn(new DateTime("1"));
>     dataFormat.setSchema(schema);
>     dataFormat.setTextData("'2014-10-01T12:00:00.000'");
>     assertEquals("2014-10-01T12:00:00.000-07:00", 
> dataFormat.getObjectData()[0].toString());
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to