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

ASF GitHub Bot commented on DRILL-5224:
---------------------------------------

GitHub user arina-ielchiieva opened a pull request:

    https://github.com/apache/drill/pull/731

    DRILL-5224: CTTAS: fix errors connected with system path delimiters (…

    …Windows)
    
    Replaced `java.nio.file.Paths.get()` to `org.apache.hadoop.fs.Path` as the 
latest works the same disregarding the system. Errors related to 
`java.nio.file.Paths.get()` usage are described in Jira DRILL-5224.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/arina-ielchiieva/drill DRILL-5224

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/drill/pull/731.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #731
    
----
commit 87a2d270633eeac7bd78172b6b0935ab4ead344e
Author: Arina Ielchiieva <arina.yelchiy...@gmail.com>
Date:   2017-01-26T18:14:28Z

    DRILL-5224: CTTAS: fix errors connected with system path delimiters 
(Windows)

----


> CTTAS: fix errors connected with system path delimiters (Windows)
> -----------------------------------------------------------------
>
>                 Key: DRILL-5224
>                 URL: https://issues.apache.org/jira/browse/DRILL-5224
>             Project: Apache Drill
>          Issue Type: Bug
>    Affects Versions: 1.10.0
>         Environment: Windows 10
>            Reporter: Arina Ielchiieva
>            Assignee: Arina Ielchiieva
>             Fix For: 1.10.0
>
>
> Problem 1:
> Error occurs when attempting to create temporary table on Windows:
> {noformat}
> 0: jdbc:drill:zk=local> create temporary table t as select * from sys.version;
> Error: SYSTEM ERROR: InvalidPathException: Illegal char <:> at index 4: 
> file:///\tmp\3191db8e-279d-4ced-b0e5-32b3b477edfb
> {noformat}
> Root cause:
> when creating temporary directory we merge file system uri, temporary 
> workspace location and session id into one path using 
> java.nio.file.Paths.get() but this method cannot resolve path when path has 
> different delimiters.
> Fix:
> Use org.apache.hadoop.fs.Path tools to merge path, path string is normalized 
> during creation.
> {noformat}
> new Path(fs.getUri().toString(), new 
> Path(temporaryWorkspace.getDefaultLocation(), sessionId));
> {noformat}
> Problem 2:
> When temporary table is being manually dropped using drop table command, 
> though actual table is dropped, remnant folder is left.
> Root cause:
> Before adding to temporary table to the list of temporary tables, its 
> generated name is concatenated with session id (as parent and child folders). 
> java.nio.file.Paths.get() is used for concatenation but it preserves current 
> system delimiter. When table is being dropped, passed table name is split 
> using org.apache.hadoop.fs.Path.SEPARATOR, since it's assumed that path was 
> created using org.apache.hadoop.fs.Path tools where path separators are 
> normalized to one format disregarding the system.
> Fix:
> Concatenate session id with generated table name using 
> org.apache.hadoop.fs.Path tools.
> {noformat}
> new Path(sessionId, UUID.randomUUID().toString()).toUri().getPath();
> {noformat}



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

Reply via email to