[ 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)