olga
Mon, 12 May 2008 11:00:50 -0700
Author: olga Date: Mon May 12 11:00:29 2008 New Revision: 655582 URL: http://svn.apache.org/viewvc?rev=655582&view=rev Log: PIG-237: validation of output dir Modified: incubator/pig/trunk/CHANGES.txt incubator/pig/trunk/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt Modified: incubator/pig/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/incubator/pig/trunk/CHANGES.txt?rev=655582&r1=655581&r2=655582&view=diff ============================================================================== --- incubator/pig/trunk/CHANGES.txt (original) +++ incubator/pig/trunk/CHANGES.txt Mon May 12 11:00:29 2008 @@ -291,3 +291,5 @@ (acmurthy via olgan) PIG-232: let valid cache specifications through (acmurthy via olgan) + + PIG-237: validation of the output directory (pi_song via olgan) Modified: incubator/pig/trunk/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt URL: http://svn.apache.org/viewvc/incubator/pig/trunk/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt?rev=655582&r1=655581&r2=655582&view=diff ============================================================================== --- incubator/pig/trunk/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt (original) +++ incubator/pig/trunk/src/org/apache/pig/impl/logicalLayer/parser/QueryParser.jjt Mon May 12 11:00:29 2008 @@ -46,6 +46,7 @@ import org.apache.pig.impl.logicalLayer.LogicalPlan; import org.apache.pig.impl.streaming.StreamingCommand; import org.apache.pig.impl.streaming.StreamingCommand.HandleSpec; +import org.apache.pig.backend.datastorage.* ; public class QueryParser { private PigContext pigContext; @@ -121,8 +122,22 @@ static int undollar(String s) { return Integer.parseInt(s.substring(1, s.length())); } - - + + /**************This is already a part of type branch. Don't merge it back ***********/ + private boolean checkFileExists(String filename) throws IOException { + if (pigContext.getExecType() == ExecType.LOCAL) { + ElementDescriptor elem = pigContext.getLfs().asElement(filename) ; + return elem.exists() ; + } + else if (pigContext.getExecType() == ExecType.MAPREDUCE) { + // This does actual file check + glob check + return FileLocalizer.fileExists(filename, pigContext) ; + } + else { // if ExecType is something else) + throw new RuntimeException("Undefined state in " + this.getClass()) ; + } + } + /************************************************************************************/ String massageFilename(String filename, PigContext pigContext) throws IOException, ParseException { @@ -1534,6 +1549,13 @@ lo = new LOStore(opTable, scope, getNextId(), readFrom.getRoot(), new FileSpec(jobOutputFile, functionSpec), false); + + /**************This is already a part of type branch. Don't merge it back ***********/ + if (checkFileExists(jobOutputFile)) { + throw new ParseException(jobOutputFile + " already exists. Cannot overwrite.") ; + } + /************************************************************************************/ + pigContext.setJobOutputFile(jobOutputFile); return lo;