diff --git ql/src/java/org/apache/hadoop/hive/ql/Context.java ql/src/java/org/apache/hadoop/hive/ql/Context.java index 7b861ed..0b31c42 100644 --- ql/src/java/org/apache/hadoop/hive/ql/Context.java +++ ql/src/java/org/apache/hadoop/hive/ql/Context.java @@ -359,9 +359,9 @@ public String getLocalTmpFileURI() { * external URI to which the tmp data has to be eventually moved * @return next available tmp path on the file system corresponding extURI */ - public String getExternalTmpFileURI(URI extURI) { - return getExternalScratchDir(extURI) + Path.SEPARATOR + EXT_PREFIX + - nextPathId(); + public Path getExternalTmpPath(URI extURI) { + return new Path(getExternalScratchDir(extURI), EXT_PREFIX + + nextPathId()); } /** diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java index 328c14b..9e4f1c7 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java @@ -1343,7 +1343,7 @@ private int archive(Hive db, AlterTableSimpleDesc simpleDesc, // First create the archive in a tmp dir so that if the job fails, the // bad files don't pollute the filesystem Path tmpPath = new Path(driverContext.getCtx() - .getExternalTmpFileURI(originalDir.toUri()), "partlevel"); + .getExternalTmpPath(originalDir.toUri()), "partlevel"); console.printInfo("Creating " + archiveName + " for " + originalDir.toString()); @@ -1538,9 +1538,7 @@ private int unarchive(Hive db, AlterTableSimpleDesc simpleDesc) throw new HiveException("Haven't found any archive where it should be"); } - Path tmpPath = new Path(driverContext - .getCtx() - .getExternalTmpFileURI(originalDir.toUri())); + Path tmpPath = driverContext.getCtx().getExternalTmpPath(originalDir.toUri()); try { fs = tmpPath.getFileSystem(conf); @@ -1548,11 +1546,6 @@ private int unarchive(Hive db, AlterTableSimpleDesc simpleDesc) throw new HiveException(e); } - // Some sanity checks - if (originalDir == null) { - throw new HiveException("Missing archive data in the partition"); - } - // Clarification of terms: // - The originalDir directory represents the original directory of the // partitions' files. They now contain an archived version of those files diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java index 8e0e9b7..a314ce7 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java @@ -253,13 +253,13 @@ private void initializeSpecPath() { // The movetask that follows subQ1 and subQ2 tasks still moves the directory // 'Parent' if ((!conf.isLinkedFileSink()) || (dpCtx == null)) { - specPath = new Path(conf.getDirName()); + specPath = conf.getDirName(); childSpecPathDynLinkedPartitions = null; return; } - specPath = new Path(conf.getParentDir()); - childSpecPathDynLinkedPartitions = Utilities.getFileNameFromDirName(conf.getDirName()); + specPath = conf.getParentDir(); + childSpecPathDynLinkedPartitions = conf.getDirName().getName(); } @Override @@ -816,10 +816,10 @@ public void jobCloseOp(Configuration hconf, boolean success) throws HiveException { try { if ((conf != null) && isNativeTable) { - String specPath = conf.getDirName(); + String specPath = conf.getDirName().toString(); DynamicPartitionCtx dpCtx = conf.getDynPartCtx(); if (conf.isLinkedFileSink() && (dpCtx != null)) { - specPath = conf.getParentDir(); + specPath = conf.getParentDir().toString(); } Utilities.mvFileToFinalPath(specPath, hconf, success, LOG, dpCtx, conf, reporter); diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java index 7dc3d59..7de6445 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java @@ -533,6 +533,15 @@ protected Expression instantiate(Object oldInstance, Encoder out) { } } + public static class PathDelegate extends PersistenceDelegate { + @Override + protected Expression instantiate(Object oldInstance, Encoder out) { + Path p = (Path)oldInstance; + Object[] args = {p.toString()}; + return new Expression(p, p.getClass(), "new", args); + } + } + public static void setMapRedWork(Configuration conf, MapredWork w, String hiveScratchDir) { setMapWork(conf, w.getMapWork(), hiveScratchDir, true); if (w.getReduceWork() != null) { @@ -828,6 +837,7 @@ public void exceptionThrown(Exception e) { e.setPersistenceDelegate(org.datanucleus.store.types.backed.Map.class, new MapDelegate()); e.setPersistenceDelegate(org.datanucleus.store.types.backed.List.class, new ListDelegate()); e.setPersistenceDelegate(CommonToken.class, new CommonTokenDelegate()); + e.setPersistenceDelegate(Path.class, new PathDelegate()); e.writeObject(plan); e.close(); @@ -2263,7 +2273,7 @@ private static void getMRTasks(List> tasks, List topOp, FileSinkDesc fsDesc) { ArrayList aliases = new ArrayList(); - String inputDir = fsDesc.getFinalDirName(); + String inputDir = fsDesc.getFinalDirName().toString(); TableDesc tblDesc = fsDesc.getTableInfo(); aliases.add(inputDir); // dummy alias: just use the input path @@ -1471,7 +1471,7 @@ private static MapWork createMRWorkForMergingFiles (HiveConf conf, public static MapWork createRCFileMergeTask(FileSinkDesc fsInputDesc, Path finalName, boolean hasDynamicPartitions) throws SemanticException { - String inputDir = fsInputDesc.getFinalDirName(); + Path inputDir = fsInputDesc.getFinalDirName(); TableDesc tblDesc = fsInputDesc.getTableInfo(); if (tblDesc.getInputFileFormatClass().equals(RCFileInputFormat.class)) { @@ -1479,22 +1479,22 @@ public static MapWork createRCFileMergeTask(FileSinkDesc fsInputDesc, ArrayList inputDirstr = new ArrayList(1); if (!hasDynamicPartitions && !GenMapRedUtils.isSkewedStoredAsDirs(fsInputDesc)) { - inputDirs.add(new Path(inputDir)); - inputDirstr.add(inputDir); + inputDirs.add(inputDir); + inputDirstr.add(inputDir.toString()); } MergeWork work = new MergeWork(inputDirs, finalName, hasDynamicPartitions, fsInputDesc.getDynPartCtx()); LinkedHashMap> pathToAliases = new LinkedHashMap>(); - pathToAliases.put(inputDir, (ArrayList) inputDirstr.clone()); + pathToAliases.put(inputDir.toString(), (ArrayList) inputDirstr.clone()); work.setMapperCannotSpanPartns(true); work.setPathToAliases(pathToAliases); work.setAliasToWork( new LinkedHashMap>()); if (hasDynamicPartitions || GenMapRedUtils.isSkewedStoredAsDirs(fsInputDesc)) { - work.getPathToPartitionInfo().put(inputDir, + work.getPathToPartitionInfo().put(inputDir.toString(), new PartitionDesc(tblDesc, null)); } work.setListBucketingCtx(fsInputDesc.getLbCtx()); @@ -1591,7 +1591,7 @@ public static boolean isSkewedStoredAsDirs(FileSinkDesc fsInputDesc) { } if ((srcDir != null) - && (srcDir.equals(new Path(fsOp.getConf().getFinalDirName())))) { + && (srcDir.equals(fsOp.getConf().getFinalDirName()))) { return mvTsk; } } @@ -1672,20 +1672,19 @@ public static Path createMoveTask(Task currTask, boolean Path dest = null; if (chDir) { - dest = new Path(fsOp.getConf().getFinalDirName()); + dest = fsOp.getConf().getFinalDirName(); // generate the temporary file // it must be on the same file system as the current destination Context baseCtx = parseCtx.getContext(); - String tmpDir = baseCtx.getExternalTmpFileURI(dest.toUri()); + Path tmpDir = baseCtx.getExternalTmpPath(dest.toUri()); FileSinkDesc fileSinkDesc = fsOp.getConf(); // Change all the linked file sink descriptors if (fileSinkDesc.isLinkedFileSink()) { for (FileSinkDesc fsConf:fileSinkDesc.getLinkedFileSinkDesc()) { - String fileName = Utilities.getFileNameFromDirName(fsConf.getDirName()); fsConf.setParentDir(tmpDir); - fsConf.setDirName(tmpDir + Path.SEPARATOR + fileName); + fsConf.setDirName(new Path(tmpDir, fsConf.getDirName().getName())); } } else { fileSinkDesc.setDirName(tmpDir); diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchAggregation.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchAggregation.java index 476af4b..084f9f8 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchAggregation.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/SimpleFetchAggregation.java @@ -24,6 +24,7 @@ import java.util.Map; import java.util.Stack; +import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.ql.exec.FileSinkOperator; import org.apache.hadoop.hive.ql.exec.GroupByOperator; import org.apache.hadoop.hive.ql.exec.Operator; @@ -94,7 +95,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, } GroupByOperator pGBY = (GroupByOperator) stack.get(stack.size() - 5); - String fileName = FS.getConf().getFinalDirName(); + Path fileName = FS.getConf().getFinalDirName(); TableDesc tsDesc = createIntermediateFS(pGBY, fileName); for (AggregationDesc aggregation : cGBY.getConf().getAggregators()) { @@ -112,7 +113,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, return null; } - private TableDesc createIntermediateFS(Operator parent, String fileName) { + private TableDesc createIntermediateFS(Operator parent, Path fileName) { TableDesc tsDesc = PlanUtils.getIntermediateFileTableDesc(PlanUtils .getFieldSchemasFromRowSchema(parent.getSchema(), "temporarycol")); diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/BucketingSortingOpProcFactory.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/BucketingSortingOpProcFactory.java index e0f128b..eac0edd 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/BucketingSortingOpProcFactory.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/BucketingSortingOpProcFactory.java @@ -462,7 +462,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // Set the inferred bucket columns for the file this FileSink produces if (bucketCols != null) { List newBucketCols = getNewBucketCols(bucketCols, colInfos); - bctx.getBucketedColsByDirectory().put(fop.getConf().getDirName(), newBucketCols); + bctx.getBucketedColsByDirectory().put(fop.getConf().getDirName().toString(), newBucketCols); bctx.setBucketedCols(fop, newBucketCols); } @@ -471,7 +471,7 @@ public Object process(Node nd, Stack stack, NodeProcessorCtx procCtx, // Set the inferred sort columns for the file this FileSink produces if (sortCols != null) { List newSortCols = getNewSortCols(sortCols, colInfos); - bctx.getSortedColsByDirectory().put(fop.getConf().getDirName(), newSortCols); + bctx.getSortedColsByDirectory().put(fop.getConf().getDirName().toString(), newSortCols); bctx.setSortedCols(fop, newSortCols); } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java index 0820743..efa9768 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/CommonJoinTaskDispatcher.java @@ -246,7 +246,7 @@ private void mergeMapJoinTaskIntoItsChildMapRedTask(MapRedTask mapJoinTask, Conf } // The mapJoinTaskFileSinkOperator writes to a different directory - String childMRPath = mapJoinTaskFileSinkOperator.getConf().getDirName(); + String childMRPath = mapJoinTaskFileSinkOperator.getConf().getDirName().toString(); List childMRAliases = childMapWork.getPathToAliases().get(childMRPath); if (childMRAliases == null || childMRAliases.size() != 1) { return; diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java index da13abf..a985c4f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcFactory.java @@ -212,7 +212,7 @@ private void pushOperatorsAboveUnion(UnionOperator union, // for each sub-query. Also, these different filesinks need to be linked to each other FileSinkOperator fileSinkOp = (FileSinkOperator)stack.get(pos); // For file sink operator, change the directory name - String parentDirName = fileSinkOp.getConf().getDirName(); + Path parentDirName = fileSinkOp.getConf().getDirName(); // Clone the fileSinkDesc of the final fileSink and create similar fileSinks at // each parent @@ -220,9 +220,7 @@ private void pushOperatorsAboveUnion(UnionOperator union, for (Operator parent : parents) { FileSinkDesc fileSinkDesc = (FileSinkDesc) fileSinkOp.getConf().clone(); - - String dirName = parentDirName + Path.SEPARATOR + parent.getIdentifier() ; - fileSinkDesc.setDirName(dirName); + fileSinkDesc.setDirName(new Path(parentDirName, parent.getIdentifier())); fileSinkDesc.setLinkedFileSink(true); fileSinkDesc.setParentDir(parentDirName); parent.setChildOperators(null); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java index c836612..713bd54 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java @@ -840,9 +840,9 @@ private void analyzeTruncateTable(ASTNode ast) throws SemanticException { TableDesc tblDesc = Utilities.getTableDesc(table); // Write the output to temporary directory and move it to the final location at the end // so the operation is atomic. - String queryTmpdir = ctx.getExternalTmpFileURI(newTblPartLoc.toUri()); - truncateTblDesc.setOutputDir(new Path(queryTmpdir)); - LoadTableDesc ltd = new LoadTableDesc(new Path(queryTmpdir), tblDesc, + Path queryTmpdir = ctx.getExternalTmpPath(newTblPartLoc.toUri()); + truncateTblDesc.setOutputDir(queryTmpdir); + LoadTableDesc ltd = new LoadTableDesc(queryTmpdir, tblDesc, partSpec == null ? new HashMap() : partSpec); ltd.setLbCtx(lbCtx); Task moveTsk = TaskFactory.get(new MoveWork(null, null, ltd, null, false), @@ -1455,9 +1455,9 @@ private void analyzeAlterTablePartMergeFiles(ASTNode tablePartAST, ASTNode ast, ddlWork.setNeedLock(true); Task mergeTask = TaskFactory.get(ddlWork, conf); TableDesc tblDesc = Utilities.getTableDesc(tblObj); - String queryTmpdir = ctx.getExternalTmpFileURI(newTblPartLoc.toUri()); - mergeDesc.setOutputDir(new Path(queryTmpdir)); - LoadTableDesc ltd = new LoadTableDesc(new Path(queryTmpdir), tblDesc, + Path queryTmpdir = ctx.getExternalTmpPath(newTblPartLoc.toUri()); + mergeDesc.setOutputDir(queryTmpdir); + LoadTableDesc ltd = new LoadTableDesc(queryTmpdir, tblDesc, partSpec == null ? new HashMap() : partSpec); ltd.setLbCtx(lbCtx); Task moveTsk = TaskFactory.get(new MoveWork(null, null, ltd, null, false), diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java index 9914b1d..1ab5a60 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/ImportSemanticAnalyzer.java @@ -281,7 +281,7 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { private Task loadTable(URI fromURI, Table table) { Path dataPath = new Path(fromURI.toString(), "data"); - Path tmpPath = new Path(ctx.getExternalTmpFileURI(fromURI)); + Path tmpPath = ctx.getExternalTmpPath(fromURI); Task copyTask = TaskFactory.get(new CopyWork(dataPath, tmpPath, false), conf); LoadTableDesc loadTableWork = new LoadTableDesc(tmpPath, @@ -325,7 +325,7 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { LOG.debug("adding dependent CopyWork/AddPart/MoveWork for partition " + partSpecToString(addPartitionDesc.getPartSpec()) + " with source location: " + srcLocation); - Path tmpPath = new Path(ctx.getExternalTmpFileURI(fromURI)); + Path tmpPath = ctx.getExternalTmpPath(fromURI); Task copyTask = TaskFactory.get(new CopyWork(new Path(srcLocation), tmpPath, false), conf); Task addPartTask = TaskFactory.get(new DDLWork(getInputs(), diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java index 344bb42..5663fca 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/LoadSemanticAnalyzer.java @@ -226,7 +226,7 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { // might seem redundant in the case // that the hive warehouse is also located in the local file system - but // that's just a test case. - String copyURIStr = ctx.getExternalTmpFileURI(toURI); + String copyURIStr = ctx.getExternalTmpPath(toURI).toString(); URI copyURI = URI.create(copyURIStr); rTask = TaskFactory.get(new CopyWork(new Path(fromURI), new Path(copyURI)), conf); fromURI = copyURI; @@ -234,7 +234,6 @@ public void analyzeInternal(ASTNode ast) throws SemanticException { // create final load/move work - String loadTmpPath = ctx.getExternalTmpFileURI(toURI); Map partSpec = ts.getPartSpec(); if (partSpec == null) { partSpec = new LinkedHashMap(); diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 848e0ab..47fdfc6 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -1263,8 +1263,8 @@ public void getMetaData(QB qb, ReadEntity parentInput) throws SemanticException throw new SemanticException(e); } try { - fname = ctx.getExternalTmpFileURI( - FileUtils.makeQualified(location, conf).toUri()); + fname = ctx.getExternalTmpPath( + FileUtils.makeQualified(location, conf).toUri()).toString(); } catch (Exception e) { throw new SemanticException(generateErrorMessage(ast, "Error creating temporary folder on: " + location.toString()), e); @@ -5264,7 +5264,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) Table dest_tab = null; // destination table if any Partition dest_part = null;// destination partition if any - String queryTmpdir = null; // the intermediate destination directory + Path queryTmpdir = null; // the intermediate destination directory Path dest_path = null; // the final destination directory TableDesc table_desc = null; int currentTableId = 0; @@ -5330,9 +5330,9 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) boolean isNonNativeTable = dest_tab.isNonNative(); if (isNonNativeTable) { - queryTmpdir = dest_path.toUri().getPath(); + queryTmpdir = dest_path; } else { - queryTmpdir = ctx.getExternalTmpFileURI(dest_path.toUri()); + queryTmpdir = ctx.getExternalTmpPath(dest_path.toUri()); } if (dpCtx != null) { // set the root of the temporay path where dynamic partition columns will populate @@ -5355,7 +5355,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) // Create the work for moving the table // NOTE: specify Dynamic partitions in dest_tab for WriteEntity if (!isNonNativeTable) { - ltd = new LoadTableDesc(new Path(queryTmpdir),table_desc, dpCtx); + ltd = new LoadTableDesc(queryTmpdir,table_desc, dpCtx); ltd.setReplace(!qb.getParseInfo().isInsertIntoTable(dest_tab.getDbName(), dest_tab.getTableName())); ltd.setLbCtx(lbCtx); @@ -5425,7 +5425,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) dest_path = new Path(tabPath.toUri().getScheme(), tabPath.toUri() .getAuthority(), partPath.toUri().getPath()); - queryTmpdir = ctx.getExternalTmpFileURI(dest_path.toUri()); + queryTmpdir = ctx.getExternalTmpPath(dest_path.toUri()); table_desc = Utilities.getTableDesc(dest_tab); // Add sorting/bucketing if needed @@ -5438,7 +5438,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) lbCtx = constructListBucketingCtx(dest_part.getSkewedColNames(), dest_part.getSkewedColValues(), dest_part.getSkewedColValueLocationMaps(), dest_part.isStoredAsSubDirectories(), conf); - ltd = new LoadTableDesc(new Path(queryTmpdir), table_desc, dest_part.getSpec()); + ltd = new LoadTableDesc(queryTmpdir, table_desc, dest_part.getSpec()); ltd.setReplace(!qb.getParseInfo().isInsertIntoTable(dest_tab.getDbName(), dest_tab.getTableName())); ltd.setLbCtx(lbCtx); @@ -5473,14 +5473,14 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) if (isLocal) { // for local directory - we always write to map-red intermediate // store and then copy to local fs - queryTmpdir = ctx.getMRTmpFileURI(); + queryTmpdir = new Path(ctx.getMRTmpFileURI()); } else { // otherwise write to the file system implied by the directory // no copy is required. we may want to revisit this policy in future try { Path qPath = FileUtils.makeQualified(dest_path, conf); - queryTmpdir = ctx.getExternalTmpFileURI(qPath.toUri()); + queryTmpdir = ctx.getExternalTmpPath(qPath.toUri()); } catch (Exception e) { throw new SemanticException("Error creating temporary folder on: " + dest_path, e); @@ -5558,7 +5558,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) } boolean isDfsDir = (dest_type.intValue() == QBMetaData.DEST_DFS_FILE); - loadFileWork.add(new LoadFileDesc(tblDesc, new Path(queryTmpdir), dest_path, isDfsDir, cols, + loadFileWork.add(new LoadFileDesc(tblDesc, queryTmpdir, dest_path, isDfsDir, cols, colTypes)); if (tblDesc == null) { @@ -5638,7 +5638,7 @@ private Operator genFileSinkPlan(String dest, QB qb, Operator input) // the same as directory name. The directory name // can be changed in the optimizer but the key should not be changed // it should be the same as the MoveWork's sourceDir. - fileSinkDesc.setStatsAggPrefix(fileSinkDesc.getDirName()); + fileSinkDesc.setStatsAggPrefix(fileSinkDesc.getDirName().toString()); if (dest_part != null) { try { diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicPartitionCtx.java ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicPartitionCtx.java index 29cfe9d..24db7d0 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicPartitionCtx.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/DynamicPartitionCtx.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map; +import org.apache.hadoop.fs.Path; import org.apache.hadoop.hive.metastore.Warehouse; import org.apache.hadoop.hive.ql.exec.ColumnInfo; import org.apache.hadoop.hive.ql.metadata.Table; @@ -39,7 +40,7 @@ private int numDPCols; // number of dynamic partition columns private int numSPCols; // number of static partition columns private String spPath; // path name corresponding to SP columns - private String rootPath; // the root path DP columns paths start from + private Path rootPath; // the root path DP columns paths start from private int numBuckets; // number of buckets in each partition private Map inputToDPCols; // mapping from input column names to DP columns @@ -128,11 +129,11 @@ public int getNumBuckets() { return this.numBuckets; } - public void setRootPath(String root) { + public void setRootPath(Path root) { this.rootPath = root; } - public String getRootPath() { + public Path getRootPath() { return this.rootPath; } diff --git ql/src/java/org/apache/hadoop/hive/ql/plan/FileSinkDesc.java ql/src/java/org/apache/hadoop/hive/ql/plan/FileSinkDesc.java index 30b2411..747ac85 100644 --- ql/src/java/org/apache/hadoop/hive/ql/plan/FileSinkDesc.java +++ ql/src/java/org/apache/hadoop/hive/ql/plan/FileSinkDesc.java @@ -30,7 +30,7 @@ @Explain(displayName = "File Output Operator") public class FileSinkDesc extends AbstractOperatorDesc { private static final long serialVersionUID = 1L; - private String dirName; + private Path dirName; // normally statsKeyPref will be the same as dirName, but the latter // could be changed in local execution optimization private String statsKeyPref; @@ -69,7 +69,7 @@ // the sub-queries write to sub-directories of a common directory. So, the file sink // descriptors for subq1 and subq2 are linked. private boolean linkedFileSink = false; - private String parentDir; + private Path parentDir; transient private List linkedFileSinkDesc; private boolean statsReliable; @@ -81,7 +81,7 @@ public FileSinkDesc() { } - public FileSinkDesc(final String dirName, final TableDesc tableInfo, + public FileSinkDesc(final Path dirName, final TableDesc tableInfo, final boolean compressed, final int destTableId, final boolean multiFileSpray, final boolean canBeMerged, final int numFiles, final int totalFiles, final ArrayList partitionCols, final DynamicPartitionCtx dpCtx) { @@ -98,7 +98,7 @@ public FileSinkDesc(final String dirName, final TableDesc tableInfo, this.dpCtx = dpCtx; } - public FileSinkDesc(final String dirName, final TableDesc tableInfo, + public FileSinkDesc(final Path dirName, final TableDesc tableInfo, final boolean compressed) { this.dirName = dirName; @@ -132,15 +132,15 @@ public Object clone() throws CloneNotSupportedException { } @Explain(displayName = "directory", normalExplain = false) - public String getDirName() { + public Path getDirName() { return dirName; } - public void setDirName(final String dirName) { + public void setDirName(final Path dirName) { this.dirName = dirName; } - public String getFinalDirName() { + public Path getFinalDirName() { return linkedFileSink ? parentDir : dirName; } @@ -320,11 +320,11 @@ public void setLinkedFileSink(boolean linkedFileSink) { this.linkedFileSink = linkedFileSink; } - public String getParentDir() { + public Path getParentDir() { return parentDir; } - public void setParentDir(String parentDir) { + public void setParentDir(Path parentDir) { this.parentDir = parentDir; } diff --git ql/src/test/org/apache/hadoop/hive/ql/exec/TestExecDriver.java ql/src/test/org/apache/hadoop/hive/ql/exec/TestExecDriver.java index d4ad931..5991aae 100644 --- ql/src/test/org/apache/hadoop/hive/ql/exec/TestExecDriver.java +++ ql/src/test/org/apache/hadoop/hive/ql/exec/TestExecDriver.java @@ -196,8 +196,8 @@ private FilterDesc getTestFilterDesc(String column) { @SuppressWarnings("unchecked") private void populateMapPlan1(Table src) { - Operator op2 = OperatorFactory.get(new FileSinkDesc(tmpdir + File.separator - + "mapplan1.out", Utilities.defaultTd, true)); + Operator op2 = OperatorFactory.get(new FileSinkDesc(new Path(tmpdir + File.separator + + "mapplan1.out"), Utilities.defaultTd, true)); Operator op1 = OperatorFactory.get(getTestFilterDesc("key"), op2); @@ -207,8 +207,8 @@ private void populateMapPlan1(Table src) { @SuppressWarnings("unchecked") private void populateMapPlan2(Table src) { - Operator op3 = OperatorFactory.get(new FileSinkDesc(tmpdir + File.separator - + "mapplan2.out", Utilities.defaultTd, false)); + Operator op3 = OperatorFactory.get(new FileSinkDesc(new Path(tmpdir + File.separator + + "mapplan2.out"), Utilities.defaultTd, false)); Operator op2 = OperatorFactory.get(new ScriptDesc("cat", PlanUtils.getDefaultTableDesc("" + Utilities.tabCode, "key,value"), @@ -243,8 +243,8 @@ private void populateMapRedPlan1(Table src) throws SemanticException { mr.setReduceWork(rWork); // reduce side work - Operator op3 = OperatorFactory.get(new FileSinkDesc(tmpdir + File.separator - + "mapredplan1.out", Utilities.defaultTd, false)); + Operator op3 = OperatorFactory.get(new FileSinkDesc(new Path(tmpdir + File.separator + + "mapredplan1.out"), Utilities.defaultTd, false)); Operator op2 = OperatorFactory.get(new ExtractDesc( getStringColumn(Utilities.ReduceField.VALUE.toString())), op3); @@ -273,8 +273,8 @@ private void populateMapRedPlan2(Table src) throws SemanticException { mr.setReduceWork(rWork); // reduce side work - Operator op4 = OperatorFactory.get(new FileSinkDesc(tmpdir + File.separator - + "mapredplan2.out", Utilities.defaultTd, false)); + Operator op4 = OperatorFactory.get(new FileSinkDesc(new Path(tmpdir + File.separator + + "mapredplan2.out"), Utilities.defaultTd, false)); Operator op3 = OperatorFactory.get(getTestFilterDesc("0"), op4); @@ -317,8 +317,8 @@ private void populateMapRedPlan3(Table src, Table src2) throws SemanticException rWork.getTagToValueDesc().add(op2.getConf().getValueSerializeInfo()); // reduce side work - Operator op4 = OperatorFactory.get(new FileSinkDesc(tmpdir + File.separator - + "mapredplan3.out", Utilities.defaultTd, false)); + Operator op4 = OperatorFactory.get(new FileSinkDesc(new Path(tmpdir + File.separator + + "mapredplan3.out"), Utilities.defaultTd, false)); Operator op5 = OperatorFactory.get(new SelectDesc(Utilities .makeList(new ExprNodeFieldDesc(TypeInfoFactory.stringTypeInfo, @@ -360,8 +360,8 @@ private void populateMapRedPlan4(Table src) throws SemanticException { mr.setReduceWork(rWork); // reduce side work - Operator op3 = OperatorFactory.get(new FileSinkDesc(tmpdir + File.separator - + "mapredplan4.out", Utilities.defaultTd, false)); + Operator op3 = OperatorFactory.get(new FileSinkDesc(new Path(tmpdir + File.separator + + "mapredplan4.out"), Utilities.defaultTd, false)); Operator op2 = OperatorFactory.get(new ExtractDesc( getStringColumn(Utilities.ReduceField.VALUE.toString())), op3); @@ -399,8 +399,8 @@ private void populateMapRedPlan5(Table src) throws SemanticException { rWork.getTagToValueDesc().add(op0.getConf().getValueSerializeInfo()); // reduce side work - Operator op3 = OperatorFactory.get(new FileSinkDesc(tmpdir + File.separator - + "mapredplan5.out", Utilities.defaultTd, false)); + Operator op3 = OperatorFactory.get(new FileSinkDesc(new Path(tmpdir + File.separator + + "mapredplan5.out"), Utilities.defaultTd, false)); Operator op2 = OperatorFactory.get(new ExtractDesc( getStringColumn(Utilities.ReduceField.VALUE.toString())), op3); @@ -440,8 +440,8 @@ private void populateMapRedPlan6(Table src) throws SemanticException { rWork.getTagToValueDesc().add(op1.getConf().getValueSerializeInfo()); // reduce side work - Operator op3 = OperatorFactory.get(new FileSinkDesc(tmpdir + File.separator - + "mapredplan6.out", Utilities.defaultTd, false)); + Operator op3 = OperatorFactory.get(new FileSinkDesc(new Path(tmpdir + File.separator + + "mapredplan6.out"), Utilities.defaultTd, false)); Operator op2 = OperatorFactory.get(getTestFilterDesc("0"), op3); diff --git ql/src/test/results/compiler/plan/case_sensitivity.q.xml ql/src/test/results/compiler/plan/case_sensitivity.q.xml index a5fc472..6c36c1b 100644 --- ql/src/test/results/compiler/plan/case_sensitivity.q.xml +++ ql/src/test/results/compiler/plan/case_sensitivity.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -656,7 +658,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/cast1.q.xml ql/src/test/results/compiler/plan/cast1.q.xml index 03ad812..42533b9 100644 --- ql/src/test/results/compiler/plan/cast1.q.xml +++ ql/src/test/results/compiler/plan/cast1.q.xml @@ -164,7 +164,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/groupby1.q.xml ql/src/test/results/compiler/plan/groupby1.q.xml index 9b01919..8d7c821 100755 --- ql/src/test/results/compiler/plan/groupby1.q.xml +++ ql/src/test/results/compiler/plan/groupby1.q.xml @@ -1135,7 +1135,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/groupby2.q.xml ql/src/test/results/compiler/plan/groupby2.q.xml index 905f511..0092870 100755 --- ql/src/test/results/compiler/plan/groupby2.q.xml +++ ql/src/test/results/compiler/plan/groupby2.q.xml @@ -1254,7 +1254,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/groupby3.q.xml ql/src/test/results/compiler/plan/groupby3.q.xml index fe44c46..514e453 100644 --- ql/src/test/results/compiler/plan/groupby3.q.xml +++ ql/src/test/results/compiler/plan/groupby3.q.xml @@ -1469,7 +1469,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/groupby4.q.xml ql/src/test/results/compiler/plan/groupby4.q.xml index d2ef044..8018397 100644 --- ql/src/test/results/compiler/plan/groupby4.q.xml +++ ql/src/test/results/compiler/plan/groupby4.q.xml @@ -876,7 +876,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/groupby5.q.xml ql/src/test/results/compiler/plan/groupby5.q.xml index 99219e0..7764306 100644 --- ql/src/test/results/compiler/plan/groupby5.q.xml +++ ql/src/test/results/compiler/plan/groupby5.q.xml @@ -982,7 +982,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/groupby6.q.xml ql/src/test/results/compiler/plan/groupby6.q.xml index 1422106..39679ab 100644 --- ql/src/test/results/compiler/plan/groupby6.q.xml +++ ql/src/test/results/compiler/plan/groupby6.q.xml @@ -876,7 +876,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/input1.q.xml ql/src/test/results/compiler/plan/input1.q.xml index eb158e3..4f93d5d 100755 --- ql/src/test/results/compiler/plan/input1.q.xml +++ ql/src/test/results/compiler/plan/input1.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -648,7 +650,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/input2.q.xml ql/src/test/results/compiler/plan/input2.q.xml index 2f6158c..71e32cf 100755 --- ql/src/test/results/compiler/plan/input2.q.xml +++ ql/src/test/results/compiler/plan/input2.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -561,7 +563,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -1034,7 +1038,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -1607,7 +1613,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true @@ -1872,7 +1880,9 @@ 2 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true @@ -2151,7 +2161,9 @@ 3 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/input20.q.xml ql/src/test/results/compiler/plan/input20.q.xml index bce5b9b..398c606 100644 --- ql/src/test/results/compiler/plan/input20.q.xml +++ ql/src/test/results/compiler/plan/input20.q.xml @@ -976,7 +976,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/input3.q.xml ql/src/test/results/compiler/plan/input3.q.xml index 43b57e7..2a4031e 100755 --- ql/src/test/results/compiler/plan/input3.q.xml +++ ql/src/test/results/compiler/plan/input3.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -561,7 +563,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -1034,7 +1038,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -1485,7 +1491,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -1945,7 +1953,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true @@ -2210,7 +2220,9 @@ 2 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true @@ -2489,7 +2501,9 @@ 3 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true @@ -2762,7 +2776,9 @@ 4 - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/input4.q.xml ql/src/test/results/compiler/plan/input4.q.xml index 6732b6d..b0c9441 100755 --- ql/src/test/results/compiler/plan/input4.q.xml +++ ql/src/test/results/compiler/plan/input4.q.xml @@ -1132,7 +1132,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/input5.q.xml ql/src/test/results/compiler/plan/input5.q.xml index 2452901..13fabfc 100644 --- ql/src/test/results/compiler/plan/input5.q.xml +++ ql/src/test/results/compiler/plan/input5.q.xml @@ -1202,7 +1202,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/input6.q.xml ql/src/test/results/compiler/plan/input6.q.xml index b3fda76..6d3bb23 100644 --- ql/src/test/results/compiler/plan/input6.q.xml +++ ql/src/test/results/compiler/plan/input6.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -648,7 +650,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/input7.q.xml ql/src/test/results/compiler/plan/input7.q.xml index d3998d0..dc84c87 100644 --- ql/src/test/results/compiler/plan/input7.q.xml +++ ql/src/test/results/compiler/plan/input7.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -645,7 +647,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/input8.q.xml ql/src/test/results/compiler/plan/input8.q.xml index 59b7d27..72ed1bf 100644 --- ql/src/test/results/compiler/plan/input8.q.xml +++ ql/src/test/results/compiler/plan/input8.q.xml @@ -161,7 +161,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/input9.q.xml ql/src/test/results/compiler/plan/input9.q.xml index c79ac14..deb5772 100644 --- ql/src/test/results/compiler/plan/input9.q.xml +++ ql/src/test/results/compiler/plan/input9.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -648,7 +650,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/input_part1.q.xml ql/src/test/results/compiler/plan/input_part1.q.xml index 95b45d5..a037257 100644 --- ql/src/test/results/compiler/plan/input_part1.q.xml +++ ql/src/test/results/compiler/plan/input_part1.q.xml @@ -185,7 +185,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/input_testsequencefile.q.xml ql/src/test/results/compiler/plan/input_testsequencefile.q.xml index 2447027..347e874 100644 --- ql/src/test/results/compiler/plan/input_testsequencefile.q.xml +++ ql/src/test/results/compiler/plan/input_testsequencefile.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -645,7 +647,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/input_testxpath.q.xml ql/src/test/results/compiler/plan/input_testxpath.q.xml index f97554b..d85a3be 100644 --- ql/src/test/results/compiler/plan/input_testxpath.q.xml +++ ql/src/test/results/compiler/plan/input_testxpath.q.xml @@ -169,7 +169,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/input_testxpath2.q.xml ql/src/test/results/compiler/plan/input_testxpath2.q.xml index 1173b55..7450659 100644 --- ql/src/test/results/compiler/plan/input_testxpath2.q.xml +++ ql/src/test/results/compiler/plan/input_testxpath2.q.xml @@ -172,7 +172,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/join1.q.xml ql/src/test/results/compiler/plan/join1.q.xml index 43eeb70..dbb8ca9 100644 --- ql/src/test/results/compiler/plan/join1.q.xml +++ ql/src/test/results/compiler/plan/join1.q.xml @@ -1253,7 +1253,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/join2.q.xml ql/src/test/results/compiler/plan/join2.q.xml index b269cae..d13890e 100644 --- ql/src/test/results/compiler/plan/join2.q.xml +++ ql/src/test/results/compiler/plan/join2.q.xml @@ -1160,7 +1160,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true @@ -2647,7 +2649,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/join3.q.xml ql/src/test/results/compiler/plan/join3.q.xml index 23f7b68..81ce3e2 100644 --- ql/src/test/results/compiler/plan/join3.q.xml +++ ql/src/test/results/compiler/plan/join3.q.xml @@ -1670,7 +1670,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/join4.q.xml ql/src/test/results/compiler/plan/join4.q.xml index 83d3d82..116f2ad 100644 --- ql/src/test/results/compiler/plan/join4.q.xml +++ ql/src/test/results/compiler/plan/join4.q.xml @@ -1586,7 +1586,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/join5.q.xml ql/src/test/results/compiler/plan/join5.q.xml index 0f4e58d..9dd4af5 100644 --- ql/src/test/results/compiler/plan/join5.q.xml +++ ql/src/test/results/compiler/plan/join5.q.xml @@ -1586,7 +1586,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/join6.q.xml ql/src/test/results/compiler/plan/join6.q.xml index 57f4de2..7134e08 100644 --- ql/src/test/results/compiler/plan/join6.q.xml +++ ql/src/test/results/compiler/plan/join6.q.xml @@ -1586,7 +1586,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/join7.q.xml ql/src/test/results/compiler/plan/join7.q.xml index a359c9b..9b7103e 100644 --- ql/src/test/results/compiler/plan/join7.q.xml +++ ql/src/test/results/compiler/plan/join7.q.xml @@ -2268,7 +2268,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/join8.q.xml ql/src/test/results/compiler/plan/join8.q.xml index 8afceb0..7e2834f 100644 --- ql/src/test/results/compiler/plan/join8.q.xml +++ ql/src/test/results/compiler/plan/join8.q.xml @@ -1671,7 +1671,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/sample1.q.xml ql/src/test/results/compiler/plan/sample1.q.xml index 8494065..f6e3426 100644 --- ql/src/test/results/compiler/plan/sample1.q.xml +++ ql/src/test/results/compiler/plan/sample1.q.xml @@ -185,7 +185,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/sample2.q.xml ql/src/test/results/compiler/plan/sample2.q.xml index 6ebc3e4..6bf5a0b 100644 --- ql/src/test/results/compiler/plan/sample2.q.xml +++ ql/src/test/results/compiler/plan/sample2.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -656,7 +658,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/sample3.q.xml ql/src/test/results/compiler/plan/sample3.q.xml index 09e391e..15c510a 100644 --- ql/src/test/results/compiler/plan/sample3.q.xml +++ ql/src/test/results/compiler/plan/sample3.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -656,7 +658,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/sample4.q.xml ql/src/test/results/compiler/plan/sample4.q.xml index 6ebc3e4..6bf5a0b 100644 --- ql/src/test/results/compiler/plan/sample4.q.xml +++ ql/src/test/results/compiler/plan/sample4.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -656,7 +658,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/sample5.q.xml ql/src/test/results/compiler/plan/sample5.q.xml index 7411d6d..2fee7cc 100644 --- ql/src/test/results/compiler/plan/sample5.q.xml +++ ql/src/test/results/compiler/plan/sample5.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -656,7 +658,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/sample6.q.xml ql/src/test/results/compiler/plan/sample6.q.xml index 17863a8..467b926 100644 --- ql/src/test/results/compiler/plan/sample6.q.xml +++ ql/src/test/results/compiler/plan/sample6.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -656,7 +658,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/sample7.q.xml ql/src/test/results/compiler/plan/sample7.q.xml index bed67dc..71eb63d 100644 --- ql/src/test/results/compiler/plan/sample7.q.xml +++ ql/src/test/results/compiler/plan/sample7.q.xml @@ -84,7 +84,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -656,7 +658,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + true diff --git ql/src/test/results/compiler/plan/subq.q.xml ql/src/test/results/compiler/plan/subq.q.xml index 6f367e0..5005fae 100644 --- ql/src/test/results/compiler/plan/subq.q.xml +++ ql/src/test/results/compiler/plan/subq.q.xml @@ -49,7 +49,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -535,7 +537,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/udf1.q.xml ql/src/test/results/compiler/plan/udf1.q.xml index 76e25e1..d433ccb 100644 --- ql/src/test/results/compiler/plan/udf1.q.xml +++ ql/src/test/results/compiler/plan/udf1.q.xml @@ -164,7 +164,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/udf4.q.xml ql/src/test/results/compiler/plan/udf4.q.xml index 9ae48bb..56acdd1 100644 --- ql/src/test/results/compiler/plan/udf4.q.xml +++ ql/src/test/results/compiler/plan/udf4.q.xml @@ -141,7 +141,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/udf6.q.xml ql/src/test/results/compiler/plan/udf6.q.xml index 2d45099..a15cf9b 100644 --- ql/src/test/results/compiler/plan/udf6.q.xml +++ ql/src/test/results/compiler/plan/udf6.q.xml @@ -161,7 +161,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/udf_case.q.xml ql/src/test/results/compiler/plan/udf_case.q.xml index 03c83cc..cf7f356 100644 --- ql/src/test/results/compiler/plan/udf_case.q.xml +++ ql/src/test/results/compiler/plan/udf_case.q.xml @@ -164,7 +164,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/udf_when.q.xml ql/src/test/results/compiler/plan/udf_when.q.xml index 4a995f4..039d548 100644 --- ql/src/test/results/compiler/plan/udf_when.q.xml +++ ql/src/test/results/compiler/plan/udf_when.q.xml @@ -164,7 +164,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 diff --git ql/src/test/results/compiler/plan/union.q.xml ql/src/test/results/compiler/plan/union.q.xml index f92a63d..16a0171 100644 --- ql/src/test/results/compiler/plan/union.q.xml +++ ql/src/test/results/compiler/plan/union.q.xml @@ -49,7 +49,9 @@ - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1 @@ -677,7 +679,9 @@ 1 - #### A masked pattern was here #### + + #### A masked pattern was here #### + 1