[ https://issues.apache.org/jira/browse/DRILL-5224?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15852560#comment-15852560 ]
ASF GitHub Bot commented on DRILL-5224: --------------------------------------- Github user asfgit closed the pull request at: https://github.com/apache/drill/pull/731 > 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 > Labels: ready-to-commit > 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.15#6346)